Back to Models
moonshotai logoMoonshot
kimi-k3

Kimi K3

Kimi K3 is a 2.8T parameter open-weight multimodal reasoning model from Moonshot AI. It is suited for complex coding, knowledge work, and long-horizon agentic workflows, and is particularly strong at...

7/16/2026
1,048,576 tokens
Input: $3.17/M
Output: $15.83/M

Specifications

Modalities

Input
text
image
Output
text

Supported Parameters

frequency_penalty
include_reasoning
max_tokens
presence_penalty
reasoning
reasoning_effort
response_format
stop
structured_outputs
tool_choice
tools

Reasoning Configuration

Default
Thinking on (effort: max)
Selectable effort levels
max
high
low
Turning thinking off
Possible (reasoning.enabled: false)

How to control thinking, and what it costs

Data policy

Prompt retention
Unknown — we could not confirm
Training
Not used for training

"Unknown" does not mean "safe". It means we could not confirm it.

Whether a provider trains on prompts is a declared value from our terms with them. Retention is determined from the upstream listing for every host this model can reach. Neither is guessed.

Measured performance

Time to first response (p50)1.5s

    Measured through FastMetal's own gateway over the last 30 days (656 first-response samples).

    Time to first response is measured to the first streamed chunk; throughput counts all output tokens, including reasoning tokens. These are observations, not a performance guarantee.

    Code Examples

    curl https://api.fastmetal.ai/v1/chat/completions \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer YOUR_API_KEY" \
      -d '{
        "model": "kimi-k3",
        "messages": [{"role": "user", "content": "Hello!"}]
      }'

    How Kimi K3 actually answers

    Real responses to our standard prompts, recorded on FastMetal.

    Count the number of 'r's in 'strawberry'

    Count the number of 'r's in 'strawberry'. Explain your reasoning step by step.

    # Counting the 'r's in "strawberry" **Step 1: Write out each letter with its position** | Position | Letter | |----------|--------| | 1 | s | | 2 | t | | 3 | **r** ✓ | | 4 | a | | 5 | w | | 6 | b | | 7 | e | | 8 | **r** ✓ | | 9 | **r** ✓ | | 10 | y | **Step 2: Identify each 'r'** - Position 3: the 'r' in "st**r**" - Position 8: the first 'r' in "be**r**ry" - Position 9: the second 'r' in "ber**r**y" **Step 3: Verify by splitting the word** "Strawberry" = "straw" + "berry" - "straw" contains **1** r - "berry" contains **2** r's **Answer: There are 3 r's in "strawberry."** 🍓
    12.2s response594 output tokens

    Debug This Error

    I'm getting the following error in my Node.js application: TypeError: Cannot read properties of undefined (reading 'map') at UserList (/app/components/UserList.js:12:25) at renderWithHooks (/app/node_modules/rea…

    ## What's causing it The error means `users` is `undefined` when the component renders — `.map()` only exists on arrays, so calling it on `undefined` throws. Your component code is fine; the problem is **upstream**: whatever renders `<UserList />` isn't passing a valid array. The most common culprit is **async data fetching with uninitialized state** in the parent: ```jsx function App() { const [users, setUsers] = useState(); // ← undefined! useEffect(() => { fetch('/api/users') .then(res => res.json()) .then(setUsers); }, []); return <UserList users={users} />; // undefined on first render } ``` The component renders *before* the fetch resolves, so `users` is `…
    47.5s response1756 output tokens

    Code Review

    Please review the following Python function and suggest improvements for readability, performance, and best practices: def get_data(url, retries=3): import requests import time for i in range(retries):…

    This works, but there are several issues worth addressing. Here's a breakdown, followed by an improved version. ## Issues ### Correctness & best practices 1. **Bare `except:`** — catches *everything*, including `KeyboardInterrupt` and programming bugs like `KeyError` on a malformed item (which then get pointlessly retried). Catch `requests.RequestException` specifically. 2. **Silent failures** — errors are swallowed with no logging, and returning `[]` makes "API is down" indistinguishable from "no active items." At minimum, log; ideally, raise after the final attempt. 3. **Retrying non-retryable errors** — a 400/401/404 will never succeed on retry, but the code sleeps and retries anyway. O…
    57.6s response8060 output tokens

    Compare these answers side by side with other models →

    Frequently asked questions

    How much does the Kimi K3 API cost?
    On FastMetal, Kimi K3 is billed per token: $3.17 per 1M input tokens and $15.83 per 1M output tokens on a US-dollar account, before tax. Usage is drawn from a prepaid balance; there is no subscription or monthly fee.
    Can I call Kimi K3 with the OpenAI SDK?
    Yes. Point base_url at https://api.fastmetal.ai/v1 and pass "kimi-k3" as the model; existing OpenAI-style code works unchanged, including streaming, tool calls and structured output.
    What is the context window of Kimi K3?
    1,048,576 tokens, shared between the prompt and the response.
    What do I need to try Kimi K3?
    Create an account and add credit; the model is then available both in the browser chat and over the API. There is no contract or minimum spend.

    Try Kimi K3 right now

    Kimi K3 is available on FastMetal through one API key. Start in the browser, or call it from the OpenAI SDK.