Skip to content

KwaiKAT KAT-Coder Models

KwaiKAT (Kwaipilot / Kuaishou StreamLake) KAT-Coder models are agentic coding models built for multi-step software work inside real repositories. They are called with the kwaikat/... canonical model id over /v1/chat/completions.

ModelContextInput / Output / Cache Read ($/1M)Note
kwaikat/kat-coder-pro-v2.5256K0.74 / 2.96 / 0.15Flagship; repository-scale agentic work.
kwaikat/kat-coder-air-v2.5256K0.15 / 0.60 / 0.03Cost-efficient; high-volume workflows.

Both models support tool/function calling, base64 image input, and prompt-cache reads.

Terminal window
curl "$LLMTR_BASE_URL/v1/chat/completions" \
-H "Authorization: Bearer llmtr-your_key" \
-H "Content-Type: application/json" \
-d '{
"model": "kwaikat/kat-coder-pro-v2.5",
"messages": [
{ "role": "user", "content": "Run the tests in this repo and fix the failing one." }
],
"max_tokens": 2048
}'

KAT-Coder models reason step by step on every request before answering; reasoning cannot be turned off and fields such as reasoning_effort are ignored. Reasoning tokens are returned inside completion_tokens and billed as output (not charged separately).

The practical consequence: if max_tokens is too low, the budget can be spent during reasoning and content comes back empty with finish_reason length. Keep max_tokens comfortable even for short answers (recommended: at least 1024). See Reasoning Effort for details.

The models accept images only as base64 data URLs (data:image/...;base64,...). Remote http(s) image URLs are not supported and the gateway rejects them with 400 unsupported_input.

Terminal window
curl "$LLMTR_BASE_URL/v1/chat/completions" \
-H "Authorization: Bearer llmtr-your_key" \
-H "Content-Type: application/json" \
-d '{
"model": "kwaikat/kat-coder-air-v2.5",
"messages": [
{
"role": "user",
"content": [
{ "type": "text", "text": "Summarize the error message in this screenshot." },
{ "type": "image_url", "image_url": { "url": "data:image/png;base64,<base64>" } }
]
}
],
"max_tokens": 1024
}'

Standard OpenAI tools / tool_choice fields are supported. When the model calls a tool, finish_reason is tool_calls and content stays empty. See Tool Calling for the general flow.

When you resend the same prompt prefix, prompt-cache read kicks in; usage.prompt_tokens_details.cached_tokens is populated and those tokens are billed at the cache-read price. The cache warms up after a few requests. There is no cache-write fee.