Changelog
Last updated:
On this page
- 2026-10
- Tool arguments follow input_schema
- PDFs and forced tool choice in Messages
- Streaming in requests with tools
- Responses API and Codex CLI
- 2026-09
- Thinking budget and vLLM 0.30
- 2026-08
- Async transcription job API
- Public registration opened
- 2026-06
- Web search
- 2026-05
- Prompt caching on /v1/messages
- 2026-04
- qwen3.6:35b-a3b
Notable API changes, newest first. Minor bug fixes and internal improvements are not listed.
2026-10
Tool arguments follow input_schema
A forced tool in POST /v1/messages (tool_choice tool or any) now constrains the
arguments to the tool's input_schema, like response_format with json_schema in chat
completions. Before, a required string field could come back as null. "strict": true
on a tool also constrains when the model picks the tool on its own, on
qwen3.6:35b-a3b and qwen3.5:9b. The response header x-staik-tool-schema-enforced
shows whether the whole schema was constrained. See
Messages.
PDFs and forced tool choice in Messages
POST /v1/messages now reads document blocks. A base64 PDF becomes each page's text
layer plus an image of the page, page by page, the way Claude reads PDFs. Up to 20 pages
per PDF. tool_choice (auto, any, tool, none) and disable_parallel_tool_use
now reach the model, so forcing a tool gives structured data. Before, both the document
and the tool choice were ignored without an error. Image and document URLs now return
400 instead of being dropped, and errors use Anthropic's format. See
Messages.
Streaming in requests with tools
Requests with tools and stream: true now stream text and reasoning token by token,
on /v1/chat/completions, /v1/messages and /v1/responses. Previously the whole
response arrived only once the model was done. A tool call is delivered as one complete
delta once the model has finished it. Agents such as Claude Code, OpenCode and Codex
therefore show the model's text right away. See Streaming.
Responses API and Codex CLI
New endpoint POST /v1/responses, compatible with OpenAI's Responses API. It makes
Codex CLI work against staik, since Codex has only spoken
the Responses API since February 2026. The endpoint is stateless: previous_response_id
returns 400.
429 responses now state the reason. The response has an error object whose code is
insufficient_quota when your plan's token limit is reached and capacity_exceeded when
it's the capacity ceiling, and the X-Staik-Limit-Reason header is quota or capacity. See Errors.
2026-09
Thinking budget and vLLM 0.30
The thinking aliases (qwen3.6:35b-a3b-thinking, qwen3.5:9b-thinking) now get an
automatic thinking budget, so the model always gets to answer within max_tokens instead
of reasoning until the budget runs out. Send thinking_token_budget to set your own
budget. All models now run on vLLM 0.30.
Correction: the reasoning is delivered in the reasoning field (not reasoning_content
as the documentation previously stated). See Thinking and reasoning.
2026-08
Async transcription job API
New endpoints for long audio files: POST /v1/audio/transcriptions/jobs accepts up to
100 MB, responds immediately with a job_id, and transcribes in the background. Poll
GET /v1/audio/transcriptions/jobs/{id} until status is completed. The gateway
chunks the audio, transcribes, and stitches the result — speakers stay consistent
across the whole file.
curl https://api.staik.se/v1/audio/transcriptions/jobs \
-H "Authorization: Bearer sk-st-your-key" \
-F file=@long-meeting.m4a \
-F model=kb-whisper-large \
-F language=sv \
-F diarize=truePublic registration opened
Pay-as-you-go registration via /register is now the public way in — 100,000 welcome tokens valid for 30 days. The Early Adopter program is closed to new signups.
2026-06
Web search
Server-side web search in chat completions via web_search: true, plus a standalone
POST /v1/tools/web-search. Self-hosted SearXNG — searches never leave the
infrastructure.
2026-05
Prompt caching on /v1/messages
The Anthropic endpoint supports cache_control breakpoints: reused context is billed
as discounted cache_read instead of full price every turn. TTL 5 minutes, or
1 hour with ttl: "1h".
2026-04
qwen3.6:35b-a3b
The default model was upgraded to qwen3.6:35b-a3b (262K context window).
No code changes needed
The old name qwen3.5:35b-a3b works as a backwards-compatible alias —
existing code keeps working unchanged.