Request
Body parameters
Each message has a
role and content:
Conversation affinity
For multi-turn requests, include a stable, opaqueconversation_id in the JSON
body. Use the same value for every turn in one conversation and a different
value for each separate conversation. Prism uses it to keep related requests on
the same inference worker so repeated prompt prefixes can be reused.
conversation_id controls routing only. It does not store conversation state,
so include the complete message history required for each response.
Image input
deepseek-v4.1-flash accepts images in user messages using the standard
OpenAI image_url content part. Pass the image as a base64 data URL:
detail
field accepts auto, low, or high. Image input is supported by
deepseek-v4.1-flash and gemma-4-31b. The complete JSON request, including
base64 expansion, must fit within the 9.5 MB request limit.
Reasoning
DeepSeek-V4.1-Flash reasons before it answers. When the request carries no reasoning control, the provider default applies and the firstcontent token
arrives only after the model finishes thinking. Set reasoning_effort to
shorten or disable that phase:
Gemma 4 accepts the same values;
minimal runs as low, and xhigh and max
run as high.
reasoning: { "enabled": false } is equivalent to reasoning_effort: "none",
and reasoning.effort accepts the same values, so OpenRouter-style clients work
unchanged. When both fields are present, reasoning_effort wins unless
reasoning.enabled is false.
Reasoning text is returned in message.reasoning_content and, when streaming,
in delta.reasoning_content chunks that precede the first delta.content.
Reasoning tokens count toward max_tokens and usage.completion_tokens and are
billed as output tokens. Benchmarks that time only delta.content measure
thinking time as time to first token; use none or low when latency matters
more than deliberation.
Response
finish_reason is commonly:
Streaming
Setstream: true. The response uses text/event-stream and ends with
data: [DONE].