Skip to main content
If you already call models through NVIDIA NIM, vLLM, or another OpenAI-compatible stack that sends NIM-style extras, you can point that client at Fireworks without rewriting every request. Fireworks Chat Completions is OpenAI-compatible. NIM and vLLM often add fields that aren’t in the OpenAI schema — for example chat_template_kwargs to turn thinking off. Without translation, those requests fail with 400 Extra inputs are not permitted. Fireworks accepts the common ones and maps them onto native parameters. For first-party Fireworks apps, prefer native controls such as reasoning_effort. See the Reasoning guide. Also see: OpenAI compatibility · Anthropic compatibility.

Quickstart

Use any OpenAI-compatible client. Set the base URL to Fireworks and use your Fireworks API key:
Set model to a Fireworks model resource name (for example accounts/fireworks/models/kimi-k3). Streaming works the same way — translation happens before the response starts.
When you control the request body yourself, prefer native Fireworks fields (reasoning_effort, prompt_truncate_len, response_format). Use NIM field names when you’re migrating an existing NIM or vLLM client and want drop-in behavior.

Thinking and reasoning

NIM clients usually toggle thinking with chat_template_kwargs. Fireworks maps those onto reasoning_effort: Other keys inside chat_template_kwargs (for example parallel_reasoning_mode) are dropped with the object — they aren’t applied. When thinking is on, responses may include message.reasoning_content. When thinking is off (reasoning_effort: "none"), reasoning_content is typically null. Details: Reasoning.
If both reasoning_effort: "auto" and a thinking kwargs mapping are present, Fireworks drops "auto" first, then applies the kwargs mapping (so enable_thinking: false still becomes "none").

Example: tools with thinking off

Prompt truncation

If you send both, prompt_truncate_len wins.

Structured outputs (guided_*)

NIM/vLLM guided decoding fields map onto Fireworks response_format: If more than one guided_* field is present, priority is guided_jsonguided_grammarguided_choice. An explicit response_format in the request always wins over guided fields. guided_regex is not supported (Fireworks grammars are ABNF-style). That field is stripped so the request doesn’t 400 — use guided_grammar or native response_format instead.

Fields we ignore (stripped)

These NIM/vLLM extras have no Fireworks Chat Completions equivalent. Fireworks removes them so your request isn’t rejected. They do not change generation: guided_regex, guided_decoding_backend, stop_token_ids, include_stop_str_in_output, skip_special_tokens, spaces_between_special_tokens, best_of, use_beam_search, add_generation_prompt, continue_final_message, add_special_tokens, detokenize, allowed_token_ids, bad_words, include_reasoning, nvext
min_tokens is kept. Fireworks supports it natively — it is not stripped.
Anything else Fireworks already supports (top_k, min_p, repetition_penalty, and other native fields) passes through unchanged.

Prefer native parameters when you can

Good to know

  • Models that can’t disable reasoning. Mapping enable_thinking: falsereasoning_effort: "none" returns 400 on models that don’t allow "none" (same as sending reasoning_effort: "none" directly).
  • enable_thinking: true vs LiteLLM. Fireworks leaves model-default thinking (omits reasoning_effort). Some LiteLLM Fireworks mappings send "medium" instead. Set an explicit reasoning_effort when you need a specific tier.
  • Accepted string efforts include low, medium, high, xhigh, max, none, and (when the model supports it) adaptive. "auto" is dropped to the model default.
  • OpenAI-standard traffic is unchanged. Normal reasoning_effort values ("high", "low", …) and tool_choice: "auto" are not rewritten.

Next steps

Reasoning

Native reasoning_effort, streaming, and tool use

Structured responses

json_schema and grammar response_format

OpenAI compatibility

Use the OpenAI SDK with Fireworks