Skip to main content
APIDocs
  • /v1/messages accepts mid-conversation role: "system" messages with text content. Claude Code sends them on its first request.
  • A provider failure inside a stream, before any content, moves the request to another provider. If every attempt fails, you get the generic 503.
  • A provider’s rejection inside a stream arrives as 400 invalid_request_error with Upstream returned an error: in front of its text.
  • NagaAI no longer returns 502. A request no provider could serve returns 503.
  • Image, audio, embedding and moderation endpoints report provider errors like the chat endpoints: a generic 503, 400 with Upstream returned an error:, or 400 with Request rejected by upstream content moderation. (was 403 inappropriate_content).
  • /v1/messages uses Anthropic error types by status: authentication_error, billing_error, not_found_error, rate_limit_error.
  • A function_call_output without its function_call fails with 400 tool_output_unmatched. A language that is not an ISO 639-1 code fails with 400 on transcriptions. days outside 1 to 30 on /v1/account/activity fails with 400 instead of 500.
  • /v1/models no longer lists web_search_options, functions, function_call, logit_bias, logprobs or prediction in supported_parameters: NagaAI does not pass them to any provider.
  • json_object works without the word “json” in the prompt.
  • Responses output lists reasoning before the answer.
  • /v1/responses carries Codex CLI’s tool formats: freeform tools such as apply_patch, MCP tools grouped by namespace, and the compact tool list of gpt-6-* and gpt-5.6-*.
  • The API reference documents the x-naga-routing-strategy request and response header.
  • An unknown default_routing_strategy in POST or PATCH /v1/account/keys now fails with 400 instead of 500. The response to POST /v1/account/keys includes default_routing_strategy.
  • This documentation was rewritten against the current API. New pages: Routing, Differences from OpenAI and Anthropic, Limits.
Billing
  • Crypto top-ups go through CoinGate: BTC, ETH, USDC, SOL and other coins. USDT is not accepted there.
  • The legacy crypto method with USDT and 200+ coins stays available to accounts that have paid $1,000 or more in total.
Billing
  • Card and PayPal payments add credits only when the payment completes. A refund or chargeback removes the credits it paid for.
  • Bank debit methods such as SEPA are no longer offered at checkout.
APIRouting
  • Routing strategies: reliability, balanced, latency, throughput and cache. Set one in the routing body field, the x-naga-routing-strategy header or as a key default. The x-naga-routing-strategy response header names the strategy NagaAI used. See Routing.
API
  • NagaAI removes reasoning signatures issued by one provider before a request goes to another. Conversations with reasoning models no longer fail when the provider changes.
APIErrors
  • Errors come in three kinds. A provider failure moves the request to another provider, and if all fail you get a generic 503 or 502. A provider’s content filter returns 400 with code: "content_moderation". A provider’s refusal of a valid request returns 400 with Upstream returned an error: in front of its text.
  • NagaAI drops parameters a model does not list in supported_parameters before the request reaches a provider.
  • A conversation with a tool call and no matching tool result fails with 400.
APIPricing
  • An input the model cannot read, such as an image for a text-only model, fails with 400 unsupported_modality before it reaches a provider.
  • pricing in /v1/models has new units: per_input_audio_token, per_output_audio_token, per_input_audio_hour, per_output_audio_hour, per_output_text_token, per_input_text_character and per_output_text_character. per_audio_token is gone.
Pricing
  • NagaAI charges cached input tokens at per_cached_input_token on every model that has the price. Before, some models charged them at zero.
API
  • Every response from an API endpoint carries an x-request-id header. The same id identifies the request on the Logs page.
  • Response ids have the prefixes chatcmpl-, resp_ and msg_, and model always holds the catalog id.
  • A request body that stops arriving for 60 seconds, or takes longer than 15 minutes, fails with 408.
Models
  • dall-e-3 and dall-e-3:free left the catalog after OpenAI retired them.
APILimits
  • Request bodies are limited to 32 MiB and single inline files to 20 MiB. Larger requests fail with 413.
APIErrors
  • Validation errors return 400 invalid_request_error with a text message such as body.messages: ....
  • A model with no available provider returns 503 with No upstream available.
BillingLimits
  • NagaAI does not charge a request that fails before its answer reaches you.
  • A running paid request reserves 0.05 credits of the balance. A paid request with less than 0.05 credits left fails with 402.
  • max_tokens in Chat Completions works as an alias of max_completion_tokens.
API
  • Chat models that draw return images in all three chat formats: message.images in Chat Completions, image_generation_call in Responses and image blocks in Messages.
API
  • Chat Completions and Responses accept audio input on models that support it.
API
  • reasoning_effort is moved to the nearest level a model supports instead of failing.
DashboardPrivacy
  • Data logging (beta) on the Privacy page stores request and response bodies for 30 days and shows them in Logs.
API
  • /v1/models no longer has supported_parameters_by_endpoint. Use supported_parameters.