Create Booking
Record an externally-booked appointment so the bot stops asking the contact to book again
Documentation Index
Fetch the complete documentation index at: https://docs.trysetter.com/llms.txt
Use this file to discover all available pages before exploring further.
Overview
This endpoint records an appointment that was booked outside of Setter (e.g. directly on your Calendly, a manual phone callback, or any other calendar tool). Once a booking is stored against a contact, the bot will see it on the next inbound message and will not ask the contact to book another appointment or send a booking link.Contact Identification
You must provide eitherphone or wa_id to locate the contact. The contact must already exist in Setter — bookings cannot create new contacts. Lookup order:
- Exact
wa_idmatch (ifwa_idis supplied) wa_idderived fromphone(E.164 minus the leading+)sms_phone_numbermatch (both with and without leading+)
phone and wa_id are provided, wa_id is tried first. Pass default_country (ISO 3166-1 alpha-2) to disambiguate national-format phone numbers.
Bot Scope
A booking is only visible to thebot_id it was filed against. A bot that runs on multiple channels (e.g. WhatsApp + SMS) sees the same booking on both channels, but a separate bot owned by the same organization will not. Find the bot_id in the dashboard URL.
Idempotency
Ifexternal_id is provided, the unique key (organization_id, source, external_id) makes retries safe. A re-POST with the same triple returns the existing booking with deduplicated: true and HTTP 200 instead of creating a duplicate.
Important Notes
- Authentication: All requests require a Bearer token in the Authorization header
- Phone Format: Accepted with or without leading
+and separators (parsed via libphonenumber) - Bot Visibility: Bookings are scoped to the
bot_idthey were filed against - Soft Cancellation: Use Cancel Booking to remove a booking from the bot’s context
- Time Zone: Pass an IANA
time_zone(e.g.Europe/London) for correct rendering in the bot’s context
Getting Your API Key
API keys can be generated from your Setter AI dashboard under Settings > API Keys. Keep your API key secure and never expose it in client-side code.Example Usage
Create by phone number
Create by WhatsApp ID
Authorizations
Bearer token authentication using your API key
Body
The bot this booking is for. Find the id in the dashboard URL.
700
ISO 8601 timestamp of the appointment start.
"2026-05-25T14:00:00Z"
Contact's phone number. Accepted with or without leading + and separators (parsed via libphonenumber). Provide either phone or wa_id.
"+447813194799"
WhatsApp ID of the contact. Use this instead of phone if you have it. If both are provided, wa_id is tried first.
"447813194799"
ISO 8601 timestamp of the appointment end. Must be after start_time.
"2026-05-25T15:00:00Z"
IANA time zone (e.g. Europe/London).
"Europe/London"
Free-form provenance tag. Defaults to manual.
"calendly"
Stable id from your system used to deduplicate retries. Unique key is (organization_id, source, external_id).
"calendly-invitee-abc"
ISO 3166-1 alpha-2 country code (e.g. GB). Used to disambiguate national-format phone numbers.
"GB"
Arbitrary JSON stored alongside the booking.
{
"invitee_email": "lead@example.com",
"calendly_event_uri": "https://api.calendly.com/scheduled_events/abc"
}Response
Idempotent replay — a booking with the same (organization_id, source, external_id) already existed and is returned with deduplicated: true.
555
999
700
42
"calendly"
"calendly-invitee-abc"
"2026-05-25T14:00:00.000Z"
"2026-05-25T15:00:00.000Z"
"Europe/London"
true when an external_id collision returned the existing record instead of creating a new one.
false

