curl -X POST https://api.vibetool.ai/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "kimi-k3",
"messages": [{"role": "user", "content": "Hello!"}]
}'
import openai
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.vibetool.ai/v1"
)
response = client.chat.completions.create(
model="kimi-k3",
messages=[{"role": "user", "content": "Hello!"}]
)
print(response.choices[0].message.content)
const response = await fetch('https://api.vibetool.ai/v1/chat/completions', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'kimi-k3',
messages: [{ role: 'user', content: 'Hello!' }]
})
});
const data = await response.json();
console.log(data.choices[0].message.content);
package main
import (
"bytes"
"fmt"
"net/http"
)
func main() {
url := "https://api.vibetool.ai/v1/chat/completions"
payload := []byte(`{"model": "kimi-k3", "messages": [{"role": "user", "content": "Hello!"}]}`)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(payload))
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
fmt.Println("Status:", resp.Status)
}
{
"id": "chat_202601201327_c17f839a",
"object": "chat.completion",
"model": "kimi-k3",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello! How can I assist you today?"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 8,
"completion_tokens": 10,
"total_tokens": 18
}
}
{
"error": {
"message": "Invalid request",
"type": "invalid_request_error",
"param": null,
"code": 400
}
}
{
"error": {
"message": "Invalid API Key provided",
"type": "authentication_error",
"param": null,
"code": 401
}
}
{
"error": {
"message": "Your credit balance is insufficient",
"type": "billing_error",
"param": null,
"code": 402
}
}
{
"error": {
"message": "Permission denied",
"type": "permission_error",
"param": null,
"code": 403
}
}
{
"error": {
"message": "Resource not found",
"type": "invalid_request_error",
"param": null,
"code": 404
}
}
{
"error": {
"message": "Conflict",
"type": "conflict_error",
"param": null,
"code": 409
}
}
{
"error": {
"message": "Rate limit reached for requests",
"type": "rate_limit_error",
"param": null,
"code": 429
}
}
{
"error": {
"message": "An internal server error occurred",
"type": "server_error",
"param": null,
"code": 500
}
}
{
"error": {
"message": "Service unavailable",
"type": "server_error",
"param": null,
"code": 503
}
}
Kimi Series
Kimi K3
Kimi K3 is Moonshot AI’s 2.8T-parameter flagship with always-on reasoning, a 1M-token context window, prompt caching, visual understanding, and tool orchestration. Call kimi-k3 through the Vibetool Unified API with OpenAI-compatible Chat Completions.
POST
/
v1
/
chat
/
completions
curl -X POST https://api.vibetool.ai/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "kimi-k3",
"messages": [{"role": "user", "content": "Hello!"}]
}'
import openai
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.vibetool.ai/v1"
)
response = client.chat.completions.create(
model="kimi-k3",
messages=[{"role": "user", "content": "Hello!"}]
)
print(response.choices[0].message.content)
const response = await fetch('https://api.vibetool.ai/v1/chat/completions', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'kimi-k3',
messages: [{ role: 'user', content: 'Hello!' }]
})
});
const data = await response.json();
console.log(data.choices[0].message.content);
package main
import (
"bytes"
"fmt"
"net/http"
)
func main() {
url := "https://api.vibetool.ai/v1/chat/completions"
payload := []byte(`{"model": "kimi-k3", "messages": [{"role": "user", "content": "Hello!"}]}`)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(payload))
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
fmt.Println("Status:", resp.Status)
}
{
"id": "chat_202601201327_c17f839a",
"object": "chat.completion",
"model": "kimi-k3",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello! How can I assist you today?"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 8,
"completion_tokens": 10,
"total_tokens": 18
}
}
{
"error": {
"message": "Invalid request",
"type": "invalid_request_error",
"param": null,
"code": 400
}
}
{
"error": {
"message": "Invalid API Key provided",
"type": "authentication_error",
"param": null,
"code": 401
}
}
{
"error": {
"message": "Your credit balance is insufficient",
"type": "billing_error",
"param": null,
"code": 402
}
}
{
"error": {
"message": "Permission denied",
"type": "permission_error",
"param": null,
"code": 403
}
}
{
"error": {
"message": "Resource not found",
"type": "invalid_request_error",
"param": null,
"code": 404
}
}
{
"error": {
"message": "Conflict",
"type": "conflict_error",
"param": null,
"code": 409
}
}
{
"error": {
"message": "Rate limit reached for requests",
"type": "rate_limit_error",
"param": null,
"code": 429
}
}
{
"error": {
"message": "An internal server error occurred",
"type": "server_error",
"param": null,
"code": 500
}
}
{
"error": {
"message": "Service unavailable",
"type": "server_error",
"param": null,
"code": 503
}
}
Overview
Kimi K3 is Moonshot AI’s 2.8T-parameter flagship language model, engineered for the most demanding production workloads. It combines always-on reasoning, a 1,048,576-token context window, and a 131,072-token output limit, so complex multi-step problems are handled automatically — no effort dial or configuration required. The context window is large enough to ingest an entire repository or book-length document in a single pass, while built-in prompt caching cuts latency and cost on repeated prefixes across long-running or multi-turn workloads. Kimi K3 also reads images alongside text and orchestrates tools natively, making it a strong foundation for repo-scale engineering, long document synthesis, and long-running agents. Accessing Kimi K3 through Vibetool gives you all of this behind a single OpenAI-compatible endpoint. Use one API key and one request format; Vibetool handles routing, authentication, and billing. Swap models, run A/B comparisons, and scale without touching your integration logic — your team stays focused on building, not managing upstream provider relationships.Model Slug:
kimi-k3Use this exact slug when making API requests to Vibetool.Model Specifications
- Architecture: Flagship transformer (2.8T parameters)
- Context Window: 1,048,576 tokens (1M tokens)
- Max Output Tokens: 131,072 tokens
- Input Modalities: Text, Image
- Output Modalities: Text
- Reasoning: Always-on (automatic, no effort dial)
- Prompt Caching: Yes
- Tool Orchestration: Yes (function calling)
Pricing
Pricing: See vibetool.ai/pricing for current rates.Use Cases
- Repo-Scale Engineering: Feed an entire repository into a single request — Kimi K3 can map the architecture, surface bugs, propose refactors, and generate new modules while staying coherent across hundreds of thousands of tokens. Prompt caching makes repeated analysis passes over the same codebase faster and cheaper.
- Long Document Synthesis: Analyze lengthy contracts, research papers, or regulatory filings without chunking. The 1M-token context window lets Kimi K3 answer questions, extract key facts, and synthesize insights from the full document in a single pass.
- Long-Running Agents: Run autonomous agents that call tools and persist context over dozens of turns. Always-on reasoning keeps the agent on-task, and the 131K output limit supports long-form reports or multi-file outputs in one completion.
- Multimodal Document Understanding: Pass screenshots, diagrams, or charts alongside text so Kimi K3 can reason over visual and textual evidence in the same context — useful for design reviews, data-heavy decks, and documentation audits.
curl -X POST https://api.vibetool.ai/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "kimi-k3",
"messages": [{"role": "user", "content": "Hello!"}]
}'
import openai
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.vibetool.ai/v1"
)
response = client.chat.completions.create(
model="kimi-k3",
messages=[{"role": "user", "content": "Hello!"}]
)
print(response.choices[0].message.content)
const response = await fetch('https://api.vibetool.ai/v1/chat/completions', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'kimi-k3',
messages: [{ role: 'user', content: 'Hello!' }]
})
});
const data = await response.json();
console.log(data.choices[0].message.content);
package main
import (
"bytes"
"fmt"
"net/http"
)
func main() {
url := "https://api.vibetool.ai/v1/chat/completions"
payload := []byte(`{"model": "kimi-k3", "messages": [{"role": "user", "content": "Hello!"}]}`)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(payload))
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
fmt.Println("Status:", resp.Status)
}
{
"id": "chat_202601201327_c17f839a",
"object": "chat.completion",
"model": "kimi-k3",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello! How can I assist you today?"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 8,
"completion_tokens": 10,
"total_tokens": 18
}
}
{
"error": {
"message": "Invalid request",
"type": "invalid_request_error",
"param": null,
"code": 400
}
}
{
"error": {
"message": "Invalid API Key provided",
"type": "authentication_error",
"param": null,
"code": 401
}
}
{
"error": {
"message": "Your credit balance is insufficient",
"type": "billing_error",
"param": null,
"code": 402
}
}
{
"error": {
"message": "Permission denied",
"type": "permission_error",
"param": null,
"code": 403
}
}
{
"error": {
"message": "Resource not found",
"type": "invalid_request_error",
"param": null,
"code": 404
}
}
{
"error": {
"message": "Conflict",
"type": "conflict_error",
"param": null,
"code": 409
}
}
{
"error": {
"message": "Rate limit reached for requests",
"type": "rate_limit_error",
"param": null,
"code": 429
}
}
{
"error": {
"message": "An internal server error occurred",
"type": "server_error",
"param": null,
"code": 500
}
}
{
"error": {
"message": "Service unavailable",
"type": "server_error",
"param": null,
"code": 503
}
}
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json
Was this page helpful?