Complete booking intent
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.
Authorization
authorization In: header
Path Parameters
Booking Intent ID
Request Body
application/json
Complete public booking intent params
TypeScript Definitions
Use the request body type in TypeScript.
Request schema for completing a booking intent via a public interface. Update fields may be provided inline and are applied atomically before completion.
Response Body
application/json
application/json
application/json
curl -X POST "https://example.com/v1/public/booking_intents/string/complete" \ -H "Content-Type: application/json" \ -d '{ "client_data": { "email": "jane@example.com", "first_name": "Jane" }, "service_id": "srv_1234567890" }'{ "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" } }}Cancel appointment POST
Cancel an existing appointment via a public interface (no authentication required). This action will fail with a 403 Forbidden response if cancellation is not allowed for the appointment based on the service's cancellation policy.
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.