Skip to main content
API
  • Two kinds of chat request no longer fail with the provider’s 400 on Gemini models. One ends with an assistant message to continue (prefill). The model now answers from scratch. The other is a tool schema whose required lists a name missing from properties. See Requests NagaAI changes.
API
  • A chat request whose input is longer than the model’s context window now fails with 400 context_length_exceeded from NagaAI. The request no longer reaches a provider that would refuse it. With fallback models, NagaAI sends it to the next model first. See Status codes.
API
  • A chat request with temperature: 0 and top_p below 1 no longer fails with the provider’s 400 on Mistral models. At zero temperature top_p has no effect, so NagaAI leaves it out there. See Requests NagaAI changes.
  • When a provider reports a rate limit or an account problem inside a stream, before any output, NagaAI now sends the request to another provider. Such a request used to fail with 400.
API
  • Three kinds of chat request no longer fail with the provider’s 400. One is a user message with empty content. Another is a past tool call whose arguments isn’t a JSON object. The third is a tool schema with a type list or a numeric enum. NagaAI converts each one for the provider. See Requests NagaAI changes.
API
  • POST /v1/embeddings, POST /v1/audio/speech, POST /v1/audio/transcriptions, POST /v1/audio/translations and POST /v1/moderations take fallback models in models, up to three. When no provider of the model you asked for answers, NagaAI sends the same request to the next one. You pay only for the model that answered. See Fallback models.
API
  • POST /v1/videos takes fallback models in models, up to three. When no provider of the model you asked for takes the job, NagaAI sends it to the next one. You pay the price of the model that took the job. See Fall back to another model.
API
  • POST /v1/images/generations and POST /v1/images/edits take fallback models in models, up to three. When the model you asked for can’t make the image, NagaAI sends the same request to the next one. You pay only for the model that made it. See Fall back to another model.
API
  • A chat request whose max_tokens is above the most the provider returns in one answer no longer fails with that provider’s 400. NagaAI lowers max_tokens to the provider’s limit, and the answer can end with finish_reason: "length". See Requests NagaAI changes.
Models
  • Wan 3.0 and Wan 3.0 Prime edit and extend a clip you send. Pass the clip as a video_url in input_references of POST /v1/videos, and say in the prompt what to change or what happens next. They also take up to ten image_url references for a character or a style. See Edit or extend a clip.
Integrations
  • OpenClaw connects to NagaAI through the NagaAI provider plugin @nagaai/openclaw-provider on ClawHub. It lists the NagaAI chat models with their context windows, reasoning support and prices, and sends requests to the Responses API. The hand-written custom provider entry is no longer needed. See OpenClaw.
APIDashboard
  • An API key’s credit limit can reset every day, week or month. Set credit_limit_period to day, week, month or all when you create or change a key in the account API, or choose Resets next to the limit on API Keys. Periods run in UTC, and a week starts on Monday. Existing keys keep all, the limit that never resets. A key past a periodic limit fails with 403 credit_limit_exceeded, and the message says when the limit resets. See Limit spending per day, week or month.
Models
  • A model whose requests are failing right now has a yellow or red dot next to its name. The dot shows in the catalog, on the model page and in the Playground model picker. Point at the dot to see the share of requests that succeeded in the last hour. Hide degraded models in the catalog filters lists only models without a dot. See Browse the catalog on naga.ac.
APIBreaking
  • A model’s id is now the publisher’s slug, a slash and the model name, such as anthropic/claude-opus-5.5. id in GET /v1/models and model in every response carry it. Code that compares model in a response with a bare name needs the new id. Requests are not affected: a bare name such as claude-opus-5.5 and every alias still work, alone or after the slug. See Models.
  • aliases in GET /v1/models starts with the bare model name. Each publisher in GET /v1/startups lists other spellings of its slug in aliases, such as alibaba for qwen, and a model id accepts them before the slash.
  • Meta’s slug is meta. meta-llama/llama-3.3-70b-instruct and the other meta-llama/… ids keep working.
  • Model pages on naga.ac move to naga.ac/models/<publisher>/<model>. Old addresses redirect to the new ones.
  • A chat request can list fallback models: models in Responses and Chat Completions, fallbacks in Messages, up to three. When the requested model has no provider that can answer, or can’t take the request, NagaAI tries the next model in the list. The answer’s model names the model that answered, and you pay only for that one, at its price. See Fallback models.
Billing
  • A crypto top-up now appears in the history on the Credits page as soon as you send the coins, with the status Processing. The credits arrive when the network confirms the payment, as before. Before, the top-up appeared only after the confirmation. See Balance, metrics and logs.
API
  • Web search on Claude models now cites its sources. In Chat Completions they come in message.annotations, and in delta.annotations when streamed. In Responses they are url_citation annotations on the output text. Such a search usually runs once per question, so it costs fewer searches and input tokens than before. In Messages, a web_search tool without allowed_callers now gets ["direct"]. To let Claude filter results in code execution, send allowed_callers: ["code_execution_20260120"]. Such a search returns no citations. See Web search.
Billing
  • Each top-up paid by card or PayPal gets a paid invoice in PDF. Stripe emails it with the receipt to the address used for the payment. The Receipt link on the Credits page opens the invoice page. Top-ups paid before have a receipt only. See Balance, metrics and logs.
  • The invoice and the Terms of Service name the seller: Artem Zhehlov, a sole proprietorship registered in Poland, with its address, NIP and REGON. The invoice charges no VAT and states the exemption it relies on. Prices stay the same.
  • Auto top-up on the Credits page charges a saved card when your balance falls below a threshold you choose, so requests don’t stop. Each charge has its paid invoice. After three declined charges in a row, or a refund or dispute, it turns itself off. See Auto top-up.
  • Companies can ask for higher limits or a bank transfer on the new Contact sales page. A top-up of $1,000 or more can be paid by bank transfer against an invoice. See Billing.
API
  • An answer from a model that always searches before answering now carries its sources. In Chat Completions they come in message.annotations, and in delta.annotations when streamed. In Responses they are url_citation annotations on the output text. Before, these answers came without sources even when the model had searched. See Web search.
  • A streamed Chat Completions answer with web search now sends its sources. Each url_citation comes in choices[0].delta.annotations of its own chunk, with the same start_index and end_index as in message.annotations of a non-streaming answer. Before, only a non-streaming answer had sources. See Web search.
  • A stream that stops before the end of the answer reaches NagaAI now ends with an error event in Chat Completions, Responses and Messages. Before, Chat Completions closed it with data: [DONE] and no finish_reason, and Responses and Messages closed the connection without an end event. See Errors in a stream.
  • On Gemini models, the reasoning item of a Responses answer now comes before the function call or message it belongs to. Before, it could come after them, and a conversation that sent the output back with store: false failed on its third turn with Upstream returned an error: Model turns with thought summaries must start with a thought block.
  • A video job whose input the provider refuses, such as a frame or reference link it could not download, now fails with error.type invalid_request. Its error.message gives the provider’s reason after Upstream returned an error:. Before, such a job failed as upstream_error with a general message. The job still costs nothing. See Video generation.
API
  • POST /v1/videos accepts input_references: images and videos the clip should follow, in the same form as OpenRouter’s Videos API. A model lists how many references of each type it takes in its input_references parameter in GET /v1/models. A request with references goes only to a provider that accepts them, and a model that takes none answers 400 invalid_request_error. See Video generation.
  • A video request goes only to a provider that can make the clip it asks for, such as both frames or a silent clip. Before, such a request could reach a provider that refused it. When no provider of the model can make it, the request fails with 400 invalid_request_error that names the parameter, and no provider is called. See Video generation.
Dashboard
  • Organizations have a Billing role. A person with it adds credits, opens receipts and sees Metrics, but can’t open API Keys, Logs or Privacy. Admins give the role when they invite someone or in the members list. See Share a balance in an organization.
  • In an organization, a member sees and changes only the API keys they created. Admins see and change every key. Keys created before this change are visible to admins only. Before, every member could see, edit, disable and delete all of the organization’s keys. See Share a balance in an organization.
  • When a person leaves an organization or an admin removes them, NagaAI disables the keys they created in it and moves them to the admins. An admin can enable a key that a service still needs.
  • The API keys list shows when each key last made a request, by UTC day. A key you no longer use is easy to find and disable. See API keys.
  • Each top-up paid by card or PayPal on the Credits page has a Receipt link. It opens the payment’s receipt from Stripe in a new tab, with any refund on it. The short top-up ID column is gone. See Balance, metrics and logs.
  • Credits that NagaAI support adds to your balance show Granted as their method. Before, the method was a dash.
  • When the payment page can’t be opened, Add credits says so and suggests another payment method. Before, it showed the payment processor’s error text.
API
  • A request that forces web search with tool_choice now fails when no provider can search. It gets 400 invalid_request_error if the model has no provider with search, and 503 if those providers can’t answer right now. Before, NagaAI answered it without searching. A request that doesn’t force the search still gets an answer without it and the x-naga-dropped-tools: web_search header. See Web search.
  • A streamed answer with web search now starts once the search is done, or after 15 seconds of searching. If the provider fails before the answer starts, NagaAI sends the request to another provider. Before, the stream ended with an error.
Billing
  • Web search now costs 0.005 credits per search, $5 per 1,000, on top of the tokens, on every paid model. Before, you paid only for the tokens. A failed search and a model that answers without searching cost nothing, and :free models don’t charge for search. Each request lists its searches as Web search calls in its cost on the Logs page. See Web search.
API
  • web_search_options in Chat Completions now turns on web search, the same search web_search gives in Responses, with search_context_size and user_location. Before, NagaAI dropped it. When the provider returns sources, a non-streaming answer lists them in message.annotations. NagaAI bills each search as in Responses. See Web search.
  • The Chat Completions request schema no longer lists logit_bias, prediction and image_config. NagaAI never passed them to a provider and still accepts and drops them, so requests that send them work as before. See Chat Completions.
Dashboard
  • With data logging on, a video request on the Logs page shows its prompt. Its details play the finished clip for the 7 days NagaAI keeps the file. Before, video requests showed that the content was not stored. Videos generated before this change have no stored content. See Balance, metrics and logs.
API
  • A request goes only to a provider that accepts the values it sends for a limited parameter in GET /v1/models, such as the number of stop sequences. Every provider of a model may limit a parameter so that none accepts your value. Then the request fails with 400 invalid_request_error that names the parameter, and no provider is called. See Differences from OpenAI and Anthropic.
  • A provider that accepts only some levels of reasoning_effort, or no JSON schema in response_format, now serves the other values too. NagaAI sends the nearest level the provider has, or moves the JSON schema into the prompt. reasoning_effort: "none" still goes only to a provider that can turn reasoning off. GET /v1/models lists these converted values among the values a limited parameter takes. See Models.
Dashboard
  • The model catalog filters context length and input price per 1M tokens with two sliders, each from a low to a high value.
  • On a phone, model cards in the catalog show the context window and the tokens a model processed.
  • Questions about a model on its page are collapsed, and each answer opens with a click.
  • On a wide screen, dashboard pages use more of the width, up to 1280 pixels of content, and Logs uses the whole width.
  • The catalog filter panel shows how many filters are on, with a Clear button. Clear, and Reset filters on a phone, keep the chosen model kind, the search and the sort order.
API
  • The video_generation operation in GET /v1/models now lists limits.max_wait_seconds: how many seconds a job of that model may run before it ends failed with error.type timeout. The video parameters and prices do not change. See Models.
API
  • primary_operation in GET /v1/models is now the job the catalog states as the model’s main one. Before, it was the first served job in a fixed order. operations lists the jobs the catalog states for the model that a provider serves right now. Today every model keeps the same primary_operation and operations. See Models.
Dashboard
  • A chart above the Logs table shows the requests of the period over time, colored by outcome, under the same filters as the list. A click anywhere on a row opens its details, and so do Enter and Space on a row. See Balance, metrics and logs.
Dashboard
  • Videos that are still being generated show in an In progress strip above the Logs table, with their stage, length, resolution and time so far. A finished video leaves the strip and appears as a row. See Balance, metrics and logs.
Dashboard
  • The request panel on the Logs page is wider and steps to the previous or next request. A streamed answer shows its first token time and output speed at the top, and Timing draws them as bars. Prompt opens the conversation in a large window with search, a role filter and copying. See Balance, metrics and logs.
Dashboard
  • The Metrics page puts what adds up across model types first: spend, requests, error rate and models used, with spend stacked by type. Each type follows in its own tab with its latency, its tokens for chat and its usage in the unit it bills. The top models and API keys open their requests on the Logs page. See Balance, metrics and logs.
Dashboard
  • Request details on the Logs page open in a panel on the right, and the page address keeps the open request. The panel shows how the cost was calculated and the timing of a streamed answer. It also shows what the request asked for, such as the image size or the video resolution. With data logging on, it shows the conversation instead of raw JSON, and Download JSON saves the raw bodies. See Balance, metrics and logs.
Dashboard
  • The Logs page shows every kind of model in one table: time, model with an icon for its kind, usage, duration, cost and API key. A request that did not succeed carries an Error, Canceled or Cut off tag before the model. Usage reads what you sent on the left of the arrow and what the model returned on the right, in the unit it bills. New filters narrow the list by period, kind, model, key, outcome and request ID, and the page address keeps them. Export applies the same filters. See Balance, metrics and logs.
API
  • operations[].parameters in GET /v1/models now lists only the request fields NagaAI checks when it picks a provider. For chat these are temperature, top_p, top_k, frequency_penalty, presence_penalty, stop, tools, web_search, tool_choice, parallel_tool_calls, response_format, reasoning_effort and max_completion_tokens. Names that some providers declare but that NagaAI does not pass on, image_config on chat and background on image generation, no longer appear. Requests work as before. See Models.
API
  • A parameter in operations[].parameters of GET /v1/models can now carry minimum, maximum, maxLength and properties, and x-support can be limited. A limited parameter always states its bound: for example, "stop": {"x-support": "limited", "type": "array", "maxItems": 1} takes one stop sequence. When several providers serve a model, the description accepts every value at least one of them accepts. See Models.
Dashboard
  • A new Security and data page explains how NagaAI stores API keys and which request data it keeps and for how long. It also covers training on requests, where NagaAI servers run and how to report a vulnerability. About now lists support contacts and the status page.
  • The model catalog filters by context length and by input price per 1M tokens.
  • Each model page on naga.ac ends with questions and answers about the model and up to six related models. The answers cover price, context window, tool calling, inputs and outputs. Pricing, performance and uptime now come first.
  • On a phone, the bar with Compare and Try in Playground no longer covers the text or the footer of a model page.
  • In the dark theme, red buttons and error text, such as Close account in account settings, are easier to read.
Dashboard
  • The Logs page shows each request’s usage in the unit its model bills: tokens for text, images for image models, seconds for video. Request details end with Charges: each billed unit with its quantity, unit price and amount. The Metrics page adds Usage by unit, the total of each unit and its cost for the period. See Balance, metrics and logs.
Dashboard
  • The naga.ac home page now leads with what NagaAI offers. It shows each kind of model with its popular models, and how routing picks a provider. Flagship models from the leading labs list input and output prices next to the lowest price elsewhere. Below them are the three chat formats with integration guides, the steps to a first request and the latest blog posts.
API
  • whisper-large-v3-turbo no longer serves /v1/audio/translations: its provider does not translate, and such a request failed with 400. Use whisper-large-v3 for translation. Transcription with whisper-large-v3-turbo does not change. See Speech to text.
  • /v1/audio/speech tries another provider when the first one sends no audio. Before, such a request failed with 503. See Text to speech.
  • A request with web search in Responses or Messages now goes first to the providers that can search for the model. Before, such a request could reach a provider without search, and the model answered without searching. If no provider with search can answer, the request is served without search, and the x-naga-dropped-tools: web_search response header says so. Models that can search list web_search in the parameters of their operation in GET /v1/models. See Web search.
  • A file part sent to a model whose provider has no file input now reaches the model as the file’s text. Before, some providers of gpt-oss-120b answered 400 on Chat Completions and Responses. See Images and files.
Docs
  • New integration guide: Hermes Agent by Nous Research connects to NagaAI as a named provider on the Responses API.
  • Integration guides now set up the Responses API or Messages wherever the tool offers them. That changes OpenCode, Kilo Code, OpenClaw, Open WebUI, LangChain and the Vercel AI SDK. Cline, Continue and LibreChat still use Chat Completions, and each page says why.
  • Six chat features now have one guide each under Guides: streaming, tool calling, structured outputs, reasoning, images and files, and conversation state. Each guide shows Responses, Chat Completions and Messages in tabs. These guides replace 20 pages: the feature pages and the per-format pages under API guides. Old links redirect to the new guides. See Streaming.
  • Billing now holds the usage fields of all three formats, and the separate Tokens and usage page redirects there. Routing, Differences from OpenAI and Anthropic, Errors and Limits are rewritten to lead with what you need to do. The production checklist moves to Guides and gives the reason for each item. See Billing.
  • The home page and Get started are rewritten. The home page sends a first request and links to the next pages, and How NagaAI works redirects there. Choose an API compares the three chat formats side by side, and the Quickstart shows the answer you should see. See Quickstart.
  • The account, product and integration pages are rewritten around tasks. Each integration page lists what you need, the steps, a check and the errors you may hit. Page addresses stay the same.
  • The media guides moved to /guides: Image generation now includes image edits, Text to speech, Speech to text, Video generation, Embeddings and Moderation. Every old address redirects to its new page, and each guide ends with the errors you can meet and how to fix them.
  • Differences from OpenAI and Anthropic now says that image links from /v1/images/generations and /v1/images/edits expire after 24 hours, as the image guide does.
Billing
  • Some providers return an image from /v1/images/generations or /v1/images/edits without a token count. Such an image now counts at the model’s published count for its resolution. That is 1290 output tokens for gemini-2.5-flash-image and 1120 for a 1K or 2K picture from gemini-3-pro-image. A picture from gemini-nano-banana-2.1 counts 1120, 1680 or 3780 tokens at 1K, 2K or 4K. A model whose publisher gives no such count keeps 2048 per image. See usage.output_tokens in the API reference.
API
  • operations[].endpoints in GET /v1/models lists every endpoint that serves the job. A chat model now lists chat.completions, messages and responses, and x-naga-supported-endpoint: messages or responses returns the chat models. See Models.
Dashboard
  • The naga.ac header links to Pricing and has a Sign up button next to Sign in. Model search opens with ⌘K or Ctrl+K from any page. Links to any naga.ac page now show a preview image in X, Slack and Discord.
  • The naga.ac footer groups its links into Product, Developers, Company and Legal, and links to the API reference, this changelog and the status page. On Apps, the API base URL sits in a field with a Copy button.
  • naga.ac serves llms.txt for AI assistants, a security.txt with a contact for vulnerability reports, and an RSS feed of announcements. Ended promotions are marked Ended.
  • The model catalog opens faster: it shows the first 40 models and adds more as you scroll.
  • Pricing lists prices of popular chat, image, video and speech models, with the market price struck through where it is known. Each kind links to the catalog sorted by price.
  • Model pages on naga.ac add a Messages tab with the Anthropic SDK to the code samples of chat models.
  • The Playground shows the price of the selected model next to the model picker. Chat, speech and transcription parameters stay open in a panel on wide screens. A new room offers example prompts for each mode.
  • Code samples on naga.ac now open on the Responses API. This covers the home page, the API section of a model page and the first request of a new key. Chat Completions stays the second tab on model pages, and every model on Chat Completions serves Responses too. The Quickstart, the Playground API window and the guides open on Responses as well.
  • The Playground header shows the market price struck through next to the NagaAI price, as model pages do.
  • Compare shows the market price struck through next to the NagaAI price, as model pages do. Gray text in the light theme is darker, and code samples use GitHub’s current light palette, so both read at WCAG AA contrast.
  • The dashboard groups its sections into Billing, API, Usage and Settings. On Credits, the top-up button is now Add credits, and the history shows the payment method and any bonus credits. See Account and organizations.
  • The API Keys page shows usage and limit in their own columns and one status per key: disabled, expired or limit reached. See API keys.
  • The Metrics page opens on four totals for the period, and each chart names its series. Spend by publisher, API key and model shows each amount in full. See Balance, metrics and logs.
  • The Logs page shows each request’s time to the second and its tokens as input → output in one column. The arrow at the end of a row opens its details, and on a phone requests appear as a list. See Balance, metrics and logs.
  • The Provisioning Keys page shows when each key was last used. See Authentication.
  • The Referrals page shows your rate with the referrals left to the next one, and the full rate ladder under your link. See Account and organizations.
  • The Account page lists Google, GitHub and Discord under one Sign-in methods list with Connect and Disconnect. Security shows whether two-factor authentication is on and sets it up in four short steps. See Account and organizations.
  • The Privacy page groups the training settings under Training. See Privacy and logging.
  • The Organization page lists members with their role and join date, and admins change a role right in the row. Invitations shows how long each invitation still works. See Account and organizations.
  • The Sign in and Sign up pages put Google, Discord and GitHub first, then email. A link under the form switches between a password and a sign-in link by email.
  • The documentation follows the light or dark theme of your system and shares the colors of naga.ac. Its header links to the Dashboard. The API reference opens code samples on Python.
  • Code samples in the guides read the key from NAGA_API_KEY. The API reference, the Playground and the site use the same variable. If you copied NAGAAI_API_KEY from a guide, rename it in your environment.
  • Pricing shows Free and Pay-as-you-go side by side, then the full comparison and the questions as a list. The plans and their terms stay the same.
APIBreaking
  • GET /v1/models describes a model by what it does. Each entry of operations carries its endpoints, its limits and its parameters; primary_operation names the main one. See Models.
  • context_window moves to limits.context_window of the chat operation, and max_output_images to limits.max_images of the image operations.
  • supported_parameters gives way to parameters on each operation: one entry per request field, described in a subset of JSON Schema with x-support.
  • pricing is a list of rows with meter, unit, price and conditions. per_input_token becomes the row with meter input_token, and so on for every meter; price is a decimal string. Every price keeps its value.
  • Video models list a row per second for each resolution and sound setting they sell, with the setting in conditions. NagaAI removes GET /v1/videos/models: the video_generation operation in GET /v1/models holds the values each model accepts.
  • supported_endpoints gives way to operations[].endpoints, which lists the same names. The x-naga-supported-endpoint header filters on them.
Dashboard
  • naga.ac/models shows the cheapest price elsewhere, struck through, next to the NagaAI price for chat and embedding models where it is higher. See Models.
  • A new API key opens with a ready first request in Python and cURL to the newest :free chat model, the key already filled in. See API keys.
  • Video jobs appear in Logs and Activity once they end. A completed job shows its charge, and a failed job shows its error with no charge. A job’s latency runs from the POST to the end of the job.
  • The Playground generates video. You pick the length, resolution, aspect ratio and sound, and see the price before you start. Models that take a start or end frame accept one from your files.
API
  • GET /v1/models lists kinds for every model: what kind of model it is, such as chat, image or video. operations lists each job the model does, such as image_generation or image_edit, with the endpoints that serve it. Existing fields keep their values. See Models.
  • GET /v1/models lists the price of a video model as pricing.per_output_video_second: one second at the model’s cheapest resolution and audio setting. GET /v1/videos/models prices each combination.
  • Image models receive quality and background on more providers, in the values each model lists. NagaAI drops a value the model does not list.
  • Image edits on more providers drop quality and background where the provider has no field for them, instead of failing with 400.
  • In /v1/audio/translations, language names the language of your audio, and the translation is into English. Before, one provider read language as the language to translate into.
API
  • Video generation: POST /v1/videos starts a job and answers 202, GET /v1/videos/{id} reports its status, and GET /v1/videos/{id}/content downloads the MP4 for seven days after the job completes. GET /v1/videos/models lists the video models, the values each accepts and the price per second. See Videos.
  • NagaAI holds the full price of a video job on the balance while it runs and charges it once, when the clip is ready. NagaAI does not charge a failed job.
  • More speech models serve /v1/audio/speech, among them MiniMax Speech 2.8, Chatterbox and Gemini 3.8 Flash TTS. Each model receives the text, voice, speed, instructions and response_format in its own fields. A model ignores a parameter it has no field for. An OpenAI voice name the model does not know runs as the model’s default voice.
  • Speech-to-text models receive language in the field each model expects. Before, ElevenLabs Scribe ignored language, and NVIDIA Nemotron ASR failed.
  • Gemini 3.5 Transcribe serves /v1/audio/transcriptions. NagaAI sends language as the model’s language hint. The model has no slot for prompt, so NagaAI drops it.
  • Qwen-Image 2.1 Pro and Turbo serve /v1/images/generations and /v1/images/edits. NagaAI fits size into the model’s range with its aspect ratio kept. An n above the model’s limit runs as several calls. These models have no mask, so NagaAI drops it, and the prompt carries the edit.
  • Ideogram Vector models return SVG through /v1/images/generations and /v1/images/edits. With response_format: "url", a browser that opens the link downloads the SVG file.
  • HiDream O1 Image, Vidu Q2 reference-to-image and Ideogram V3 Character receive your images in the field each model requires.
  • Ideogram V3 Remix and Edit serve /v1/images/edits. Ideogram V3 Edit needs mask, and NagaAI returns 400 without one.
  • GLM-Image serves /v1/images/generations. MiniMax image-01 serves /v1/images/generations and /v1/images/edits, where your images are the character to keep.
  • Kotoba STT receives a language it lists, or detects the language itself. Before, a language outside its list failed.
  • Token arrays in /v1/embeddings work on more providers of OpenAI embedding models. NagaAI decodes them with cl100k_base for a provider that takes text only.
  • On more speech-to-text providers NagaAI drops prompt where the provider has no field for it, instead of failing.
  • response_format: "pcm" returns raw 24 kHz, 16-bit mono samples on every speech model. Voxtral models returned 32-bit float samples before. NagaAI bills speech in pcm by its length, the same as the other formats.
API
  • Image models such as FLUX.3, Bria FIBO and Ideogram receive the prompt, size and reference images in the fields each model expects. Bria FIBO edit models now receive your prompt; before, NagaAI sent it in a field these models ignore.
  • Image edits check the number of reference images against the model before the request leaves NagaAI. Too many images, or any image on a model that takes none, fails with 400 and a message that names the limit.
  • Sonar models run on the provider’s current API and keep their web search. sonar-reasoning-pro and sonar-deep-research run the provider’s matching research levels.
  • NagaAI drops temperature, top_p and top_k on Claude Haiku 5.5 and runs a forced tool_choice as auto on Claude Sonnet 5.5. Both returned 400 before.
  • reasoning_effort follows each model’s own levels on Gemini 4 Argon and Gemini 3.6 and 3.8 Flash. The same holds for GLM-5.2 and Grok 4.5 to 4.7. A level the model lacks runs as the nearest one. medium no longer runs as high on Gemini 3.6 and 3.8 Flash.
  • reasoning_effort: "none" turns thinking off on DeepSeek models. MiniMax-M3.1-Flash and Grok 4.5 to 4.7 always reason, and NagaAI ignores none there instead of returning 400.
  • reasoning_effort: "xhigh" reaches GPT-6 models and GPT-5.2 and later. Before, NagaAI sent high there.
  • reasoning_effort, reasoning.effort and output_config.effort accept max. GPT-6 and Claude models that have it run it, and other models run the nearest level they have. Before, Messages ran max as xhigh.
  • reasoning_effort: "none" turns reasoning off on GPT-5.1 to GPT-5.5. Before, GPT-5.5 reasoned at its medium default.
  • NagaAI sends your max_tokens as max_completion_tokens to providers that deprecate the older field.
  • Sonar models accept a max_tokens below 16: NagaAI raises it to 16, the smallest cap they take.
  • NagaAI asks providers not to store your requests wherever their API has such a switch. Reasoning then travels with the conversation instead of staying in the provider’s storage.
  • DeepSeek models keep working in conversations with tools. Before, a request that carried an earlier assistant turn could fail with 400.
  • Mistral reasoning models stream their reasoning and the first words of the answer. Before, NagaAI lost both.
  • Some image and speech models that run longer than 60 seconds now return their result. Before, the request failed with 400.
  • Nano Banana 2.1 returns an image in Chat Completions and Responses. Before, it answered with text only.
  • Image edits work on Grok image models, and FLUX.1 schnell returns the image instead of a JSON text.
  • Queued Midjourney tasks return their images instead of 500.
  • Transcriptions pass language to Whisper and Wizper models, and translations return English text. Before, Wizper transcribed every language as English.
  • On gpt-transcribe, NagaAI sends language as the language list that model expects.
  • Voxtral models can serve /v1/audio/speech and /v1/audio/transcriptions. On them the OpenAI voice names map to Voxtral voices, and NagaAI drops speed, instructions and the transcription prompt.
  • Gemini TTS models serve /v1/audio/speech. NagaAI maps the OpenAI voice names to Gemini voices and sends instructions as the speaking style. They return wav by default or pcm; another response_format fails with 400.
  • On eleven_* speech models, the OpenAI voice names map to voices that stay available after 2026-12-31. eleven_v4 works on /v1/audio/speech, and NagaAI splits text over 2,000 characters at sentence ends.
API
  • GET /v1/models accepts an x-naga-supported-endpoint header. With chat.completions it lists only the models that serve Chat Completions, and a name no model serves returns an empty list. Without the header the list is unchanged. The LibreChat guide uses it to load chat models automatically.
  • GET /v1/models without a key and GET /v1/startups may be cached for 60 seconds and served for 60 more while the cache refreshes. A catalog change shows within two minutes. A request with a key is never answered from cache: an invalid key gets 401, and an account with no balance sees only :free models.
API
  • Tool calling works across turns on Gemini 2.5 models. Before, the request that carried a tool result failed with 400.
  • Gemini 2.5 Flash Lite accepts every reasoning_effort. It reasons only at high, so low and above run as high, and none and minimal run without reasoning. Gemini 2.5 Flash runs medium as high. Both failed with 400 before.
  • A provider that no longer serves a model moves the request to another provider. Before, some of these returned 400 with Upstream returned an error:.
  • Fewer 400 errors on Claude models: NagaAI removes trailing assistant messages and empty user messages where the provider rejects them.
  • max_tokens works on gpt-6-* models in Chat Completions.
APIDocs
  • PDFs and text files reach every model that accepts files. Models without native file input receive the text of the file.
  • file_url works on every model in Chat Completions and Responses, and url sources work for documents in Messages.
  • A file_id fails with 400 file_id_unsupported, and an item_reference in Responses fails with 400; NagaAI used to drop it.
  • Text to speech returns 400 for a response_format the model cannot produce.
  • /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.