Skip to navigation

Errors & Rate Limits

View as Markdown

FormantAI Voice uses conventional HTTP status codes and a consistent error body.

Error format

{
"error": {
"message": "customer_phone parameter is required",
"type": "invalid_request"
}
}

Error types

HTTPTypeMeaning
400invalid_requestMissing field, invalid value, bad input, or invalid schedule time.
401authentication_errorAPI key is missing, invalid, or disabled.
402insufficient_creditsThe workspace balance cannot cover a billed operation (podcast, text to speech, decision generation).
404not_foundResource does not exist or belongs to a different tenant.
409duplicate_requestIdempotency key was already used.
429rate_limit_exceededAPI rate limit or per-number rate limit exceeded.
429concurrent_call_limit_exceededWorkspace concurrent call limit reached.
500internal_errorUnexpected server error.
502upstream_errorA model or prompt provider failed to produce an answer. Safe to retry with backoff.
503not_configuredThe feature is not set up on this deployment. Contact support.

Rate limit headers

Every API response may include rate limit headers:

X-RateLimit-Limit: 50
X-RateLimit-Remaining: 48
X-RateLimit-Reset: 2026-03-18T20:54:00+00:00

When rate limited, the response can include:

Retry-After: 60

Idempotency

Use idempotency_key on POST /v1/call to prevent duplicate call submissions. Reusing the same key for the same tenant and agent within 24 hours returns 409 duplicate_request.

{
"error": {
"message": "idempotency key already used",
"type": "duplicate_request"
}
}

Concurrency limits

If your workspace has reached its active call limit, POST /v1/call returns:

{
"error": {
"message": "concurrent call limit reached. 10 simultaneous calls allowed.",
"type": "concurrent_call_limit_exceeded",
"current_calls": 10,
"max_calls": 10
}
}

Retry strategy for API clients

  • Retry 429 only after Retry-After or X-RateLimit-Reset.
  • Retry 500 with exponential backoff.
  • Do not retry 400, 401, or 404 until the request is fixed.
  • Use idempotency keys for call creation retries.