Chat & reasoning

One chat endpoint. Every model.

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.

21
Chat models onboarded
3
Endpoints: chat, stream, parallel
8K
max_tokens ceiling per call
Two stylized heads exchanging a spark of flame, orbited by teal nodes representing many AI models
What you get

The provider differences, absorbed.

Fire owns the adapters. You own one request shape.

⇄

Model-agnostic messages

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.

≋

Streaming that never breaks the contract

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.

⫶

Parallel fan-out

POST /v1/chat/parallel runs independent requests concurrently and returns results[], each with its own call_id and meta.price.

⚒

Tool calls and JSON mode

Pass options.tools and options.tool_choice; responses carry tool_calls. options.response_format supports json_object and json_schema.

⌁

Reasoning budgets handled

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.

$

Price on every response

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.

Request

A key and curl. Nothing to install.

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 a model, ask a question
curl -X POST https://fire.prosaga.net/v1/chat \
  -H "Authorization: Bearer $FIRE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "messages": [{"role": "user", "content": "Explain quantum entanglement."}],
    "species_name": "gpt-4o",
    "max_tokens": 2048
  }'

# → {"content": "...", "model": "GPT-4o", "provider": "edenai",
# "usage": {"input": 13, "output": 212},
# "meta": {"price": {"usd": 0.0021}, "call_id": "9f2c…", "content_logged": false}}
Models you can call

Frontier, standard, fast and nano tiers — one key.

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.

FAQ

Questions evaluators ask.

Is the request shape OpenAI-compatible?

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.

What happens if I set max_tokens too low on a reasoning model?

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.

Can I report a bad answer?

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.

Is my prompt stored?

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.

A raised hand holding a burning torch — the Fire brand emblem
Ready when you are

Get a key. Make a call. See the price.

Free to sign up — you only pay when you top up. No card required to get your first key.