Fix a bug
Here is the code and the error. Find the cause and return the whole fixed file. <code> <stack trace>
system: You are a senior engineer. One line with the cause first, then the fixed file.max_tokens: 4000
Kimi API (Moonshot AI): Kimi K2.7 Code for programming through one Zerocoder key. OpenAI-compatible chat/completions, streaming, function calling.
Kimi is Moonshot AI's family of language models; Kimi K2.7 Code is tuned for programming: it writes and edits code, explains errors and works in agent loops with function calls. Through Zerocoder it is served on the OpenAI-compatible /v1/chat/completions with streaming and function calling — IDE plugins and agents that speak the OpenAI API connect as is.
You pay per token — input and output at their own prices — with a minimum per call, and a response that never starts is refunded. Below are the live model price, a cost calculator and integration samples.
The live GET /v1/models price list in US dollars. Minimum per call: $0.00556. Endpoints: /v1/messages, /v1/chat/completions
| Model | Price | Unit |
|---|---|---|
Kimi K2.7 Code kimi-k2.7-code · Moonshot AI | input $0.798 / output $3.36 | per 1M tokens |
Pick a model and a volume — the calculator uses the same formulas as API billing.
input $0.798 / output $3.36 per 1M tokens
minimum per call: $0.00556
Prices from GET /v1/models in US dollars at the internal rate. Failed generations are not charged.
The OpenAI SDK in Python and Node.js, the Anthropic SDK or curl: swap the base URL and the key — requests, streaming and response handling stay as they are. Kimi answers on POST /v1/messages and /v1/chat/completions.
Base URLhttps://zerocoder.com /api/v1Anthropic SDK — https://zerocoder.com, without /v1
Model in the samples — kimi-k2.7-code; any model from the table works
from openai import OpenAI client = OpenAI( base_url="https://zerocoder.com/api/v1", api_key="zc-sk-…",) r = client.chat.completions.create( model="kimi-k2.7-code", messages=[{"role": "user", "content": "Hello!"}],)print(r.choices[0].message.content)import OpenAI from "openai"; const client = new OpenAI({ baseURL: "https://zerocoder.com/api/v1", apiKey: "zc-sk-…",}); const r = await client.chat.completions.create({ model: "kimi-k2.7-code", messages: [{ role: "user", content: "Hello!" }],});console.log(r.choices[0].message.content);import Anthropic from "@anthropic-ai/sdk"; const client = new Anthropic({ // without /v1: the SDK appends /v1/messages itself baseURL: "https://zerocoder.com/api", apiKey: "zc-sk-…",}); const msg = await client.messages.create({ model: "kimi-k2.7-code", max_tokens: 300, messages: [{ role: "user", content: "Hello!" }],});console.log(msg.content[0].text);# Anthropic Messages formatcurl https://zerocoder.com/api/v1/messages \ -H "x-api-key: zc-sk-…" \ -H "content-type: application/json" \ -d '{"model": "kimi-k2.7-code", "max_tokens": 400, "messages": [{"role": "user", "content": "Hello!"}]}' # OpenAI chat/completions format, streamingcurl -N https://zerocoder.com/api/v1/chat/completions \ -H "authorization: Bearer zc-sk-…" \ -H "content-type: application/json" \ -d '{"model": "kimi-k2.7-code", "stream": true, "messages": [{"role": "user", "content": "Hello!"}]}'
From a key to production — six steps based on the real /api/v1 contracts. Each step links to the relevant docs section.
Sign up, open the API section of your account, top up the balance and create a zc-sk-… key. One key unlocks Kimi and every other model in the catalogue.
Read more →POST /v1/chat/completions (Bearer) or /v1/messages (x-api-key) with model and messages — OpenAI and Anthropic shapes, the SDKs work with a swapped base URL.
Read more →stream: true — the answer arrives as SSE chunks with a final billing event showing the real charge. The reserve is taken by max_tokens (default 8192), so set it to fit the task.
Read more →30 requests per minute per key: on 429 wait and retry with a growing pause; 402 — top up the balance; 400 — check model against GET /v1/models. Failed generations are not charged, so retrying is safe.
Read more →GET /v1/balance returns the balance and 30-day spend; every call's price comes back in the response — write it to your logs and set an alert threshold in your own monitoring.
Read more →Keep the key in server secrets, never in the frontend. For high Kimi volumes contact us — the limit is raised individually and companies can pay by invoice. Check the observed stability on the status page.
Read more →HTTP Request node: POST to the /api/v1 endpoint, x-api-key header and a JSON body built from workflow fields. For video add a Wait node and a second HTTP Request on GET ?id= in a loop until completed.
HTTP “Make a request” module: POST, Body type JSON, x-api-key header. The response is parsed automatically — the image url or the answer text flows into the next modules.
Webhooks by Zapier → Custom Request action: POST, Data — JSON with model and prompt, Headers — x-api-key. Response fields are available to the following Zap steps.
In Apps Script use UrlFetchApp.fetch with method post, contentType application/json and a payload from the cells: prompts in one column, results written to the next one.
A bot on aiogram, grammY or Telegraf calls the same HTTP API: user message → model request → reply in the chat. For video — poll the status and send the file from the finished URL.
For text models the official OpenAI and Anthropic SDKs work with a swapped base URL and our key — your application code stays the same. Images and video are a plain HTTP call from any language.

More than a key: we help wire Kimi and other models into your workflows — from audit to production, with invoice payment.
# 401 {"type":"error","error":{"type":"authentication_error","message":"Invalid or revoked API key."}}
# 402 {"type":"error","error":{"type":"billing_error","message":"Not enough API balance: …"}}
# 429 {"type":"error","error":{"type":"rate_limit_error","message":"…"}} ← 30 requests/min per key
# 400 {"type":"error","error":{"type":"invalid_request_error","message":"Unknown model \"…\". See GET /v1/models."}}
# /chat/completions uses the OpenAI envelope: {"error":{"message":"…","type":"…","code":"insufficient_balance"}}
# streaming: the reserve (by max_tokens) is settled after the answer; a failure before the first token is refunded
# event: billing {"charged_rub":…,"reserved_rub":…,"balance_rub":…,"unit":"1M_tokens","rub_per_mtok_in":…,"rub_per_mtok_out":…,"rub_per_mtok":…}
Numbers come from the public /status summary: the share of successful requests over a period for the whole API and for the category as a whole (the summary has no per-model breakdown), no SLA promises. Failed generations are not charged, so retrying is safe.
Tracking since Aug 8, 2026.
Coding assistants in the IDE and terminal via an OpenAI-compatible base URL
Agents that edit a repo, run tests and read logs through your functions
Pull request review and bug hunting in CI
Generating tests, migrations and boilerplate
Explaining unfamiliar code and drafting technical docs
Porting modules between languages or frameworks

Copy the prompt and the parameters into the request body — the fields are named exactly as in the /api/v1 contract. Replace the angle-bracket placeholders with your material.
Here is the code and the error. Find the cause and return the whole fixed file. <code> <stack trace>
system: You are a senior engineer. One line with the cause first, then the fixed file.max_tokens: 4000Write unit tests for the function below: normal cases, edge values and errors. <function code>
max_tokens: 3000Review this diff: bugs, vulnerabilities, needless complexity. As a list with line numbers. <diff>
max_tokens: 1500Fix the failing test in the repository.
tools: read_file, run_tests, search_codetool_choice: autoYour code runs the functions: the model returns tool_calls and you reply with a tool message.
Rewrite the module from Python to TypeScript, keeping the public interface and comments. <code>
max_tokens: 6000
Industries where this kind of generation becomes part of the workflow rather than an experiment.
Kimi is billed per token: two prices per million tokens — input and output — in the table above and in GET /v1/models, with the per-call minimum in min_rub. In coding tasks most of the spend is input context, so pass the model only the files and fragments it needs.
Tools that speak the OpenAI API connect by changing two values: the base URL to zerocoder.com/api/v1 and the key to zc-sk-…, with the Kimi id from the table as the model. Requests go to /v1/chat/completions with streaming and tools, so agent loops work as they do with OpenAI.
Yes. Kimi on /v1/chat/completions accepts OpenAI tools and tool_choice and returns tool_calls — that is how an agent reads files, runs tests and searches code through your functions. The model also answers in the Anthropic format (/v1/messages), but without tools.
A shared key limit of 30 requests per minute across all API endpoints; above it, 429 rate_limit_error — for heavy agent traffic contact us and we raise it individually. max_tokens sets the answer length and the reserve. Kimi takes no image input.
If the Kimi answer never starts, the reserve is refunded in full automatically. If the stream breaks midway, only the tokens actually generated per usage are charged. Format errors and rate limiting cost nothing.
Yes. Request an invoice in the API dashboard and pay by bank transfer; the credited amount is spent on Kimi and every other model with the same key. Card top-ups are instant, and accounting documents are available on request. No Moonshot AI account needed.
There are no free API credits: the wallet opens with a minimum first top-up, then every Kimi call is charged per token with a per-call minimum. For a trial give the model a small task with one file — the call's cost is shown in the billing block of the response.
Kimi in its K2.7 Code version is tuned for programming: writing and editing code, explaining errors, tests and agent work on a repository. For general copy and chat other catalogue models may suit better — the same key opens them all; just change the id in model.