Summary
- Function and tool calling:
toolsandtool_choiceare silently ignored, so the model never sees them. - Structured outputs and JSON mode:
response_formatis silently ignored. - Vision: image inputs are rejected. Message content must be plain text.
- Audio: no audio input or output, speech synthesis, or transcription.
- Embeddings: no
/v1/embeddingsendpoint.
Available endpoints
These are the endpoints available to API clients. Every other OpenAI API path returns404 Not Found in the standard OpenAI error envelope.
Request parameters
Chat completions requests are validated against an allowlist. Every parameter falls into one of three groups: forwarded to the model, silently ignored, or rejected with a400 error.
Supported
These parameters are accepted and passed through to the model:model,messagestemperature,top_p,top_k,min_p,presence_penalty,frequency_penalty,repetition_penalty,seedmax_tokens,max_completion_tokens,stopn(only1is accepted; any other value is rejected with a400error)stream,stream_options(include_usage,include_obfuscation)logprobs,top_logprobs,user,session_idreasoning(object witheffort,max_tokens,enabled, andexclude)reasoning_effort(folded intoreasoning.effort; an explicitreasoning.effortwins)
Silently ignored
The following parameters do not produce an error. For client compatibility, Kyara removes unrecognized top-level parameters from the request instead of rejecting it. Sending
tools or response_format returns a normal text response. The model never sees those fields, so tool calls and structured output simply will not happen.tools,tool_choice,functions,parallel_tool_callsresponse_format(JSON mode and structured outputs)logit_bias,predictionmodalities,audio,web_search_optionsstore,metadata,service_tier
Rejected with an error
The following request shapes return a400 validation error. The error body follows the OpenAI envelope; message explains the problem and param names the offending field, for example messages.0.tool_calls.
- Message
contentthat is not a plain string. Multimodal content arrays containingimage_urlor audio parts are rejected. - Message roles other than
system,developer,user, orassistant. There is notoolrole. - Unknown fields inside
messages,stream_options, orreasoningobjects. Message objects accept onlyrole,content,name,reasoning,reasoning_content, andreasoning_details. - A
session_idlonger than 256 characters.
Notes
top_k,min_p,repetition_penalty, andsession_idare Kyara extensions beyond the OpenAI standard. See the chat completions reference for details.- Requests without
max_tokensormax_completion_tokensget a default output limit of8192tokens. Explicit values above the model’s maximum output length are lowered to that maximum. - To control reasoning, send
"reasoning": { "effort": "medium" }. The top-levelreasoning_effortalso works and is folded intoreasoning.effort, with an explicitreasoning.effortwinning. - Support for sampling parameters varies per model, so check the catalog.