> ## Documentation Index
> Fetch the complete documentation index at: https://docs.teamfollowup.ai/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Use the public API base URL: https://api.teamfollowup.ai/api.
> Authenticate public API requests with Authorization: Bearer YOUR_API_KEY.
> Use product-owned terms: agents, campaigns, projects (GoHighLevel sub-accounts), contacts, calls, outcomes, skills, cadences, phone numbers.
> Scope requests by locationId rather than projectName.
> Read the guide linked from each API reference group before recommending an endpoint.

# Native Calendar API

> The diary of a sub-account with no CRM: its calendars, the slots they offer, the appointments on them, and the calendar systems it has connected.

Booking is the one capability that needs somewhere to put the appointment. A
sub-account without a CRM books into a Team Follow Up calendar, described in
[Calendars and booking](/calendars/overview).

Availability comes back as days of ISO start times and a booking answers with
the time it actually took, which is the same shape the GoHighLevel path uses,
so one integration reads either.

Every operation takes `locationId` as a query parameter, and access is
re-checked against it on each call.

## Calendars

| Endpoint                                                              | Use it to                                                                      |
| --------------------------------------------------------------------- | ------------------------------------------------------------------------------ |
| [List calendars](/api-reference/native-calendar/list-calendars)       | Every bookable calendar, optionally with how much of the next N days is taken. |
| [Create a calendar](/api-reference/native-calendar/create-a-calendar) | Define hours, slot length, notice and lookahead.                               |
| [Get a calendar](/api-reference/native-calendar/get-a-calendar)       | One calendar, as the engine reads it.                                          |
| [Update a calendar](/api-reference/native-calendar/update-a-calendar) | Change settings. The merged calendar is validated, not the patch.              |
| [Delete a calendar](/api-reference/native-calendar/delete-a-calendar) | Retire it. Refuses while people still have appointments, unless forced.        |

## Availability

| Endpoint                                                                                                          | Use it to                                               |
| ----------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- |
| [Get free slots](/api-reference/native-calendar/get-free-slots)                                                   | What this calendar can offer, day by day. Never cached. |
| [Preview slots for a calendar definition](/api-reference/native-calendar/preview-slots-for-a-calendar-definition) | What a definition WOULD offer, before saving it.        |

## Appointments

| Endpoint                                                                                          | Use it to                                            |
| ------------------------------------------------------------------------------------------------- | ---------------------------------------------------- |
| [List appointments for a contact](/api-reference/native-calendar/list-appointments-for-a-contact) | Everything booked for one person.                    |
| [Book an appointment](/api-reference/native-calendar/book-an-appointment)                         | Claim a seat for a contact.                          |
| [List appointments in a window](/api-reference/native-calendar/list-appointments-in-a-window)     | What is booked between two times, for a diary view.  |
| [Cancel an appointment](/api-reference/native-calendar/cancel-an-appointment)                     | Free the seat and stop its reminders.                |
| [Confirm an appointment](/api-reference/native-calendar/confirm-an-appointment)                   | Record a confirmation that did not arrive on a call. |
| [Reschedule an appointment](/api-reference/native-calendar/reschedule-an-appointment)             | Move it, re-anchoring its reminders.                 |
| [Add an event](/api-reference/native-calendar/add-an-event)                                       | Hold time that is not a lead: a meeting, a reminder. |

## Connected calendar systems

| Endpoint                                                                                    | Use it to                                                            |
| ------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- |
| [List calendar connections](/api-reference/native-calendar/list-calendar-connections)       | Which systems are offered, and which this sub-account has connected. |
| [Connect a calendar system](/api-reference/native-calendar/connect-a-calendar-system)       | Store a pasted credential, and register for cancellations.           |
| [Disconnect a calendar system](/api-reference/native-calendar/disconnect-a-calendar-system) | Forget it and unregister.                                            |
| [List linked calendars](/api-reference/native-calendar/list-linked-calendars)               | The calendars that live in that product.                             |
| [List linked bookings](/api-reference/native-calendar/list-linked-bookings)                 | What is booked there, in a window.                                   |

Scopes: `projects:read` and `projects:write`. Calendars have no scope of their
own: a calendar belongs to a sub-account, so a key that can read and write
projects can work its calendars. See [Authentication](/authentication#scopes).

## Guides

* [Calendars and booking](/calendars/overview).
* [Why the agent found no times](/calendars/availability), which is the first
  place to look when a diary reads as empty.
* [Contacts without a CRM](/contacts/native-contacts) for the people being booked.
