Inference APIs
Models/Chat/Kimi K2.7 Code
ChatReasoningCodingTool calling262K context
Context window
262K tokens
Modality
Text → Text
Input
$0.89 / 1M tokens
Cached input
$0.18 / 1M tokens
Output
$4.42 / 1M tokens
Time to first token
0.87 s
First answer word
37.34 s at default reasoning
Output speed
40.7 tok/s
Model ID
moonshotai/Kimi-K2.7-Code

Quickstart

You need an API key to call this model. Create a free account or log in.

Set INFERENCE_API_KEY to your key from the API Keys page, then run:

curl https://api.inferenceapis.com/v1/chat/completions \
  -H "Authorization: Bearer $INFERENCE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "moonshotai/Kimi-K2.7-Code",
    "messages": [
      {"role": "system", "content": "You are a helpful assistant."},
      {"role": "user", "content": "Hello! What can you do?"}
    ]
  }'
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.inferenceapis.com/v1",
    api_key=os.environ["INFERENCE_API_KEY"],
)
response = client.chat.completions.create(
    model="moonshotai/Kimi-K2.7-Code",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Hello! What can you do?"},
    ],
)
print(response.choices[0].message.content)
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.inferenceapis.com/v1",
  apiKey: process.env.INFERENCE_API_KEY,
});
const response = await client.chat.completions.create({
  model: "moonshotai/Kimi-K2.7-Code",
  messages: [
    { role: "system", content: "You are a helpful assistant." },
    { role: "user", content: "Hello! What can you do?" },
  ],
});
console.log(response.choices[0].message.content);

When to use it

A good fit when
  • Coding agents: it is the coding-tuned model of Moonshot's Kimi family
Look elsewhere when
  • You need full-precision weights; our upstream serves this model at FP4

What it costs in practice

WorkloadCost
Chat assistant — 10,000 turns of 800 tokens in, 300 out$20.38
Long prompts or RAG — 10,000 requests of 8,000 in, 500 out$93.30
Generation-heavy — 10,000 requests of 500 in, 2,000 out$92.85

Computed from the live rates below. This is a reasoning model, and thinking is billed as output, so real output counts run above the visible answer; see controlling reasoning to keep that down. There is no subscription or minimum; new accounts start with free credit.

Endpoint

POST https://api.inferenceapis.com/v1/chat/completions
Headers Authorization: Bearer $INFERENCE_API_KEY
Content-Type: application/json
Compatible OpenAI wire format. /openai/v1/… is accepted too, so Groq-style base URLs work with only the host changed.

Model IDs and aliases

Send any of these as model; they all resolve to this model and bill at its rate.

IDNote
moonshotai/Kimi-K2.7-CodeCanonical
kimi-k2.7-codeAlias

Request body

ParameterTypeDescription
model required string Model ID: moonshotai/Kimi-K2.7-Code — also accepted: kimi-k2.7-code
messages required array Conversation so far. Each item has a role (system, user or assistant) and content.
max_tokens integer Maximum number of tokens to generate (includes reasoning tokens — use a few hundred or more).
temperature number Sampling temperature. Higher values give more varied output.
top_p number Nucleus sampling cutoff.
stream boolean Stream the response as server-sent events. The final chunk includes usage.
tools array Tool definitions for function calling (OpenAI format).
response_format object {"type": "json_object"} for JSON mode.
stop string | array Sequences where the model stops generating.
seed integer Seed for more reproducible sampling.

Response

200 OK · application/json
{
  "id": "chatcmpl-abc123",
  "object": "chat.completion",
  "model": "moonshotai/Kimi-K2.7-Code",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Hi! I can answer questions, write and edit text, help with code and more.",
        "reasoning": "The user is greeting me and asking about capabilities..."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": { "prompt_tokens": 28, "completion_tokens": 17, "total_tokens": 45 }
}

Controlling reasoning

Send reasoning_effort: "none" to switch thinking off. On our test question this model used 29 completion tokens by default and 2 with thinking off, and the answer started immediately instead of after the reasoning. Model families disagree on the parameter for this, and the wrong one is silently ignored, so the gateway accepts one spelling on every model (also "minimal", reasoning: {"enabled": false} and thinking: {"type": "disabled"}) and sends the switch this model honours; the X-Thinking: off response header confirms it. On the Responses API use reasoning: {"effort": "minimal"}. Leave thinking on for multi-step coding and maths; turn it off for extraction, classification, routing and chat. All models compared.

Python · openai SDK
resp = client.chat.completions.create(
    model="moonshotai/Kimi-K2.7-Code",
    reasoning_effort="none",        # thinking off; omit it to let the model reason
    messages=[{"role": "user", "content": "Extract the invoice number from: ..."}],
    max_tokens=500,
)
print(resp.choices[0].message.content)

Token counts are single measurements from September 17, 2026 and vary with the question; the direction is what matters.

Tested on this endpoint

Tool calling (tools, tool_calls)Works
JSON mode (response_format: json_object)Not supported
Schema-constrained output (response_format: json_schema)Not supported
Streaming with usage in the final chunkWorks
System prompt followedWorks
Reasoning tokens reported in usageNot supported

Each row is a live request we sent on September 17, 2026, not a claim copied from a model card. Streamed and parallel tool calls and tool_choice were tested too: full matrix for every model. Request examples are in the API documentation.

Pricing

Input$0.89 / 1M tokens
Cached input$0.18 / 1M tokens
Output$4.42 / 1M tokens
BillingPay as you go from prepaid credits. No subscription, no daily request or token cap. See all pricing.

Notes

  • It thinks for a long time: on a simple 120-word writing prompt it spent about 37 seconds before the first visible word in our measurement. Stream the response, and keep it for coding tasks where that thinking pays off.
  • Tool calling passed our test. JSON mode did not: with response_format set, the JSON arrived in reasoning_content and content was empty. Ask for JSON in the prompt instead, or use a model where JSON mode is verified.
  • Served at FP4 precision by the upstream provider.
  • The thinking is returned in reasoning_content; the upstream does not report a separate reasoning-token count for this model.

Compare Kimi K2.7 Code with…

Errors

Errors use the OpenAI envelope: {"error": {"message", "type", "code"}}. 401 missing or invalid key · 402 insufficient_balance · 404 model_not_found · 503 model_unavailable · 502 backend error, safe to retry. Full table with what to retry: API documentation. Errors from other providers: provider error reference.