List bookings
const url = 'https://app.whatsetter.com/api/v1/bookings?status=booked&limit=25';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://app.whatsetter.com/api/v1/bookings?status=booked&limit=25' \ --header 'Authorization: Bearer <token>'Calls booked by the AI in chat, most recent slot first. Requires scope
bookings:read.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Exact match on the booking status.
Filter by campaign. Accepts the campaign’s campaign_id slug or its document id (both returned by GET /campaigns).
Only bookings starting after this ISO-8601 date.
Opaque cursor from the previous page’s pagination.next_cursor.
Responses
Section titled “Responses”Page of bookings
object
object
The lead’s WhatsApp id (33612345678@c.us), i.e. the whatsapp_id of the lead object — not the lead document id. Resolve it with GET /leads?phone= when you need the document.
The campaign slug.
Calendar provider (cal.com, calendly, ghl…).
chat = booked by the AI in the conversation; static_link / webhook = reconciled from the calendar provider; manual = entered by a person.
object
⚠️ Capability link: anyone with it can cancel the call. Treat as sensitive.
⚠️ Capability link: anyone with it can reschedule the call. Treat as sensitive.
object
Example
{ "data": [ { "status": "booked", "source": "chat" } ]}Missing, unknown or revoked API key
object
object
Examplegenerated
{ "error": { "code": "example", "message": "example" }}Invalid parameter or body (also an invalid or expired cursor)
object
object
Examplegenerated
{ "error": { "code": "example", "message": "example" }}
