Create appointment
Create a new appointment via a public interface (no authentication required).
You can find available time slots using the List available time slots endpoint.
Authorization
authorization In: header
Request Body
application/json
Create public appointment params
TypeScript Definitions
Use the request body type in TypeScript.
Request schema for creating an appointment via a public interface.
Response Body
application/json
application/json
curl -X POST "https://example.com/v1/public/appointments" \ -H "Content-Type: application/json" \ -d '{ "client_data": { "email": "john.doe@example.com", "fields": { "age": 30 }, "first_name": "John", "last_name": "Doe", "locale": "en-US", "phone": "+15551234567", "reference_id": "1234567890", "time_zone": "America/New_York" }, "end_at": "2025-03-01T11:00:00-05:00", "service_id": "srv_1234567890", "start_at": "2025-03-01T10:00:00-05:00", "time_zone": "America/New_York" }'{ "data": { "add_to_calendar_url": "https://book.acme.com/c/appointments/appt_a1b2c3d4e5f6/add_to_calendar", "cancel_url": "https://book.acme.com/c/appointments/appt_a1b2c3d4e5f6/cancel", "cancellation": { "allowed": true, "disabled_message": null }, "confirmed_at": "2025-03-10T15:30:00Z", "end_at": { "local": "2025-03-01T11:00:00-05:00", "object": "zoned_date_time", "time_zone": "America/New_York", "unix_ts": 1736464800, "utc": "2025-03-01T04:00:00Z" }, "ics_url": "https://book.acme.com/c/appointments/appt_a1b2c3d4e5f6/ics", "id": "appt_a1b2c3d4e5f6", "object": "public_appointment", "reschedule_url": "https://book.acme.com/c/appointments/appt_a1b2c3d4e5f6/reschedule", "rescheduling": { "allowed": false, "disabled_message": "Rescheduling is not available within 24 hours of your appointment" }, "start_at": { "local": "2025-03-01T10:00:00-05:00", "object": "zoned_date_time", "time_zone": "America/New_York", "unix_ts": 1736461200, "utc": "2025-03-01T03:00:00Z" }, "status": "scheduled", "urls": { "add_to_calendar": [ "https://book.acme.com/c/appointments/appt_a1b2c3d4e5f6/add_to_calendar" ], "add_to_google_calendar": [ "https://book.acme.com/c/appointments/appt_a1b2c3d4e5f6/add_to_google_calendar" ], "cancel": [ "https://book.acme.com/c/appointments/appt_a1b2c3d4e5f6/cancel" ], "ics": [ "https://book.acme.com/c/appointments/appt_a1b2c3d4e5f6/ics" ], "reschedule": [ "https://book.acme.com/c/appointments/appt_a1b2c3d4e5f6/reschedule" ] } }}Complete booking intent POST
Complete a booking intent by creating an appointment from the accumulated intent data via a public interface (no authentication required). Update fields (service_id, provider_id, slot fields, client_data) may be provided inline. These updates are applied atomically before completion — if the update or completion fails, the entire operation is rolled back.
Create booking intent POST
Create a new booking intent via a public interface (no authentication required). The `account_id` field is required to identify which account the intent belongs to.