POST /v1/bookings
requires akidempotentP99 ~184 ms
Create a booking directly, without a prior hold.
Request
POST /v1/bookings HTTP/1.1
Authorization: Bearer ak_01HX7QQM…
Content-Type: application/json
{
"calendar_owner_id": "…uuid…",
"start": "2026-06-01T14:00:00Z",
"end": "2026-06-01T14:00:00Z",
"meeting_class": "recruiting_interview"
}calendar_owner_idreqstartreqendreqmeeting_classreqtitleattendeesResponse
Returns 200 OK with the response body below. Every successful arbitration also stamps an audit_row_id you can query against audit log.
200 OK · example
HTTP/1.1 200 OK
Content-Type: application/json
{
"decision": "Accept",
"booking_id": "bk_9f2a1c…",
"audit_row_id": "ar_7e4b3d…",
"correlation_id": "9178dde3-…",
"preemption_ids": [],
"arbiter_p99_ms": 188,
"pending_notifications": []
}Errors
| Code | Description |
|---|---|
400 | Validation failed — body is malformed or missing required fields. |
401 | Missing or invalid API key. Send the raw key as a Bearer token in the Authorization header. |
403 | Agent does not hold the permission scope required for this call (e.g. preempt on a higher-priority class). |
404 | Calendar owner or booking id not found. |
409 | Conflict — the requested slot was already committed at higher priority. Inspect alternatives[] in the response body. |
422 | Engine refused the request — a hard rule (working hours, daily limit, sacred meeting) fired. reason_code names the rule. |