Cancel a still-pending verification wait
Cancels a wait that is still pending, transitioning it to the terminal canceled status and stamping canceledAt; the response is the updated wait.
Cancels a wait that is still pending, transitioning it to the terminal canceled status and stamping canceledAt; the response is the updated wait. Cancel is distinct from a deadline lapse — a canceled wait never reads expired, and no verification.resolved or verification.expired event is emitted for it. Only a pending wait can be canceled: if the wait already resolved, expired, or was canceled, the call returns 409. A waitId that does not belong to the named {inbox} returns 404.
Scope: inboxes:write. Send the API key as a bearer token; Scopes lists what each one reaches.
Request
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
inbox | string | yes | Inbox UUID or full address (e.g. agent@dairo.app). |
waitId | string (uuid) | yes | Verification wait id returned by the register call. |
Response
200 Success. Body: application/json, VerificationWait.
| Field | Type | Required | Description |
|---|---|---|---|
waitId | string (uuid) | yes | |
inboxId | string (uuid) | yes | |
agentId | string (uuid) or null | no | The Agent Passport that registered this wait, when the API key was agent-bound. |
status | "pending", "resolved", "expired" | yes | |
fromHint | string or null | no | |
instruction | string or null | no | The natural-language matcher instruction this wait was registered with. |
result | string or null | no | The value the AI matcher extracted per the instruction (present once resolved) — a code, a link, or a quoted line. |
from | string or null | no | The From address of the message that resolved the wait. |
messageId | string (uuid) or null | no | The inbound message that resolved the wait. |
idempotencyKey | string or null | no | |
expiresAt | string (date-time) | yes | |
createdAt | string (date-time) | yes | |
resolvedAt | string (date-time) or null | no | |
expiredAt | string (date-time) or null | no |
Errors
Every error has the same body, {"error": {"type", "code", "message", "param"}}; branch on code. Errors lists every code.
| Status | Meaning |
|---|---|
400 | The request is malformed or a value is invalid (invalid_request, invalid_domain, idempotency_key_mismatch). |
401 | The API key is missing or invalid. |
403 | The key lacks the scope this endpoint needs (scope_missing) or may not do this (not_permitted). |
404 | No such resource in this account (resource_not_found). |
409 | The resource already exists or its state does not allow this (duplicate_resource or a condition-specific code). |
422 | The request is well-formed but a field failed validation (validation_failed). |
429 | Rate limit, plan limit, budget or spend cap reached (rate_limited, plan_limit_reached, budget_exceeded, spend_cap_reached). |
500 | An unexpected error; retry with backoff, then contact support (internal_error). |
Poll a single verification wait
Fetches one verification wait by waitId so you can poll for its outcome instead of, or alongside, the webhook event.
List email lists
Returns every active email list in the project, newest first, each as an audience object with its name, description, status, and a denormalized memberCount.