TarseekPre-production

Tarseek API · Pre-production

Errors

Every public chat error uses one stable envelope:

{
  "error": {
    "message": "Human-readable explanation",
    "type": "authentication_error",
    "code": "invalid_api_key",
    "param": null,
    "retryable": false
  },
  "request_id": "req_..."
}
Implemented
x-request-id always matches the body request_id. Send an optional printable-ASCII X-Client-Request-Id (maximum 512 characters) to correlate the call with your own logs; Tarseek echoes it in the response. Retryable provider throttling includes Retry-After and error.retry_after_seconds when the provider supplied a delay. The body field remains available for errors emitted after an SSE stream has started.
HTTPCodeTypeRetryCauseActionBackend
400invalid_requestinvalid_request_errorNoSemantically invalid bodyFix the requestImplemented as validation_error for schema validation
400malformed_jsoninvalid_request_errorNoBody is not JSONSend application/jsonNormalized to validation_error
401authentication_requiredauthentication_errorNoMissing AuthorizationAdd Bearer tokenIntentionally normalized to invalid_api_key
401invalid_api_keyauthentication_errorNoUnknown keyCreate a new keyImplemented
401api_key_revokedauthentication_errorNoKey disabledUse an active keyNot implemented
503provider_billing_errorprovider_errorNoThe BYOK provider account cannot accept billed requestsCheck billing with the model providerImplemented
404model_not_foundinvalid_request_errorNoUnknown or unlisted model IDUse the catalogImplemented — unknown and unlisted IDs are indistinguishable
400unsupported_parameterinvalid_request_errorNoParam not on this modelRemove the fieldImplemented — rejected before provider execution
400unsupported_modalityinvalid_request_errorNoImage/audio sent to text-only modelPick a multimodal modelPartial — unsupported primary deployments may return 503
400context_length_exceededinvalid_request_errorNoPrompt longer than contextShorten inputImplemented
429rate_limit_exceededprovider_errorYesAccount RPM/TPMBackoff using Retry-AfterImplemented — project and optional key limits return Retry-After and remaining-limit headers
429provider_rate_limitrate_limit_errorYesPrimary deployment returned 429Retry later or another modelImplemented — Retry-After is forwarded when available
503model_unavailableservice_unavailable_errorYesNo healthy deploymentRetry or switch modelImplemented
503deployment_unavailableprovider_errorYesRequested provider downRetry or switch modelNot implemented — not distinct
502provider_errorapi_errorYesUpstream 5xxRetry with backoffImplemented as the sanitized terminal provider failure
502provider_authentication_errorprovider_errorYesTarseek credential for provider is badReport to support; try another modelImplemented — distinct from customer authentication
504provider_timeouttimeout_errorYesUpstream deadlineRetry; reduce max outputImplemented
400content_filtersafety_errorNoPrompt or output blockedRevise contentNot implemented — not a Tarseek code
500internal_errorinternal_errorYesTarseek bugRetry; contact support with request_idImplemented for public /v1 failures