Kimi K3
Long-context reasoning for coding, visual analysis, and connected knowledge work.
POST /v1/chat/completions
Connection details
| Setting | Value |
|---|---|
| SDK base URL | https://bulktoken.ai/v1 |
| Model ID | kimi-k3 |
| Authentication | Authorization: Bearer YOUR_BULKTOKEN_API_KEY |
| Protocol | OpenAI-compatible Chat Completions |
Availability: Published. Check available models before calling.
Create a key in API Keys, check your account credits, and store the key in BULKTOKEN_API_KEY. Install openai for the Python or Node.js example. See Quick Start for setup commands.
Call Kimi K3
The examples stream answer text and use the exact BulkToken model ID. For a single JSON response, set stream to false and read choices[0].message.content.
curl -N https://bulktoken.ai/v1/chat/completions \
-H "Authorization: Bearer $BULKTOKEN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "kimi-k3",
"messages": [
{
"role": "user",
"content": "Explain how a hash table works in three sentences."
}
],
"stream": true
}'import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["BULKTOKEN_API_KEY"],
base_url="https://bulktoken.ai/v1",
timeout=120.0,
)
stream = client.chat.completions.create(
model="kimi-k3",
messages=[{"role": "user", "content": "Explain how a hash table works in three sentences."}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.BULKTOKEN_API_KEY,
baseURL: "https://bulktoken.ai/v1",
timeout: 120_000,
});
const stream = await client.chat.completions.create({
model: "kimi-k3",
messages: [{ role: "user", content: "Explain how a hash table works in three sentences." }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}Use it in your application
Provide the question and relevant source material in messages. Start with the text request below. Media input has model-specific encoding and size requirements; do not treat support for video understanding as a video-generation endpoint.
Example task: Compare these technical proposals and explain the trade-offs with references to the supplied text.
Reasoning is always on. The published default completion budget is 131,072 tokens, including reasoning and the final answer. The maximum is a ceiling, not the budget to use on every request.
Inputs and request budgets
| Published specification | Value |
|---|---|
| Input | Text, image, video |
| Output | Text, tool calls, JSON |
| Context window | 1,048,576 tokens |
| Maximum output | 1,048,576 tokens (published ceiling) |
These are published model specifications, not a guarantee that every route supports the maximum. Input, output, and any reasoning budget must fit the selected route’s limits. A maximum is not a recommended request size. See the model catalog for current listings; models awaiting channel setup are not callable yet.
The examples here cover text input. Image/video encoding, file-size limits, and reasoning controls are route-specific; verify those options before adding media to a production integration.
Streaming, tools, and JSON
The published model catalog lists streaming, tool calling, and structured output. Start with the minimal call above, then add the feature you need:
- Streaming: consume answer deltas and handle empty chunks and interruption.
- Tool calling: execute tools in your application and return results with matching IDs.
- JSON output: validate responses and check the exact format supported by the route.
Support for an OpenAI-compatible endpoint does not imply support for all provider-specific parameters or every OpenAI API.
Pricing and troubleshooting
BulkToken charges 90% of the official reference rates (10% off). Cache reads and cache writes are separate categories; writes use 5-minute or 1-hour TTL rates. A cache hit is not also a cache write. Charges depend on the usage categories reported by the route.
See the model catalog for current input, output, and applicable cache rates. Models awaiting channel setup will appear after publication. Verify actual requests in Usage Logs. Cache discounts apply to reported cache usage, not simply to repeated text.
If a request fails, check the complete key, its model restrictions, your account credits, and the exact model ID kimi-k3. For 429 or temporary service failures, follow Errors and retries.