Skip to Content

Errors

Both APIs use standard HTTP status codes. Authentication is checked before the request is validated, so a missing or invalid key returns 401 even when the body or parameters are also invalid.

Ingest API

A successful submission returns 202 Accepted; any other response indicates that the request was not accepted and nothing was queued.

CodeMeaningCommon cause
202AcceptedThe call was registered or queued for processing.
401UnauthorizedThe API key was missing or not recognized. See Authentication.
403ForbiddenThe key cannot send calls, or a team key named a different team.
422UnprocessableThe body failed validation: a missing required field, a wrong type, or an unexpected field (the body is strict).

Common mistakes

  • Extra fields. A typo such as recording_url in place of recordingUrl is an unexpected field, so it returns 422.
  • A recordingUrl that VOIX cannot reach. The URL you send must be fetchable by VOIX. A link that requires a session cookie, or that expires before VOIX retrieves it, will prevent transcription.

Retrying safely

Submissions are idempotent on callId. If a request fails with a network error or a 5xx response, you can resend it unchanged; the same callId updates the existing call rather than creating a duplicate. See Call lifecycle.

REST API

CodeMeaningCommon cause
200OKThe request succeeded.
201CreatedA topic, lens or check was created.
204No contentA topic, lens or check was deleted.
401UnauthorizedThe API key is missing, unknown, revoked or expired.
403ForbiddenThe key lacks the permission this request needs (a sending key can only send calls), or a team key acted outside its team.
404Not foundNo such call, task, contact, topic, lens or check in your workspace.
409ConflictFor example deleting a lens that still has checks, or a topic name that already exists.
422UnprocessableA query parameter or body field is missing or invalid.
429Too many requestsOver the rate limit; retry after retry-after seconds.

Error responses carry a JSON body describing the problem:

{ "type": "about:blank", "title": "Forbidden", "status": 403, "detail": "This API key lacks the manage scope", "code": "MISSING_SCOPE" }
Last updated on