API‑Dokumentation
Übersicht
Die Kimi K2 API bietet programmgesteuerten Zugriff auf das Kimi K2 Sprachmodell. Sie unterstützt sowohl OpenAI‑ als auch Anthropic‑Nachrichtenformate und ermöglicht eine nahtlose Integration in bestehende Anwendungen.
Basis‑URL
https://kimi-k2.ai/api
Unterstützte Protokolle
- REST API über HTTPS
- JSON Request‑ und Response‑Bodies
- UTF-8 Zeichenkodierung
- CORS‑Support für Browser‑Anwendungen
Schnellstart
Starten Sie mit der Kimi K2 API in drei Schritten:
- Konto erstellen und 100 kostenlose Credits erhalten
- API‑Key generieren im Dashboard
- Erste Anfrage senden (die meisten Modelle kosten 1 Credit pro Anfrage;
kimi-k2.5kostet 2 Credits)
Beispiel‑Request
curl https://kimi-k2.ai/api/v1/chat/completions \
-H "Authorization: Bearer $KIMI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "kimi-k2-0905",
"messages": [{"role": "user", "content": "Hallo"}]
}'
Authentifizierung
API‑Schlüssel
Die Authentifizierung erfolgt über API‑Keys. Fügen Sie Ihren API‑Key im Request‑Header hinzu:
Authorization: Bearer YOUR_API_KEY
Oder für Anthropic‑kompatible Endpoints:
X-API-Key: YOUR_API_KEY
Authentifizierungsmethoden
| Methode | Header | Format | Endpoints |
|---|---|---|---|
| Bearer Token | Authorization | Bearer YOUR_API_KEY | /v1/chat/completions |
| API Key | X-API-Key | YOUR_API_KEY | /v1/messages |
API‑Referenz
Modelle auflisten
Listet alle verfügbaren Modelle auf, die über die API genutzt werden können.
Verfügbare Modelle auflisten
GET /v1/models
Gibt eine Liste der verfügbaren Modelle zurück.
Antwortformat
{
"object": "list",
"data": [
{
"id": "kimi-k2",
"object": "model",
"created": 1735785600,
"owned_by": "moonshot-ai",
"permission": [...],
"root": "kimi-k2",
"parent": null
},
{
"id": "kimi-k2-0905",
"object": "model",
"created": 1735785600,
"owned_by": "moonshot-ai",
"permission": [...],
"root": "kimi-k2-0905",
"parent": null
},
{
"id": "kimi-k2-thinking",
"object": "model",
"created": 1735785600,
"owned_by": "moonshot-ai",
"permission": [...],
"root": "kimi-k2-thinking",
"parent": null
}
]
}
Antwortfelder
| Feld | Typ | Beschreibung |
|---|---|---|
object | string | Immer list |
data | array | Liste der verfügbaren Modelle |
data[].id | string | Modell‑ID für API‑Requests |
data[].object | string | Immer model |
data[].owned_by | string | Eigentümer‑Organisation des Modells |
Chat‑Completions
Die Chat‑Completions‑API generiert Modellantworten für Dialoge und ist mit dem OpenAI‑Format kompatibel.
Completion erstellen
POST /v1/chat/completions
Erzeugt eine Modellantwort für den angegebenen Dialog.
Anfrageformat
{
"model": "kimi-k2-0905",
"messages": [
{
"role": "system",
"content": "Du bist ein hilfreicher Assistent."
},
{
"role": "user",
"content": "Erkläre Quantencomputing"
}
],
"temperature": 0.7,
"max_tokens": 2048,
"top_p": 1.0,
"frequency_penalty": 0,
"presence_penalty": 0,
"stream": false,
"n": 1
}
Parameter
| Parameter | Typ | Pflicht | Default | Beschreibung |
|---|---|---|---|---|
model | string | Ja | - | Modell‑ID. Verwenden Sie kimi-k2 |
messages | array | Ja | - | Eingabemessages. Jede Nachricht enthält role und content |
temperature | number | Nein | 0.6 | Sampling‑Temperatur (0–2). Niedrigere Werte erzeugen deterministischere Ausgaben |
max_tokens | integer | Nein | 1024 | Maximale Tokenzahl. Model‑Maximum 128000 |
top_p | number | Nein | 1.0 | Nucleus‑Sampling‑Schwelle. Alternative zu temperature |
frequency_penalty | number | Nein | 0 | Strafe für wiederholte Tokens. Bereich: -2.0 bis 2.0 |
presence_penalty | number | Nein | 0 | Strafe basierend auf Präsenz. Bereich: -2.0 bis 2.0 |
stream | boolean | Nein | false | Streaming der Antworten |
n | integer | Nein | 1 | Anzahl der zu generierenden Completions |
stop | string/array | Nein | null | Stop‑Sequenzen (bis zu 4) |
user | string | Nein | null | Eindeutiger End‑User‑Identifier für Tracking |
Nachrichtenobjekt
| Feld | Typ | Beschreibung |
|---|---|---|
role | string | Eines von: system, user, assistant |
content | string | Inhalt der Nachricht |
Antwortformat
{
"id": "chatcmpl-9d4c2f68-5e3a-4b2f-a3c9-7d8e6f5c4b3a",
"object": "chat.completion",
"created": 1709125200,
"model": "kimi-k2-0905",
"system_fingerprint": "fp_a7c4d3e2",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Quantencomputing nutzt quantenmechanische Effekte..."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 25,
"completion_tokens": 189,
"total_tokens": 214
}
}
Antwortfelder
| Feld | Typ | Beschreibung |
|---|---|---|
id | string | Eindeutiger Request‑Identifier |
object | string | Objekttyp: chat.completion |
created | integer | Unix‑Timestamp |
model | string | Verwendetes Modell |
choices | array | Generierte Completions |
usage | object | Token‑Nutzungsstatistik |
Finish Reasons
| Wert | Beschreibung |
|---|---|
stop | Natürliches Ende oder Stop‑Sequenz erreicht |
length | Maximales Token‑Limit erreicht |
Streaming
Server‑Sent‑Events‑Format bei stream: true:
data: {"id":"chatcmpl-...","choices":[{"delta":{"content":"Hallo"},"index":0}]}
data: {"id":"chatcmpl-...","choices":[{"delta":{"content":" zusammen"},"index":0}]}
data: [DONE]
Nachrichten
Die Messages‑API liefert Anthropic‑kompatible Message‑Generierung.
Nachricht erstellen
POST /v1/messages
Erstellt eine Modellantwort im Messages‑Format.
Anfrageformat
{
"model": "kimi-k2-0905",
"messages": [
{
"role": "user",
"content": "Was ist die Hauptstadt von Frankreich?"
}
],
"max_tokens": 1024,
"system": "Du bist ein wissender Geografie‑Assistent.",
"temperature": 0.7,
"top_p": 1.0,
"stop_sequences": ["\n\nHuman:"]
}
Parameter
| Parameter | Typ | Pflicht | Default | Beschreibung |
|---|---|---|---|---|
model | string | Ja | - | Modell‑ID |
messages | array | Ja | - | Konversations‑Messages (nur user/assistant) |
max_tokens | integer | Ja | - | Maximale Tokenzahl |
system | string | Nein | null | System‑Prompt zur Steuerung des Verhaltens |
temperature | number | Nein | 0.6 | Sampling‑Temperatur (0–1) |
top_p | number | Nein | 1.0 | Nucleus‑Sampling‑Schwelle |
stop_sequences | array | Nein | null | Stop‑Sequenzen (max. 4) |
stream | boolean | Nein | false | Streaming‑Antworten aktivieren |
metadata | object | Nein | null | Request‑Metadaten |
Antwortformat
{
"id": "msg_01XFDUDYJgAACzvnptvVoYEL",
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "Die Hauptstadt von Frankreich ist Paris."
}
],
"model": "kimi-k2-0905",
"stop_reason": "end_turn",
"stop_sequence": null,
"usage": {
"input_tokens": 15,
"output_tokens": 9
}
}
Antwortfelder
| Feld | Typ | Beschreibung |
|---|---|---|
id | string | Eindeutige Message‑ID |
type | string | Objekttyp: message |
role | string | Immer assistant |
content | array | Message‑Content‑Blöcke |
model | string | Verwendetes Modell |
stop_reason | string | Grund für das Stoppen |
usage | object | Token‑Nutzung |
Systemprompts
Systemprompts werden in der Messages‑API separat angegeben:
{
"system": "Du bist Claude, ein von Anthropic entwickelter KI‑Assistent.",
"messages": [
{"role": "user", "content": "Hallo"}
],
"max_tokens": 1024
}
Modelle
Verfügbare Modelle
| Model ID | Context Window | Description |
|---|---|---|
kimi-k2 | 128,000 tokens | Primäres Modell für allgemeine Chat‑Completions |
kimi-k2-0905 | 256,000 tokens | Erweitertes Modell mit größerem Kontextfenster |
kimi-k2-thinking | 256,000 tokens | Spezialmodell für tiefes Reasoning, mathematische Beweise, Research‑Analyse und mehrstufige Problemlösung |
kimi-k2.5 | 256,000 tokens | Natives multimodales agentisches MoE‑Modell (1T total / 32B active) mit starkem Tool‑Use und Reasoning |
Modellauswahl
Wählen Sie das passende Modell für Ihren Anwendungsfall:
kimi-k2: am besten für allgemeine Konversation, Content‑Erstellung und Standardaufgabenkimi-k2-0905: ideal für lange Kontexte (bis 256K), z. B. ganze Dokumente oder lange Gesprächekimi-k2-thinking: optimiert für komplexe Reasoning‑Aufgaben:- mathematische Beweise und Wettbewerbs‑Mathe
- Research‑Analyse und Literature Review
- Mehrschritt‑Problemlösung mit logischem Reasoning
- Advanced Tool‑Orchestrierung (200–300 sequentielle Tool Calls)
- Frontend‑Entwicklung mit komplexen UI‑Anforderungen
- Agentic Search Tasks mit autonomer Navigation
kimi-k2.5: Native multimodale agentische Modell, optimiert für Tool‑Use und Reasoning mit 256K Kontext
Kimi‑K2.5 Schlüssel‑Specs: MoE‑Architektur (1T total parameters, 32B active), 256K Kontext und ein MoonViT Vision Encoder.
Das Thinking‑Modell zeigt seinen Denkprozess Schritt für Schritt und eignet sich ideal für Bildungskontexte und Anwendungen, bei denen Transparenz wichtig ist.
Anfragelimits
Ratenlimits
Ratenlimits gelten pro API‑Key basierend auf dem Credit‑Stand:
| Credit‑Stand | Requests/Minute | Requests/Hour | Requests/Day |
|---|---|---|---|
| 1-100 | 20 | 600 | 5,000 |
| 101-1,000 | 60 | 2,000 | 20,000 |
| 1,001-10,000 | 200 | 6,000 | 50,000 |
| 10,000+ | 500 | 15,000 | 100,000 |
Rate‑Limit‑Header:
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
X-RateLimit-Reset: 1709125800
Token‑Limits
| Limit‑Typ | Wert |
|---|---|
| Maximale Input‑Tokens | 128,000 |
| Maximale Output‑Tokens | 8,192 |
| Maximale Gesamt‑Tokens | 128,000 |
Timeout‑Einstellungen
| Timeout‑Typ | Dauer |
|---|---|
| Connection‑Timeout | 30 Sekunden |
| Read‑Timeout | 600 Sekunden |
| Stream‑Timeout | 600 Sekunden |
Fehlercodes
HTTP‑Statuscodes
| Status | Bedeutung |
|---|---|
| 200 | Success |
| 400 | Bad Request - Invalid parameters |
| 401 | Unauthorized - Invalid or missing API key |
| 403 | Forbidden - Insufficient credits or permissions |
| 404 | Not Found - Invalid endpoint |
| 429 | Too Many Requests - Rate limit exceeded |
| 500 | Internal Server Error |
| 503 | Service Unavailable |
Fehlertypen
OpenAI‑Format‑Fehler
{
"error": {
"message": "Invalid API key provided",
"type": "invalid_request_error",
"code": "invalid_api_key"
}
}
| Error Code | Type | Description |
|---|---|---|
invalid_api_key | invalid_request_error | API‑Key ist ungültig oder falsch formatiert |
insufficient_credits | insufficient_quota | Credit‑Stand ist nicht ausreichend |
rate_limit_exceeded | rate_limit_error | Zu viele Anfragen |
invalid_request | invalid_request_error | Request‑Validierung fehlgeschlagen |
model_not_found | invalid_request_error | Modell existiert nicht |
context_length_exceeded | invalid_request_error | Input überschreitet das Kontextfenster |
Anthropic‑Format‑Fehler
{
"type": "error",
"error": {
"type": "authentication_error",
"message": "Invalid API key"
}
}
| Error Type | Description |
|---|---|
authentication_error | Authentifizierung fehlgeschlagen |
invalid_request_error | Request‑Validierung fehlgeschlagen |
rate_limit_error | Rate‑Limit überschritten |
api_error | Serverfehler |
Fehlerbehandlung
Implementieren Sie exponential backoff mit jitter:
import time
import random
def retry_with_backoff(
func,
max_retries=3,
base_delay=1,
max_delay=60
):
for attempt in range(max_retries):
try:
return func()
except RateLimitError:
if attempt == max_retries - 1:
raise
delay = min(
base_delay * (2 ** attempt) + random.uniform(0, 1),
max_delay
)
time.sleep(delay)
Client‑Bibliotheken
Python
Installation
pip install openai
# oder
pip install anthropic
OpenAI‑Client
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://kimi-k2.ai/api/v1"
)
# Verfügbare Modelle auflisten
models = client.models.list()
for model in models.data:
print(f"Model ID: {model.id}")
# Chat Completion erstellen
response = client.chat.completions.create(
model="kimi-k2-0905",
messages=[
{"role": "user", "content": "Hallo"}
]
)
Anthropic‑Client
from anthropic import Anthropic
client = Anthropic(
api_key="YOUR_API_KEY",
base_url="https://kimi-k2.ai/api/v1"
)
response = client.messages.create(
model="kimi-k2-0905",
messages=[
{"role": "user", "content": "Hallo"}
],
max_tokens=1024
)
Node.js
Installation
npm install openai
# oder
npm install @anthropic-ai/sdk
OpenAI‑Client
import OpenAI from 'openai';
const openai = new OpenAI({
apiKey: process.env.KIMI_API_KEY,
baseURL: 'https://kimi-k2.ai/api/v1',
});
// Verfügbare Modelle auflisten
const models = await openai.models.list();
for (const model of models.data) {
console.log(`Model ID: ${model.id}`);
}
// Chat Completion erstellen
const response = await openai.chat.completions.create({
model: 'kimi-k2-0905',
messages: [{ role: 'user', content: 'Hallo' }],
});
Anthropic‑Client
import Anthropic from '@anthropic-ai/sdk';
const anthropic = new Anthropic({
apiKey: process.env.KIMI_API_KEY,
baseURL: 'https://kimi-k2.ai/api/v1',
});
const response = await anthropic.messages.create({
model: 'kimi-k2-0905',
messages: [{ role: 'user', content: 'Hallo' }],
max_tokens: 1024,
});
Go
Installation
go get github.com/sashabaranov/go-openai
Beispiel
package main
import (
"context"
"fmt"
openai "github.com/sashabaranov/go-openai"
)
func main() {
config := openai.DefaultConfig("YOUR_API_KEY")
config.BaseURL = "https://kimi-k2.ai/api/v1"
client := openai.NewClientWithConfig(config)
resp, err := client.CreateChatCompletion(
context.Background(),
openai.ChatCompletionRequest{
Model: "kimi-k2",
Messages: []openai.ChatCompletionMessage{
{
Role: openai.ChatMessageRoleUser,
Content: "Hallo",
},
},
},
)
if err != nil {
panic(err)
}
fmt.Println(resp.Choices[0].Message.Content)
}
REST API
Direkte HTTP‑Requests ohne Client‑Libraries:
cURL
curl -X POST https://kimi-k2.ai/api/v1/chat/completions \
-H "Authorization: Bearer $KIMI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "kimi-k2",
"messages": [
{"role": "user", "content": "Hallo"}
]
}'
Python (requests)
import requests
response = requests.post(
"https://kimi-k2.ai/api/v1/chat/completions",
headers={
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
},
json={
"model": "kimi-k2",
"messages": [{"role": "user", "content": "Hallo"}]
}
)
Node.js (fetch)
const response = await fetch('https://kimi-k2.ai/api/v1/chat/completions', {
method: 'POST',
headers: {
'Authorization': `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
model: 'kimi-k2-0905',
messages: [{ role: 'user', content: 'Hallo' }],
}),
});
Abrechnung
Creditsystem
API‑Nutzung wird über ein Creditsystem abgerechnet:
- Die meisten Modelle: 1 Credit pro API‑Request
kimi-k2.5: 2 Credits pro API‑Request- Credits werden bei erfolgreichem Abschluss abgezogen
- Fehlgeschlagene Requests (4xx) werden nicht berechnet
- Serverfehler (5xx) werden nicht berechnet
- Neue Nutzer erhalten 100 kostenlose Credits bei Registrierung
- Einladungs‑Rewards:
- 50 Credits bei Registrierung über deinen Invite‑Code
- 500 Credits wenn der eingeladene Nutzer erstmals zahlt
Credit‑Pakete
| Paket | Credits | Preis | Pro Credit | Gültigkeit |
|---|---|---|---|---|
| Starter | 500 | $4.99 | $0.0099 | No expiration |
| Standard | 5,000 | $29.99 | $0.0060 | 1 month |
| Premium | 20,000 | $59.99 | $0.0030 | 1 month |
| Enterprise | Custom | Contact sales | Custom | Custom |
Nutzungstracking
Überwachen Sie die Nutzung:
- Response‑Header:
X-Credits-Remaining: 4523 - Dashboard: Echtzeit‑Statistiken unter /my-credits
- API‑Endpoint:
GET /api/user/credits
Nutzungsdaten umfassen:
- Gesamtverbrauchte Credits
- Verbleibende Credits
- Nutzung nach Tag/Stunde
- Durchschnittliche Token pro Request
Migrationsleitfaden
Von OpenAI
Die Migration von OpenAI erfordert nur minimale Änderungen:
-
Base URL aktualisieren:
# Von client = OpenAI(api_key="sk-...") # Zu client = OpenAI( api_key="sk-...", base_url="https://kimi-k2.ai/api/v1" ) -
Modellnamen aktualisieren:
# Von model="gpt-4" # Zu model="kimi-k2-0905" -
Keine weiteren Änderungen erforderlich — API ist vollständig kompatibel
Von Anthropic
Migration von Anthropic API:
-
Base URL aktualisieren:
# Von client = Anthropic(api_key="sk-ant-...") # Zu client = Anthropic( api_key="sk-...", base_url="https://kimi-k2.ai/api/v1" ) -
Authentifizierung aktualisieren:
- API‑Key im Kimi‑K2‑Dashboard generieren
- Anthropic‑API‑Key ersetzen
-
Modellkompatibilität:
Kimi K2wird unterstützt
Änderungsprotokoll
2025-11-10
- Modell kimi-k2-thinking hinzugefügt
- Spezialmodell für komplexe Reasoning‑Aufgaben
- Schritt‑für‑Schritt‑Reasoning‑Anzeige
- Unterstützung für mathematische Beweise, Research‑Analyse und multi‑step Problemlösung
- Erweiterte Tool‑Orchestrierung (200–300 sequentielle Tool Calls)
2025-09-05
- Unterstützung für 256K Kontextfenster
- Support für das Modell kimi-k2-0905
2025-01-30
- Anthropic Messages API‑Kompatibilität hinzugefügt
- X-API-Key‑Authentifizierung eingeführt