API reference/POST /v1/availability/search

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_email
string:emailEmail address.
calendar_type
string
duration_minutesreq
integerMinimum 5. Maximum 480.
earliest_startreq
string:date-timeUTC date-time string.
latest_endreq
string:date-timeUTC date-time string.
meeting_classreq
string
next_available_lookahead_hours
integerMinimum 1. Maximum 72.
max_results
integerMinimum 1. Maximum 100.

Response


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


CodeDescription
400Validation failed — body is malformed or missing required fields.
401Missing or invalid API key. Send the raw key as a Bearer token in the Authorization header.
403Agent does not hold the permission scope required for this call (e.g. preempt on a higher-priority class).
404Calendar owner or booking id not found.
409Conflict — the requested slot was already committed at higher priority. Inspect alternatives[] in the response body.
422Validation 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.