API Reference
The reference below covers every endpoint in the Bookings API. Code examples are generated automatically; the live playground is disabled to prevent accidental writes to production from the docs site.
/api/v1/bookingsAuthorization
BearerAuth Pass an API key issued from the agentlyleads workspace settings.
Example: Authorization: Bearer alk_live_xxxxxxxxxxxx
In: header
Query Parameters
Which bookings. upcoming = confirmed and not yet ended.
"upcoming"Value in
- "upcoming"
- "past"
- "cancelled"
- "all"
Only this host's bookings.
Only bookings starting at or after this ISO 8601 date or datetime.
Only bookings starting before this ISO 8601 date or datetime.
Page size.
1 <= value <= 20050nextCursor from the previous page.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/v1/bookings"{ "bookings": [ { "id": "cmq9book0alk34567890", "status": "CONFIRMED", "startAt": "2026-10-05T13:00:00.000Z", "endAt": "2026-10-05T13:30:00.000Z", "hostTimezone": "America/New_York", "inviteeTimezone": "Europe/London", "host": { "id": "cmq1user0alk34567890", "name": "Kevin Shah", "email": "kevin@example.com" }, "bookingType": { "id": "cmq8type0alk34567890", "title": "Intro call", "slug": "intro-call", "durationMin": 30, "locationKind": "GOOGLE_MEET", "locationValue": null }, "inviteeName": "Dana Reed", "inviteeEmail": "dana@example.com", "inviteePhone": null, "inviteeNotes": "Pricing for 40 seats.", "guests": [], "answers": [ { "label": "Company size", "value": "40" } ], "contactId": "cmq2cont0alk34567891", "leadId": null, "taskId": "cmq7task0alk34567890", "joinUrl": "https://meet.google.com/abc-defg-hij", "onHostCalendar": true, "sequence": 0, "cancelReason": null, "cancelledBy": null, "cancelledAt": null, "createdAt": "2026-09-27T14:02:00.000Z" } ], "nextCursor": null}{ "error": "scope must be one of: upcoming, past, cancelled, all."}{ "error": "Invalid or missing API key."}{ "error": "API key missing required scope: read:bookings."}{ "error": "No active user with that hostUserId in this workspace."}{ "error": "Rate limit exceeded."}/api/v1/bookingsAuthorization
BearerAuth Pass an API key issued from the agentlyleads workspace settings.
Example: Authorization: Bearer alk_live_xxxxxxxxxxxx
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/bookings" \ -H "Content-Type: application/json" \ -d '{ "bookingTypeId": "cmq8type0alk34567890", "startAt": "2026-10-05T13:00:00.000Z", "inviteeName": "Dana Reed", "inviteeEmail": "dana@example.com", "inviteeTimezone": "Europe/London", "answers": { "size": "40" } }'{ "booking": { "id": "cmq9book0alk34567890", "status": "CONFIRMED", "startAt": "2026-10-05T13:00:00.000Z", "endAt": "2026-10-05T13:30:00.000Z", "hostTimezone": "America/New_York", "inviteeTimezone": "Europe/London", "host": { "id": "cmq1user0alk34567890", "name": "Kevin Shah", "email": "kevin@example.com" }, "bookingType": { "id": "cmq8type0alk34567890", "title": "Intro call", "slug": "intro-call", "durationMin": 30, "locationKind": "GOOGLE_MEET", "locationValue": null }, "inviteeName": "Dana Reed", "inviteeEmail": "dana@example.com", "inviteePhone": null, "inviteeNotes": "Pricing for 40 seats.", "guests": [], "answers": [ { "label": "Company size", "value": "40" } ], "contactId": "cmq2cont0alk34567891", "leadId": null, "taskId": "cmq7task0alk34567890", "joinUrl": "https://meet.google.com/abc-defg-hij", "onHostCalendar": true, "sequence": 0, "cancelReason": null, "cancelledBy": null, "cancelledAt": null, "createdAt": "2026-09-27T14:02:00.000Z" }, "taskId": "cmq7task0alk34567890"}{ "error": "Please add a phone number so we can call you."}{ "error": "Invalid or missing API key."}{ "error": "API key missing required scope: write:bookings."}{ "error": "Meeting type not found."}{ "error": "That time has just been booked. Please pick another one."}{ "error": "Rate limit exceeded."}/api/v1/bookings/{id}Authorization
BearerAuth Pass an API key issued from the agentlyleads workspace settings.
Example: Authorization: Bearer alk_live_xxxxxxxxxxxx
In: header
Path Parameters
The booking ID.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/v1/bookings/string"{ "booking": { "id": "cmq9book0alk34567890", "status": "CONFIRMED", "startAt": "2026-10-05T13:00:00.000Z", "endAt": "2026-10-05T13:30:00.000Z", "hostTimezone": "America/New_York", "inviteeTimezone": "Europe/London", "host": { "id": "cmq1user0alk34567890", "name": "Kevin Shah", "email": "kevin@example.com" }, "bookingType": { "id": "cmq8type0alk34567890", "title": "Intro call", "slug": "intro-call", "durationMin": 30, "locationKind": "GOOGLE_MEET", "locationValue": null }, "inviteeName": "Dana Reed", "inviteeEmail": "dana@example.com", "inviteePhone": null, "inviteeNotes": "Pricing for 40 seats.", "guests": [], "answers": [ { "label": "Company size", "value": "40" } ], "contactId": "cmq2cont0alk34567891", "leadId": null, "taskId": "cmq7task0alk34567890", "joinUrl": "https://meet.google.com/abc-defg-hij", "onHostCalendar": true, "sequence": 0, "cancelReason": null, "cancelledBy": null, "cancelledAt": null, "createdAt": "2026-09-27T14:02:00.000Z" }}{ "error": "Invalid or missing API key."}{ "error": "API key missing required scope: read:bookings."}{ "error": "Booking not found."}{ "error": "Rate limit exceeded."}/api/v1/bookings/{id}/cancelAuthorization
BearerAuth Pass an API key issued from the agentlyleads workspace settings.
Example: Authorization: Bearer alk_live_xxxxxxxxxxxx
In: header
Path Parameters
The booking ID.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/bookings/string/cancel" \ -H "Content-Type: application/json" \ -d '{ "reason": "I\'m travelling that week. Please pick another time." }'{ "booking": { "id": "cmq9book0alk34567890", "status": "CONFIRMED", "startAt": "2026-10-05T13:00:00.000Z", "endAt": "2026-10-05T13:30:00.000Z", "hostTimezone": "America/New_York", "inviteeTimezone": "Europe/London", "host": { "id": "cmq1user0alk34567890", "name": "Kevin Shah", "email": "kevin@example.com" }, "bookingType": { "id": "cmq8type0alk34567890", "title": "Intro call", "slug": "intro-call", "durationMin": 30, "locationKind": "GOOGLE_MEET", "locationValue": null }, "inviteeName": "Dana Reed", "inviteeEmail": "dana@example.com", "inviteePhone": null, "inviteeNotes": "Pricing for 40 seats.", "guests": [], "answers": [ { "label": "Company size", "value": "40" } ], "contactId": "cmq2cont0alk34567891", "leadId": null, "taskId": "cmq7task0alk34567890", "joinUrl": "https://meet.google.com/abc-defg-hij", "onHostCalendar": true, "sequence": 0, "cancelReason": null, "cancelledBy": null, "cancelledAt": null, "createdAt": "2026-09-27T14:02:00.000Z" }}{ "error": "Keep the reason under 500 characters."}{ "error": "Invalid or missing API key."}{ "error": "API key missing required scope: write:bookings."}{ "error": "Booking not found."}{ "error": "This meeting has already been cancelled."}{ "error": "Rate limit exceeded."}/api/v1/bookings/{id}/rescheduleAuthorization
BearerAuth Pass an API key issued from the agentlyleads workspace settings.
Example: Authorization: Bearer alk_live_xxxxxxxxxxxx
In: header
Path Parameters
The booking ID.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/bookings/string/reschedule" \ -H "Content-Type: application/json" \ -d '{ "startAt": "2026-10-06T14:00:00.000Z" }'{ "booking": { "id": "cmq9book0alk34567890", "status": "CONFIRMED", "startAt": "2026-10-05T13:00:00.000Z", "endAt": "2026-10-05T13:30:00.000Z", "hostTimezone": "America/New_York", "inviteeTimezone": "Europe/London", "host": { "id": "cmq1user0alk34567890", "name": "Kevin Shah", "email": "kevin@example.com" }, "bookingType": { "id": "cmq8type0alk34567890", "title": "Intro call", "slug": "intro-call", "durationMin": 30, "locationKind": "GOOGLE_MEET", "locationValue": null }, "inviteeName": "Dana Reed", "inviteeEmail": "dana@example.com", "inviteePhone": null, "inviteeNotes": "Pricing for 40 seats.", "guests": [], "answers": [ { "label": "Company size", "value": "40" } ], "contactId": "cmq2cont0alk34567891", "leadId": null, "taskId": "cmq7task0alk34567890", "joinUrl": "https://meet.google.com/abc-defg-hij", "onHostCalendar": true, "sequence": 0, "cancelReason": null, "cancelledBy": null, "cancelledAt": null, "createdAt": "2026-09-27T14:02:00.000Z" }}{ "error": "startAt must be an ISO 8601 datetime. Use a startAt from GET /api/v1/bookings/{id}/slots."}{ "error": "Invalid or missing API key."}{ "error": "API key missing required scope: write:bookings."}{ "error": "Booking not found."}{ "error": "That time has just been booked. Please pick another one."}{ "error": "Rate limit exceeded."}/api/v1/bookings/{id}/slotsAuthorization
BearerAuth Pass an API key issued from the agentlyleads workspace settings.
Example: Authorization: Bearer alk_live_xxxxxxxxxxxx
In: header
Path Parameters
The booking ID.
Query Parameters
Start of the search window, ISO 8601 date or datetime. A bare date is midnight UTC. Defaults to now.
End of the search window (exclusive). Defaults to 7 days after from. At most 62 days after from.
IANA time zone for inviteeLocal, e.g. America/New_York. Defaults to UTC.
"UTC"Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/v1/bookings/string/slots"{ "timezone": "America/New_York", "slots": [ { "startAt": "2026-10-05T13:00:00.000Z", "endAt": "2026-10-05T13:30:00.000Z", "hostLocal": "2026-10-05T09:00:00", "inviteeLocal": "2026-10-05T09:00:00" } ]}{ "error": "The date range cannot exceed 62 days."}{ "error": "Invalid or missing API key."}{ "error": "API key missing required scope: read:bookings."}{ "error": "Booking not found."}{ "error": "This meeting has already been cancelled."}{ "error": "Rate limit exceeded."}/api/v1/booking-typesAuthorization
BearerAuth Pass an API key issued from the agentlyleads workspace settings.
Example: Authorization: Bearer alk_live_xxxxxxxxxxxx
In: header
Query Parameters
Only this host's types.
Include paused types.
falseResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/v1/booking-types"{ "bookingTypes": [ { "id": "cmq8type0alk34567890", "slug": "intro-call", "title": "Intro call", "description": null, "host": { "id": "cmq1user0alk34567890", "name": "Kevin Shah", "email": "kevin@example.com" }, "publicUrl": "https://agentlyleads.com/book/acme/kevin/intro-call", "active": true, "hidden": false, "durationMin": 30, "slotIntervalMin": null, "bufferBeforeMin": 0, "bufferAfterMin": 10, "minNoticeMin": 120, "horizonDays": 30, "maxPerDay": null, "hours": [ { "weekday": 1, "start": "09:00", "end": "12:00" }, { "weekday": 1, "start": "13:00", "end": "17:00" } ], "dateOverrides": [], "locationKind": "GOOGLE_MEET", "locationValue": null, "color": null, "questions": [], "allowGuests": true, "confirmationMessage": null, "redirectUrl": null, "reminderMinutes": 60, "createdAt": "2026-09-27T14:02:00.000Z", "updatedAt": "2026-09-27T14:02:00.000Z" } ]}{ "error": "includeInactive must be true or false."}{ "error": "Invalid or missing API key."}{ "error": "API key missing required scope: read:bookings."}{ "error": "No active user with that hostUserId in this workspace."}{ "error": "Rate limit exceeded."}/api/v1/booking-typesAuthorization
BearerAuth Pass an API key issued from the agentlyleads workspace settings.
Example: Authorization: Bearer alk_live_xxxxxxxxxxxx
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/booking-types" \ -H "Content-Type: application/json" \ -d '{ "hostUserId": "cmq1user0alk34567890", "title": "Intro call", "durationMin": 30, "hours": [ { "weekday": 1, "start": "09:00", "end": "12:00" }, { "weekday": 1, "start": "13:00", "end": "17:00" } ], "locationKind": "GOOGLE_MEET", "reminderMinutes": 60 }'{ "bookingType": { "id": "cmq8type0alk34567890", "slug": "intro-call", "title": "Intro call", "description": null, "host": { "id": "cmq1user0alk34567890", "name": "Kevin Shah", "email": "kevin@example.com" }, "publicUrl": "https://agentlyleads.com/book/acme/kevin/intro-call", "active": true, "hidden": false, "durationMin": 30, "slotIntervalMin": null, "bufferBeforeMin": 0, "bufferAfterMin": 10, "minNoticeMin": 120, "horizonDays": 30, "maxPerDay": null, "hours": [ { "weekday": 1, "start": "09:00", "end": "12:00" }, { "weekday": 1, "start": "13:00", "end": "17:00" } ], "dateOverrides": [], "locationKind": "GOOGLE_MEET", "locationValue": null, "color": null, "questions": [], "allowGuests": true, "confirmationMessage": null, "redirectUrl": null, "reminderMinutes": 60, "createdAt": "2026-09-27T14:02:00.000Z", "updatedAt": "2026-09-27T14:02:00.000Z" }}{ "error": "Connect your Google calendar in Scheduling → Availability to use Google Meet."}{ "error": "Invalid or missing API key."}{ "error": "API key missing required scope: write:bookings."}{ "error": "No active user with that hostUserId in this workspace."}{ "error": "Rate limit exceeded."}/api/v1/booking-types/{id}Authorization
BearerAuth Pass an API key issued from the agentlyleads workspace settings.
Example: Authorization: Bearer alk_live_xxxxxxxxxxxx
In: header
Path Parameters
The meeting type ID.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/v1/booking-types/string"{ "bookingType": { "id": "cmq8type0alk34567890", "slug": "intro-call", "title": "Intro call", "description": null, "host": { "id": "cmq1user0alk34567890", "name": "Kevin Shah", "email": "kevin@example.com" }, "publicUrl": "https://agentlyleads.com/book/acme/kevin/intro-call", "active": true, "hidden": false, "durationMin": 30, "slotIntervalMin": null, "bufferBeforeMin": 0, "bufferAfterMin": 10, "minNoticeMin": 120, "horizonDays": 30, "maxPerDay": null, "hours": [ { "weekday": 1, "start": "09:00", "end": "12:00" }, { "weekday": 1, "start": "13:00", "end": "17:00" } ], "dateOverrides": [], "locationKind": "GOOGLE_MEET", "locationValue": null, "color": null, "questions": [], "allowGuests": true, "confirmationMessage": null, "redirectUrl": null, "reminderMinutes": 60, "createdAt": "2026-09-27T14:02:00.000Z", "updatedAt": "2026-09-27T14:02:00.000Z" }}{ "error": "Invalid or missing API key."}{ "error": "API key missing required scope: read:bookings."}{ "error": "Meeting type not found."}{ "error": "Rate limit exceeded."}/api/v1/booking-types/{id}Authorization
BearerAuth Pass an API key issued from the agentlyleads workspace settings.
Example: Authorization: Bearer alk_live_xxxxxxxxxxxx
In: header
Path Parameters
The meeting type ID.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Any subset of the editable fields. Unknown fields are rejected.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X PATCH "https://example.com/api/v1/booking-types/string" \ -H "Content-Type: application/json" \ -d '{ "active": false }'{ "bookingType": { "id": "cmq8type0alk34567890", "slug": "intro-call", "title": "Intro call", "description": null, "host": { "id": "cmq1user0alk34567890", "name": "Kevin Shah", "email": "kevin@example.com" }, "publicUrl": "https://agentlyleads.com/book/acme/kevin/intro-call", "active": true, "hidden": false, "durationMin": 30, "slotIntervalMin": null, "bufferBeforeMin": 0, "bufferAfterMin": 10, "minNoticeMin": 120, "horizonDays": 30, "maxPerDay": null, "hours": [ { "weekday": 1, "start": "09:00", "end": "12:00" }, { "weekday": 1, "start": "13:00", "end": "17:00" } ], "dateOverrides": [], "locationKind": "GOOGLE_MEET", "locationValue": null, "color": null, "questions": [], "allowGuests": true, "confirmationMessage": null, "redirectUrl": null, "reminderMinutes": 60, "createdAt": "2026-09-27T14:02:00.000Z", "updatedAt": "2026-09-27T14:02:00.000Z" }}{ "error": "The redirect address has to start with https://."}{ "error": "Invalid or missing API key."}{ "error": "API key missing required scope: write:bookings."}{ "error": "Meeting type not found."}{ "error": "Rate limit exceeded."}/api/v1/booking-types/{id}Authorization
BearerAuth Pass an API key issued from the agentlyleads workspace settings.
Example: Authorization: Bearer alk_live_xxxxxxxxxxxx
In: header
Path Parameters
The meeting type ID.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X DELETE "https://example.com/api/v1/booking-types/string"{ "archived": true, "id": "cmq8type0alk34567890"}{ "error": "Invalid or missing API key."}{ "error": "API key missing required scope: write:bookings."}{ "error": "Meeting type not found."}{ "error": "Rate limit exceeded."}/api/v1/booking-types/{id}/slotsAuthorization
BearerAuth Pass an API key issued from the agentlyleads workspace settings.
Example: Authorization: Bearer alk_live_xxxxxxxxxxxx
In: header
Path Parameters
The meeting type ID.
Query Parameters
Start of the search window, ISO 8601 date or datetime. A bare date is midnight UTC. Defaults to now.
End of the search window (exclusive). Defaults to 7 days after from. At most 62 days after from.
IANA time zone for inviteeLocal, e.g. America/New_York. Defaults to UTC.
"UTC"Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/v1/booking-types/string/slots"{ "timezone": "America/New_York", "slots": [ { "startAt": "2026-10-05T13:00:00.000Z", "endAt": "2026-10-05T13:30:00.000Z", "hostLocal": "2026-10-05T09:00:00", "inviteeLocal": "2026-10-05T09:00:00" } ]}{ "error": "timezone must be an IANA time zone name, like America/New_York."}{ "error": "Invalid or missing API key."}{ "error": "API key missing required scope: read:bookings."}{ "error": "Meeting type not found."}{ "error": "This meeting type is paused and isn't taking bookings."}{ "error": "Rate limit exceeded."}/api/v1/booking-types/{id}/hoursAuthorization
BearerAuth Pass an API key issued from the agentlyleads workspace settings.
Example: Authorization: Bearer alk_live_xxxxxxxxxxxx
In: header
Path Parameters
The meeting type ID.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/v1/booking-types/string/hours"{ "availability": { "bookingTypeId": "cmq8type0alk34567890", "hostUserId": "cmq1user0alk34567890", "timezone": "America/New_York", "hours": [ { "weekday": 1, "start": "09:00", "end": "12:00" }, { "weekday": 1, "start": "13:00", "end": "17:00" } ], "dateOverrides": [ { "date": "2026-12-24", "windows": [ { "start": "09:00", "end": "12:00" } ] }, { "date": "2026-12-25", "windows": [] } ] }}{ "error": "Invalid or missing API key."}{ "error": "API key missing required scope: read:bookings."}{ "error": "Meeting type not found."}{ "error": "Rate limit exceeded."}/api/v1/booking-types/{id}/hoursAuthorization
BearerAuth Pass an API key issued from the agentlyleads workspace settings.
Example: Authorization: Bearer alk_live_xxxxxxxxxxxx
In: header
Path Parameters
The meeting type ID.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X PUT "https://example.com/api/v1/booking-types/string/hours" \ -H "Content-Type: application/json" \ -d '{ "hours": [ { "weekday": 1, "start": "09:00", "end": "12:00" }, { "weekday": 1, "start": "13:00", "end": "17:00" } ] }'{ "availability": { "bookingTypeId": "cmq8type0alk34567890", "hostUserId": "cmq1user0alk34567890", "timezone": "America/New_York", "hours": [ { "weekday": 1, "start": "09:00", "end": "12:00" }, { "weekday": 1, "start": "13:00", "end": "17:00" } ], "dateOverrides": [ { "date": "2026-12-24", "windows": [ { "start": "09:00", "end": "12:00" } ] }, { "date": "2026-12-25", "windows": [] } ] }}{ "error": "Two availability windows on the same day overlap."}{ "error": "Invalid or missing API key."}{ "error": "API key missing required scope: write:bookings."}{ "error": "Meeting type not found."}{ "error": "Rate limit exceeded."}/api/v1/booking-types/{id}/date-overrides/{date}Authorization
BearerAuth Pass an API key issued from the agentlyleads workspace settings.
Example: Authorization: Bearer alk_live_xxxxxxxxxxxx
In: header
Path Parameters
The meeting type ID.
The date, YYYY-MM-DD, in the host's timezone.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X PUT "https://example.com/api/v1/booking-types/string/date-overrides/string" \ -H "Content-Type: application/json" \ -d '{ "windows": [ { "start": "09:00", "end": "12:00" } ] }'{ "availability": { "bookingTypeId": "cmq8type0alk34567890", "hostUserId": "cmq1user0alk34567890", "timezone": "America/New_York", "hours": [ { "weekday": 1, "start": "09:00", "end": "12:00" }, { "weekday": 1, "start": "13:00", "end": "17:00" } ], "dateOverrides": [ { "date": "2026-12-24", "windows": [ { "start": "09:00", "end": "12:00" } ] }, { "date": "2026-12-25", "windows": [] } ] }}{ "error": "The date has to look like 2026-12-25."}{ "error": "Invalid or missing API key."}{ "error": "API key missing required scope: write:bookings."}{ "error": "Meeting type not found."}{ "error": "Rate limit exceeded."}/api/v1/booking-types/{id}/date-overrides/{date}Authorization
BearerAuth Pass an API key issued from the agentlyleads workspace settings.
Example: Authorization: Bearer alk_live_xxxxxxxxxxxx
In: header
Path Parameters
The meeting type ID.
The date, YYYY-MM-DD, in the host's timezone.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X DELETE "https://example.com/api/v1/booking-types/string/date-overrides/string"{ "availability": { "bookingTypeId": "string", "hostUserId": "string", "timezone": "string", "hours": [ { "weekday": 0, "start": "09:00", "end": "17:00" } ], "dateOverrides": [ { "date": "2026-12-24", "windows": [ { "start": "09:00", "end": "12:00" } ] } ] }}{ "error": "The date has to look like 2026-12-25."}{ "error": "Invalid or missing API key."}{ "error": "API key missing required scope: write:bookings."}{ "error": "Meeting type not found."}{ "error": "Rate limit exceeded."}/api/v1/booking-hostsAuthorization
BearerAuth Pass an API key issued from the agentlyleads workspace settings.
Example: Authorization: Bearer alk_live_xxxxxxxxxxxx
In: header
Response Body
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/v1/booking-hosts"{ "hosts": [ { "id": "cmq1user0alk34567890", "name": "Kevin Shah", "email": "kevin@example.com", "timezone": "America/New_York", "timezoneInherited": false, "bookingSlug": "kevin", "defaultHours": [ { "weekday": 1, "start": "09:00", "end": "12:00" }, { "weekday": 1, "start": "13:00", "end": "17:00" } ] } ]}{ "error": "Invalid or missing API key."}{ "error": "API key missing required scope: read:bookings."}{ "error": "Rate limit exceeded."}/api/v1/booking-hosts/{id}Authorization
BearerAuth Pass an API key issued from the agentlyleads workspace settings.
Example: Authorization: Bearer alk_live_xxxxxxxxxxxx
In: header
Path Parameters
The host's user ID (from GET /api/v1/booking-hosts).
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/v1/booking-hosts/string"{ "host": { "id": "cmq1user0alk34567890", "name": "Kevin Shah", "email": "kevin@example.com", "timezone": "America/New_York", "timezoneInherited": false, "bookingSlug": "kevin", "defaultHours": [ { "weekday": 1, "start": "09:00", "end": "12:00" }, { "weekday": 1, "start": "13:00", "end": "17:00" } ] }}{ "error": "Invalid or missing API key."}{ "error": "API key missing required scope: read:bookings."}{ "error": "No active user with that hostUserId in this workspace."}{ "error": "Rate limit exceeded."}/api/v1/booking-hosts/{id}Authorization
BearerAuth Pass an API key issued from the agentlyleads workspace settings.
Example: Authorization: Bearer alk_live_xxxxxxxxxxxx
In: header
Path Parameters
The host's user ID (from GET /api/v1/booking-hosts).
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X PATCH "https://example.com/api/v1/booking-hosts/string" \ -H "Content-Type: application/json" \ -d '{ "timezone": "America/Chicago" }'{ "host": { "id": "cmq1user0alk34567890", "name": "Kevin Shah", "email": "kevin@example.com", "timezone": "America/New_York", "timezoneInherited": false, "bookingSlug": "kevin", "defaultHours": [ { "weekday": 1, "start": "09:00", "end": "12:00" }, { "weekday": 1, "start": "13:00", "end": "17:00" } ] }}{ "error": "That time zone isn't one we recognise. Use an IANA name like America/New_York."}{ "error": "Invalid or missing API key."}{ "error": "API key missing required scope: write:bookings."}{ "error": "No active user with that hostUserId in this workspace."}{ "error": "Rate limit exceeded."}/api/v1/calendar/meetingsAuthorization
BearerAuth Pass an API key issued from the agentlyleads workspace settings.
Example: Authorization: Bearer alk_live_xxxxxxxxxxxx
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/calendar/meetings" \ -H "Content-Type: application/json" \ -d '{ "title": "Quarterly review", "date": "2026-10-05", "startTime": "14:00", "durationMinutes": 45, "contactId": "cmq2cont0alk34567891" }'{ "timeZone": "America/New_York", "seriesId": null, "tasks": [ { "id": "cmq7task0alk34567890", "title": "Quarterly review", "type": "MEETING", "dueDate": "2026-10-05T18:00:00.000Z", "endAt": "2026-10-05T18:45:00.000Z", "allDay": false } ]}{ "error": "Give the meeting a startTime before setting durationMinutes."}{ "error": "Invalid or missing API key."}{ "error": "API key missing required scope: write:calendar."}{ "error": "Contact not found."}{ "error": "Rate limit exceeded."}/api/v1/calendar/refreshAuthorization
BearerAuth Pass an API key issued from the agentlyleads workspace settings.
Example: Authorization: Bearer alk_live_xxxxxxxxxxxx
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/calendar/refresh" \ -H "Content-Type: application/json" \ -d '{ "hostUserId": "cmq1user0alk34567890" }'{ "hostUserId": "cmq1user0alk34567890", "from": "2026-09-27T14:00:00.000Z", "to": "2026-10-27T14:00:00.000Z", "refreshed": 1, "failed": []}{ "error": "The date range cannot exceed 90 days."}{ "error": "Invalid or missing API key."}{ "error": "API key missing required scope: write:calendar."}{ "error": "No active user with that hostUserId in this workspace."}{ "error": "Rate limit exceeded."}