Omni Developers
Reference

Errors

Handle the canonical Omni public error envelope and retry only when safe.

Every Developer Preview route returns the same safe envelope:

{
  "error": {
    "code": "rate_limited",
    "message": "Request limit reached",
    "retryable": true,
    "retry_after_seconds": 5,
    "request_id": "request_...",
    "docs_url": "https://omni.channel/docs/api/errors#rate_limited",
    "details": {}
  }
}

Keep request_id when reporting a problem. Raw upstream exceptions are not part of the public contract.

CodeRetry?Caller action
validation_errorNoFix fields, types, identifiers, or unknown fields.
unauthorizedNoSupply a valid, non-revoked PAT.
insufficient_scopeNoCreate or use a key with the required scope.
not_foundNoVerify the public ID and workspace. The API does not reveal inaccessible resources.
idempotency_conflictNoUse the original body or a new key for new work.
vault_not_readyNoPoll Vault state until ready, then make a new request.
file_too_largeNoReduce the upload to a supported size.
upload_missingNoPUT ciphertext before completing.
upload_size_mismatchNoRe-encrypt/reserve using the exact expected size.
quota_exceededNoDelete unneeded files or wait for quota policy to change.
rate_limitedYesHonor retry_after_seconds, then retry with jitter.
service_unavailableYesRetry with bounded exponential backoff and the same idempotency key.