API comparison
Sakana Fugu speaks three API shapes. They are not three identical products.
Official Models documentation now lists OpenAI-compatible Responses and Chat Completions, plus an Anthropic-compatible Messages API. Compatibility describes the request envelope. It does not mean every OpenAI or Anthropic field has the same effect.
1. Pick the shape that matches the work, then stay there
Sakana AI currently recommends the Responses API for generation, especially for tools, multimodal input, reasoning controls, and function calls. Chat Completions exists for code that already speaks that dialect. Messages exists for Anthropic-shaped clients. Switching envelopes mid-project usually costs more than it saves because ignored fields and conversation state differ.
| Surface | Use it when | Documented caveat |
|---|---|---|
Responses /v1/responses | New integrations, tools, structured output, streaming with a final object | previous_response_id is not accepted |
Chat Completions /v1/chat/completions | An existing OpenAI chat client cannot move yet | temperature, top_p, penalties, seed, and stop are ignored |
Messages /v1/messages | The caller is already an Anthropic Messages client | Requests are forwarded with standard Messages fields; do not assume every Anthropic-only option is documented here |
Models /v1/models | Startup validation | Cyber appears only for pay-as-you-go keys with access |
2. Model IDs are part of the API contract
As of August 17, 2026 the Models page lists:
fugufor the default modelfugu-ultra, currently defaulting tofugu-ultra-v1.1fugu-ultra-v1.0, also known asfugu-ultra-20260615fugu-cyber, defaulting tofugu-cyber-v1.0
The same page also lists sakana-namazu as a separate Japanese-specialized model. This library stays focused on Fugu. Namazu pricing and tools are documented on the official pricing page and should not be mixed into a Fugu cost estimate.
3. Accepted-but-ignored fields are a product fact
Teams waste weeks “tuning” a parameter that the server discards. The current Models page is explicit:
- Responses:
temperatureandparallel_tool_callsare accepted but ignored. Parallel tool calls are forced on for models that support them. - Chat Completions:
top_p,stop,seed,frequency_penalty,presence_penalty, andtemperatureare accepted but ignored. - Responses:
previous_response_idis not accepted. Send the full history ininput. - Ultra:
max_output_tokens/max_completion_tokensapply to the final model, not the orchestrator’s own limit. - Reasoning effort supports
high,xhigh, andmax. The last two are aliases. Default isxhighfor Ultra andhighfor Fugu on Responses.
If a user can move a temperature slider, they will believe it changed the answer. That is a misleading representation of the product, even if the API accepted the JSON.
4. Built-in web search is documented, advanced options are not
Official Models documentation says Fugu models support OpenAI-compatible built-in tools on Responses. Adding {"type": "web_search"} is the documented path. It also says advanced options for that tool are not supported. Test citation handling on your own tasks before you treat search as a production dependency.
5. Conversation state is your problem
Because previous_response_id is rejected, a multi-turn app must send the history it wants the model to see. That has two consequences:
- Token growth is visible and billable. A hidden server-side thread is not doing that work for you.
- You can redact or truncate history on purpose. That is an application decision, not a Fugu feature.
For Ultra, remember that orchestration tokens are extra real usage. A long chat plus a deep route can move a request across the 272K threshold even when the latest user message is short. See orchestration token accounting.
Sources
- Sakana AI Models documentation: endpoints, fields, model IDs, built-in tools
- Sakana AI Pricing documentation: usage object and rates