We use cookies to enhance your experience, provide personalised content, and analyse our traffic; see our Cookie Policy.
moonshot-ai/kimi-k3.1-proAgentic coding and office work at half the price of Opus 5.5
Kimi K3.1 Pro is Moonshot AI's post-trained successor to Kimi K3, released on 23 October 2026. It reads text and images over 1,048,576 tokens of context and, according to Moonshot, is built for long-horizon coding, office documents and finance. On Moonshot's own benchmarks it scores 65.7 on Terminal-Bench 4.0, against 66.4 for Claude Opus 5.5, and leads SWE Marathon at 51.7.
It reasons by default, at maximum effort: on a short business calculation that meant 2,400 reasoning tokens, billed as output. Set reasoning_effort to "none" for a fast answer without reasoning. Tool calling, strict JSON schemas and JSON mode plug it into agents and pipelines.
On Tchavi you pay with mobile money, no bank card and no KYC. One account and one API key open 100+ models: swap the base URL, keep your OpenAI SDK, and your credits never expire.
Maximum effort, or none at all on request
Entire codebases and document sets as input
Reads images and screenshots with your text
Automatic or forced, for agents and pipelines
Strict structured output for your pipelines
Long answers in a single pass
Read this repository, find why the payment test fails and fix it, explaining each change.
From this sales ledger, build a month-by-month cash-flow table and flag the three riskiest months.
K3.1 Pro is Moonshot's newer, post-trained version, and on Tchavi it costs less: 4.39 / 21.95 credits per 1K tokens in / out, against 6.6 / 32 for Kimi K3 (model: "kimi-k3"). Both have 1,048,576 tokens of context and up to 943K of output. Keep K3 if you rely on top_p or the penalties, which K3.1 Pro ignores.
Send reasoning_effort: "none". A three-word greeting then took 15 output tokens instead of about 150, and a full business calculation answered in 6 seconds. Leave the field out to reason at maximum effort.
On 23 October 2026, minimal, low, medium and high each returned nonsense reasoning until max_tokens, with no answer, billed in full. Tchavi refuses them for free with a 400 until a new test shows they work. Omit the field, or use "none".
Images, yes, sent as base64. PDFs, no: it takes no PDF documents on Tchavi. For PDFs, pick Claude Sonnet 5 or GPT-6 Sol.
Swap the base URL for Tchavi's, use your Tchavi key and set model: "kimi-k3.1-pro" on /v1/chat/completions. The rest of your code stays the same.
Yes. Top up your Tchavi account with Orange Money, MTN MoMo, M-Pesa or another mobile money operator. No bank card is needed. Credits land as soon as the payment is confirmed and are deducted as you use them.
Yes. Keep your current OpenAI SDK, just change the base URL to Tchavi's (shown in the API tab) and use your Tchavi key. The rest of your code stays the same.
import Tchavi from '@tchavi/sdk';
const client = new Tchavi({ apiKey: 'API_KEY' });
const response = await client.chat.completions.create({
model: 'kimi-k3.1-pro',
messages: [
{
"role": "user",
"content": "Hello!"
}
],
});
console.log(response.choices[0].message.content);
console.log('Credits used:', response.tchavi.credits_used);Every parameter this model accepts on the API. Check the SDK for full typings.
modelRequiredID of the chat model (e.g. `kimi-k3.1-pro`).
messagesRequiredConversation messages. Each item has a `role` (system/user/assistant) and a `content` that's either a plain string or an array of content blocks (`text`, `image_url`, `document_url`).
temperature1Sampling temperature between 0 and 2. Higher values = more random.
max_tokensMaximum number of tokens to generate in the response.
max_completion_tokensOpenAI alias for `max_tokens`. Either field works; if both are sent, `max_completion_tokens` wins.
streamfalseIf true, partial message deltas are streamed as Server-Sent Events.
toolsFunction-calling toolbox. Pass an array of `{ type: "function", function: { name, description, parameters } }`. Returned tool calls land in `choices[].message.tool_calls`. Only models with `supportsTools: true` accept this.
tool_choiceHow the model picks among tools: `"auto"` (default), `"none"` to force a plain text reply, or `{ type: "function", function: { name } }` to force a specific tool. Only with `supportsTools: true`.
response_formatConstrain the output. Pass `{ type: "json_object" }` to force valid JSON (the model still needs a JSON instruction in your prompt). Only models with `supportsJsonMode: true` honour this.
top_p1Nucleus sampling: only tokens in the top `top_p` probability mass are considered.
seedInteger seed for deterministic output. The same seed + identical request yields the same completion when supported by the provider. OpenAI honours it; Anthropic ignores.
n1Number of completions to generate in one call. Defaults to 1; each extra completion is billed.
stream_optionsStreaming options, e.g. `{ "include_usage": true }` to receive a final SSE chunk with usage counts. Effective only when `stream: true`.
stopUp to 4 sequences where the API will stop generating further tokens.
frequency_penalty0Between -2.0 and 2.0. Positive values penalize tokens that have appeared frequently.
presence_penalty0Between -2.0 and 2.0. Positive values encourage the model to talk about new topics.
userEnd-user identifier passed to the upstream provider for abuse / moderation tracking. Should be stable per end-user.
logit_biasPer-token logit bias `{ "<tokenId>": <-100..100>, ... }`. OpenAI-specific; Anthropic ignores silently.
messages[].content[].image_urlAttach an image on a user message. Pass a content block `{ "type": "image_url", "image_url": { "url": ... } }`. PNG / JPEG / WebP, up to 4 per request. Only models with `supportsImageInput: true` accept this block (e.g. `gpt-4o`, `claude-opus-4-7`).
Estimated over 30 days, for a typical message: ~500 input + ~150 output tokens, billed to the thousandth of a credit.