StepFun
Four StepFun chat models are available on LLMTR. All of them are called through /v1/chat/completions, produce text, and reason before they answer.
| Model | Context | Input / Cache read / Output ($/1M) | Input |
|---|---|---|---|
stepfun/step-5-preview |
1,024,000 | 1 / 0.1 / 2.7 | Text, image, video |
stepfun/step-3.7-flash |
256,000 | 0.2 / 0.04 / 1.15 | Text, image, video |
stepfun/step-3.5-flash |
256,000 | 0.1 / 0.02 / 0.3 | Text |
stepfun/step-3.5-flash-2603 |
256,000 | 0.1 / 0.02 / 0.3 | Text |
No platform margin is added to model prices; the margin applies only when you top up credit.
Step 5 Preview
Section titled “Step 5 Preview”stepfun/step-5-preview is the preview release of StepFun's flagship model for agentic work. It is suited to software development, long-document analysis across several sources, multi-step tool-using flows, and interpreting images or video. StepFun publishes it as "Preview"; the catalog shows it with the Beta label.
curl "$LLMTR_BASE_URL/v1/chat/completions" \ -H "Authorization: Bearer llmtr-your_key" \ -H "Content-Type: application/json" \ -d '{ "model": "stepfun/step-5-preview", "messages": [ { "role": "system", "content": "Answer briefly." }, { "role": "user", "content": "Find the root cause in this error log and suggest a fix." } ], "reasoning_effort": "medium", "max_tokens": 4096 }'from openai import OpenAI
client = OpenAI(base_url="https://llmtr.com/v1", api_key="llmtr-your_key")
response = client.chat.completions.create( model="stepfun/step-5-preview", messages=[{"role": "user", "content": "List the findings these three reports share."}], reasoning_effort="low", max_tokens=4096,)print(response.choices[0].message.content)print(response.usage)Output length
Section titled “Output length”StepFun states a 64K-token output for this model. LLMTR applies no lower ceiling and does not refuse a larger max_tokens. For requests where you expect long output, check finish_reason to confirm the answer completed: length means the output was cut at the budget.
Reasoning effort
Section titled “Reasoning effort”Reasoning depth is selected with reasoning_effort. The accepted levels differ by model:
| Model | Accepted levels |
|---|---|
stepfun/step-5-preview |
low, medium, high |
stepfun/step-3.7-flash |
low, medium, high |
stepfun/step-3.5-flash-2603 |
low, high |
stepfun/step-3.5-flash |
No level can be selected |
A level that is not listed (xhigh, max, or any level sent to Step 3.5 Flash) is refused with 400. The level can also be given as a suffix on the model id:
stepfun/step-5-preview -> defaultstepfun/step-5-preview:low -> low effort, faster answerstepfun/step-5-preview:high -> high effortThe model also reasons when you send no reasoning_effort; the parameter only sets the depth. The reasoning trace arrives in the response's message.reasoning_content field (delta.reasoning_content when streaming), and the answer itself is in content.
Reasoning tokens are counted in usage.completion_tokens and billed at the output price; completion_tokens_details.reasoning_tokens does not report a separate number on these models. Because reasoning is drawn from the max_tokens budget, a small budget can stop the model before it writes the answer, with finish_reason: "length". Treat such a response as incomplete: in a non-streaming call content is not empty but carries the cut-off reasoning text. Keep the budget generous even when you expect a short answer; a few thousand tokens is a safe starting point.
See reasoning effort for the general behaviour.
Image and video input
Section titled “Image and video input”stepfun/step-5-preview and stepfun/step-3.7-flash accept images and video.
- Image: an
image_urlpart, asdata:image/...;base64,. StepFun accepts JPG, PNG, WebP, and static GIF. - Video: a
video_urlpart, asdata:video/mp4;base64,(orvideo/quicktime). Base64 video is limited to about 9 MB. stepfile://references from StepFun's Files API are not accepted through LLMTR.- A message can carry at most 16 content parts.
curl "$LLMTR_BASE_URL/v1/chat/completions" \ -H "Authorization: Bearer llmtr-your_key" \ -H "Content-Type: application/json" \ -d '{ "model": "stepfun/step-5-preview", "messages": [{ "role": "user", "content": [ { "type": "text", "text": "Which colours appear in this video?" }, { "type": "video_url", "video_url": { "url": "data:video/mp4;base64,AAAAIGZ0eXBpc29t..." } } ] }], "reasoning_effort": "low", "max_tokens": 1024 }'For an image, use the part { "type": "image_url", "image_url": { "url": "data:image/png;base64,iVBORw0KGgo..." } } in the same request.
Tool calling
Section titled “Tool calling”All four models support tool/function calling. When the model calls a tool, content is empty and finish_reason is tool_calls.
curl "$LLMTR_BASE_URL/v1/chat/completions" \ -H "Authorization: Bearer llmtr-your_key" \ -H "Content-Type: application/json" \ -d '{ "model": "stepfun/step-5-preview", "messages": [{ "role": "user", "content": "Weather in Istanbul?" }], "tools": [{ "type": "function", "function": { "name": "get_weather", "description": "Returns the current weather for a city", "parameters": { "type": "object", "properties": { "city": { "type": "string" } }, "required": ["city"] } } }], "max_tokens": 1024 }'Return the tool result in a second turn with a role: "tool" message. See tool calling for the general flow.
Structured output
Section titled “Structured output”All four models produce JSON output with response_format: { "type": "json_object" }. stepfun/step-5-preview also produces output that conforms to a schema you supply with json_schema:
{ "model": "stepfun/step-5-preview", "messages": [{ "role": "user", "content": "Give the capital of Turkey and its plate code." }], "response_format": { "type": "json_schema", "json_schema": { "name": "city", "strict": true, "schema": { "type": "object", "properties": { "capital": { "type": "string" }, "plate_code": { "type": "integer" } }, "required": ["capital", "plate_code"], "additionalProperties": false } } }, "max_tokens": 1024}Prompt cache
Section titled “Prompt cache”StepFun caches repeated prompt prefixes of 256 tokens or more automatically; nothing needs to be marked in the request. The number of tokens served from cache is returned in usage.prompt_tokens_details.cached_tokens, and those tokens are billed at the cache-read price. There is no separate charge for writing to the cache. The cache is a discount, not a guarantee: a hit depends on the prefix staying the same and on traffic. Putting the long, fixed part (system message, document, tool definitions) at the start of the prompt improves the chance of a hit.
Streaming
Section titled “Streaming”All four models stream for real with stream: true, and the final chunk carries exact usage. See streaming for details.
Data handling
Section titled “Data handling”StepFun requests are processed on StepFun's own infrastructure; these models are not hosted on LLMTR's own servers.