Create booking intent
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.
Authorization
authorization In: header
Request Body
application/json
Create public booking intent params
TypeScript Definitions
Use the request body type in TypeScript.
Request schema for creating a booking intent via a public interface.
Response Body
application/json
application/json
application/json
curl -X POST "https://example.com/v1/public/booking_intents" \ -H "Content-Type: application/json" \ -d '{ "account_id": "acct_1234567890", "end_at": "2026-02-23T10:30:00-05:00", "service_id": "srv_1234567890", "start_at": "2026-02-23T10:00:00-05:00", "time_zone": "America/New_York" }'{ "data": { "appointment": null, "end_at": { "local": "2026-02-23T10:30:00-05:00", "object": "zoned_date_time", "time_zone": "America/New_York", "unix_ts": 1771947000, "utc": "2026-02-23T15:30:00Z" }, "errors": null, "hold_until": "2026-02-22T10:10:00Z", "id": "bi_abc123def456abc123def456", "locked_fields": [], "object": "public_booking_intent", "requirements": { "booking": { "complete": true }, "info": { "complete": false }, "submissions": [ { "complete": false, "form_id": "frm_abc123def456" } ] }, "start_at": { "local": "2026-02-23T10:00:00-05:00", "object": "zoned_date_time", "time_zone": "America/New_York", "unix_ts": 1771945200, "utc": "2026-02-23T15:00:00Z" }, "status": "slot_selected", "workflow": { "available_steps": [ "booking", "info", "form:frm_abc123def456" ], "can_change_slot": true, "can_complete": false, "defunct_reason": null, "is_defunct": false, "resume_step": "info" } }}Create appointment POST
Create a new appointment via a public interface (no authentication required). You can find available time slots using the [List available time slots](/api/list-public-service-slots) endpoint.
Get earliest available slot GET
Get the earliest available time slot for a service, useful for displaying next available appointment.