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: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.
Thinking and reasoning
NIM clients usually toggle thinking withchat_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_json → guided_grammar → guided_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.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: false→reasoning_effort: "none"returns 400 on models that don’t allow"none"(same as sendingreasoning_effort: "none"directly). enable_thinking: truevs LiteLLM. Fireworks leaves model-default thinking (omitsreasoning_effort). Some LiteLLM Fireworks mappings send"medium"instead. Set an explicitreasoning_effortwhen 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_effortvalues ("high","low", …) andtool_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