POST /v1/availability/search
requires akidempotentaudited decision
Search available candidate slots without creating a hold.
Request
POST /v1/availability/search HTTP/1.1
Authorization: Bearer ak_01HX7QQM…
Content-Type: application/json
{
"duration_minutes": 45,
"earliest_start": "2026-06-01T09:00:00Z",
"latest_end": "2026-06-01T18:00:00Z",
"meeting_class": "recruiting_interview",
"owner_email": "alex@acme.com",
"calendar_type": "work",
"next_available_lookahead_hours": 0
}owner_emailcalendar_typeduration_minutesreqearliest_startreqlatest_endreqmeeting_classreqnext_available_lookahead_hoursmax_resultsResponse
Returns 200 OK with the response body below. Successful booking arbitration writes an audit row you can query through the audit log.
200 OK · example
HTTP/1.1 200 OK
Content-Type: application/json
{
"requested_window": {
"start": "2026-06-10T09:00:00Z",
"end": "2026-06-10T17:00:00Z"
},
"candidates": [
{ "start": "2026-06-10T10:00:00Z", "end": "2026-06-10T10:45:00Z", "risk": "free" },
{ "start": "2026-06-10T11:00:00Z", "end": "2026-06-10T11:45:00Z", "risk": "free" }
],
"candidate_limit": 50,
"available_candidate_count": 2,
"candidates_truncated": false,
"candidate_set": "exhaustive",
"resolved_calendar_type": "work",
"warnings": [],
"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 | Validation error — the request body is structurally valid but semantically rejected. Common causes: earliest_start is in the past (PAST_TIME), the window is shorter than the requested duration (WINDOW_TOO_NARROW), the chosen slot is outside the hold window (SLOT_OUTSIDE_HOLD), or an idempotency key was reused with a different body (IDEMPOTENCY_CONFLICT). The error code field names the specific cause. |