Send the same messages array to Claude, GPT, Gemini, Mistral, DeepSeek or Grok. Swap
species_name, not your integration. Stream it, fan it out in parallel, hand it tools — and get the
exact price back with the answer.
Fire owns the adapters. You own one request shape.
OpenAI-style messages[] with role and content, plus an optional
system_prompt. Multimodal content parts (text + image_url) pass through to models that support vision.
POST /v1/chat/stream is SSE. When an upstream model can't truly stream, Fire emits the whole
completion as one token event followed by a normal message_done with real usage and price.
POST /v1/chat/parallel runs independent requests concurrently and returns results[],
each with its own call_id and meta.price.
Pass options.tools and options.tool_choice; responses carry tool_calls.
options.response_format supports json_object and json_schema.
Reasoning-family models spend part of max_tokens on hidden thinking. Fire raises a too-low
budget to a per-species floor rather than billing you for an empty response. It only ever raises, never lowers.
meta.price.usd is the amount actually charged to your account. meta.content_logged
tells you whether the prompt was stored — it isn't, unless you opted in.
Omit species_name and the default model answers (currently
claude-sonnet-4-5). Name one from the catalog to
route elsewhere. temperature 0–1, max_tokens 64–8192.
Official SDKs exist for Python, PHP and JavaScript, but the API is plain HTTPS + JSON — any OpenAI-compatible client that lets you set a base URL and bearer token will work for chat.
Pick one by species_name, or omit it and Fire routes to the default. The list is generated from the same query /v1/models serves.
The messages array uses the same role/content items, and options.tools,
options.tool_choice and options.response_format follow the same vocabulary. The envelope around it
is Fire's: species_name instead of model, and meta.price / call_id on every reply.
Fire raises it to that model's floor (currently 1,024) before calling the provider, because reasoning models otherwise return — and bill for — an empty answer. The floor only raises your value; it never lowers it. The value actually sent is logged.
Yes. Keep the call_id from the response and send it to POST /v1/calls/{call_id}/report or
/rate. Reports and ratings feed the public model rankings at GET /v1/models/rankings.
Not unless your account opts in. Call metadata — model, tokens, price, duration, call_id — is always logged for billing and audit; prompt and response text is withheld by default. See the privacy & data policy.
Free to sign up — you only pay when you top up. No card required to get your first key.