API Referenz
Der technische Vertrag für Requests, Responses, Streaming und den produktiven API-Betrieb.
Kurz gesagt
Alle API-Anfragen erfordern einen gültigen API-Key im Authorization-Header.
Authorization: Bearer YOUR_API_KEYIdempotency-Key: req_123 (optional, POST only)
X-End-User-Id: user_42 (optional)
X-Project-Id: adbase-main (optional)
X-Session-Id: sess_abc (optional)
X-Request-Id: 2fbd62fe-... (response header, always set)Neben Authorization gibt es einige Header, die für stabile Produktionseinbindungen besonders wichtig sind.
Authorization
Pflichtheader für jede Anfrage. Verwenden Sie immer das Bearer-Präfix.
Idempotency-Key
Empfohlen für POST-Requests, die bei Timeouts oder 5xx erneut gesendet werden könnten.
X-End-User-Id
Optionaler Korrelationswert für Ihren Endnutzer oder Mandanten.
X-Project-Id
Optionaler Projekt- oder Service-Identifier für internes Monitoring und Kostenstellen.
X-Request-Id
Response-Header zur serverseitigen Nachverfolgung. Immer in Ihren Logs mitpersistieren.
/v1/modelsReturns models available for the current API key./v1/chat/completionsErstellt eine Chat-Completion. Unterstützt Streaming./v1/filesUpload a file (multipart/form-data)./v1/audio/transcriptionsTranscribe audio files (multipart/form-data)./v1/files/{file_id}Read file metadata and processing status./v1/files/{file_id}Delete file metadata and storage object./v1/files/{file_id}/extract?async=true|falseStart or run extraction for one file./v1/file-jobs/{job_id}Read extraction job status/result.| Parameter | Typ | Pflicht | Default | Beschreibung |
|---|---|---|---|---|
| model | string | Pflicht | - | Model-ID oder Alias (z.B. 'mistral-small', 'claude-sonnet') |
| messages | array | Pflicht | - | Array von Message-Objekten mit role und content |
| stream | boolean | false | Aktiviert Server-Sent Events für Echtzeit-Streaming | |
| stream_options | object | null | Optionale Streaming-Einstellungen wie include_usage für einen finalen Usage-Chunk | |
| temperature | number | 0.7 | Kreativität der Antworten (0.0-2.0) | |
| top_p | number | 1.0 | Nucleus Sampling (0.0-1.0) | |
| max_tokens | integer | 4096 | Maximale Anzahl Output-Tokens | |
| frequency_penalty | number | 0 | Strafe für häufig verwendete Tokens (-2.0 bis 2.0) | |
| presence_penalty | number | 0 | Strafe für bereits verwendete Tokens (-2.0 bis 2.0) | |
| stop | string | array | null | Sequenz(en), bei denen die Generierung stoppt | |
| response_format | object | null | Erzwingt JSON-Ausgabe (type: 'json_object') | |
| tools | array | null | Verfügbare Funktionen/Tools für Function Calling | |
| tool_choice | string | object | auto | Wie Tools verwendet werden sollen (auto, required, none) | |
| functions | array | null | Legacy-Funktionsdefinitionen (OpenAI-Kompatibilitätsmodus) | |
| function_call | string | object | auto | Legacy-Verhalten für Funktionsaufrufe (auto, none oder benannte Funktion) |
Jede Nachricht hat eine Rolle und einen Inhalt:
{
"messages": [
{ "role": "system", "content": "You are a helpful assistant." },
{
"role": "user",
"content": [
{ "type": "text", "text": "Summarize this file" },
{ "type": "file_ref", "file_id": "file_abc123" }
]
},
{ "role": "assistant", "content": "I don't have access to real-time weather data." },
{ "role": "user", "content": "I understand, thank you!" }
]
}{
"model": "gpt-4o",
"messages": [
{ "role": "system", "content": "You are a helpful assistant." },
{ "role": "user", "content": "Hello!" }
],
"temperature": 0.7,
"max_tokens": 1000
}curl https://api.vantero.chat/v1/chat/completions \
-H "Authorization: Bearer $VANTERO_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: req_123" \
-d '{
"model": "gpt-4o",
"messages": [
{ "role": "user", "content": "Summarize the latest campaign results." }
],
"stream": false
}'So sollte ein produktiver Request idealerweise durch Ihr System laufen.
- Validieren Sie Modell, Payload-Größe und benötigte Header bereits vor dem Absenden.
- Senden Sie POST-Requests mit Timeout und optionalem Idempotency-Key.
- Loggen Sie Statuscode, Latenz, Modell und X-Request-Id für jede Antwort.
- Persistieren Sie finale Usage- und Fehlerdaten getrennt von den eigentlichen Nutzdaten.
Erfolgreiche Anfragen geben ein Chat-Completion-Objekt zurück:
{
"id": "chatcmpl-abc123",
"object": "chat.completion",
"created": 1699000000,
"model": "gpt-4o",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello! How can I help you today?"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 20,
"completion_tokens": 10,
"total_tokens": 30
}
}finish_reason kann sein:
stop- Natürliches Endelength- max_tokens erreichtcontent_filter- Inhalt gefilterttool_calls- Das Modell hat Tool-Aufrufe zurückgegebenfunction_call- Das Modell hat einen Legacy-Funktionsaufruf zurückgegeben
Mit stream: true erhalten Sie Antworten in Echtzeit als Server-Sent Events (SSE). Mit stream_options.include_usage kann der finale Chunk zusätzlich Usage-Daten enthalten.
Streaming-Vertrag
- Der erste Chunk enthält typischerweise die assistant-Rolle im delta.
- Nachfolgende Chunks transportieren Text- oder Tool-Deltas inkrementell.
- Der finale Chunk kann Usage enthalten, wenn include_usage gesetzt ist.
- Der Stream endet immer mit dem Marker [DONE].
data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","created":1699000000,"model":"gpt-4o","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","created":1699000000,"model":"gpt-4o","choices":[{"index":0,"delta":{"content":"Hello"},"finish_reason":null}]}
data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","created":1699000000,"model":"gpt-4o","choices":[{"index":0,"delta":{"content":"!"},"finish_reason":null}]}
data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","created":1699000000,"model":"gpt-4o","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":{"prompt_tokens":20,"completion_tokens":10,"total_tokens":30}}
data: [DONE]Alle Modelle können über ihren Alias oder die vollständige ID angesprochen werden.
| Alias | Modell | Zone | Context | Faktor | Features |
|---|---|---|---|---|---|
| mistral-small-24b | Mistral Small 24B Kompakt und schnell für Standard-Chat. | DE | 128K | x0.15 | |
| llama-3.3-70b | Llama 3.3 70B Stark bei Analyse und mehrsprachigen Texten. | DE | 128K | x0.55 | |
| gpt-oss | GPT-OSS 120B Open-Weight mit starkem Reasoning-Profil. | DE | 128K | x0.25 | Reasoning |
| llama-405b | Llama 3.1 405B Sehr stark für komplexe Aufgabenketten. | DE | 128K | x1.20 | Reasoning |
| codellama | CodeLlama 13B Codefokus für Generierung und Reviews. | DE | 16K | x0.35 | Code |
| mistral-small | Mistral Small Direkter Mistral-Allrounder fuer Web, Bilder und Chat. | FR | 256K | x0.25 | ReasoningWebsuche integriertBild-Input |
| mistral-medium | Mistral Medium 3 Mistral-Allrounder für breite Workloads. | FR | 256K | x0.50 | Websuche integriertBild-Input |
| mistral-large | Mistral Large Aktueller Mistral-Topslot für komplexe Analysen. | FR | 256K | x0.60 | Tiefe AnalysenWebsuche integriertBild-Input |
| codestral | Codestral Coding-Modell für Dev-Workflows. | FR | 256K | x0.30 | Code |
| devstral | Devstral Neuer Mistral-Spezialist fuer Refactors und Coding. | FR | 256K | x0.50 | Code256K Context |
| gemini-flash | Gemini 2.5 Flash Schnell, multimodal, mit langem Kontext. | EU | 1M | x0.35 | WebsucheBild-Input |
| gpt-4.1 | ChatGPT-4.1 Präzise für Code und Instruktionen. | EU | 1M | x2.00 | ReasoningBild-Input |
| gpt-5 | ChatGPT-5 OpenAI-Flaggschiff für Komplexes. | EU | 128K | x2.40 | ReasoningBild-Input |
| gpt-5.4 | GPT-5.4 Aktuelles OpenAI-Flaggschiff in Azure Sweden. | EU | 1M | x4.00 | FrontierReasoningBild-Input |
| gpt-5-mini | ChatGPT-5 Mini Schneller GPT-5-Allrounder. | EU | 400K | x0.60 | Bild-InputSchnell |
| gpt-5-nano | ChatGPT-5 Nano GPT-5 für niedrige Latenz. | EU | 400K | x0.15 | Bild-Input |
| claude-sonnet | Claude Sonnet 4.6 Starke Balance aus Tempo und Qualität. | EU | 1M | x3.00 | ReasoningBild-Input |
| claude-opus | Claude Opus 4.6 Maximale Qualität für harte Fälle. | EU | 1M | x5.00 | ReasoningBild-Input |
| gemini-pro | Gemini 2.5 Pro Starkes Reasoning mit Long Context. | EU | 1M | x2.50 | ReasoningWebsucheBild-Input |
| gemini-flash-lite | Gemini 2.5 Flash-Lite Niedrige Latenz und niedrige Kosten. | EU | 1M | x0.20 | WebsucheBild-Input |
| claude-haiku | Claude Haiku 4.5 Sehr schnell für kurze Antworten. | EU | 200K | x1.20 | SchnellBild-Input |
| nova-micro | Nova Micro Extrem schnell für Basis-Tasks. | EU | 128K | x0.10 | Schnell |
| nova-lite | Nova Lite Günstiger multimodaler Allrounder. | EU | 300K | x0.12 | Bild-InputSchnell |
| nova-pro | Nova Pro Nova-Flaggschiff für schwere Tasks. | EU | 300K | x0.80 | Bild-InputReasoning |
| nova-2-lite | Nova 2 Lite Neue Nova-2-Lite-Generation in Bedrock EU. | EU | 1M | x0.90 | Bild-InputSchnell |
| deepseek-v3.2 | DeepSeek V3.2 Aktueller DeepSeek-Stand mit Tool-Fokus. | EU | 164K | x0.60 | Reasoning |
| minimax-m2.5 | MiniMax M2.5 Effizientes Reasoning via Bedrock EU. | EU | 1M | x0.60 | ReasoningEffizient |
| qwen3-vl-de | Qwen3 VL 235B DE-only Vision-Modell für Bilder und Screenshots. | DE | 218K | x1.00 | Bild-InputReasoning |
| qwen3-next | Qwen3 Next 80B Effizientes MoE mit langem Kontext. | EU | 256K | x0.40 | Schnell256K Context |
| qwen3-vl | Qwen3 VL 235B Großmodell für Analyse-Workloads. | EU | 256K | x0.90 | Bild-InputReasoning |
| qwen3-coder | Qwen3 Coder 480B Großes Modell für Coding und Agenten. | EU | 128K | x1.60 | CodingAgentic |
| kimi-k2.5 | Kimi K2.5 Neuer K2.5-Stand für tiefe Recherche und Reasoning. | EU | 256K | x0.90 | Reasoning256K Context |
| sonar | Sonar Schnelle Antworten mit Webbezug. | US | 128K | x2.00 | WebsucheSchnell |
| sonar-pro | Sonar Pro Tiefere Web-Recherche. | US | 200K | x4.50 | WebsucheTiefenanalyse |
| sonar-reasoning | Sonar Reasoning Pro Web plus mehrstufiges Reasoning. | US | 128K | x4.00 | WebsucheReasoning |
| sonar-research | Sonar Deep Research Umfangreiche Quellenrecherche. | US | 128K | x24.00 | WebsucheResearch |
DE Modelle mit Verarbeitung in Deutschland für maximale Datensouveränität.
FR Mistral-Modelle mit Verarbeitung in Frankreich und temporärer Nutzung ohne Speicherung.
EU Frontier-Modelle in europäischen Cloud-Regionen mit EU-zentrierter Datenverarbeitung.
US Perplexity-Modelle mit Webfokus auf US-Infrastruktur unter GDPR-konformen Vertragsgrundlagen.
Rate Limits werden pro API-Key angewendet und können in der Plattform konfiguriert werden.
Die folgenden Header werden in jeder Antwort mitgesendet:
X-RateLimit-Limit- Maximale Anfragen im aktuellen ZeitfensterX-RateLimit-Remaining- Verbleibende Anfragen im aktuellen ZeitfensterX-RateLimit-Reset- Unix-Timestamp, wann das Limit zurückgesetzt wird
Fehlerantworten liefern einen stabilen error-Block mit Typ, Code und request_id. Nutzen Sie die request_id immer für Support und Incident-Analyse.
{
"error": {
"message": "Rate limit exceeded",
"type": "rate_limit_exceeded",
"code": "rate_limit_exceeded",
"request_id": "req_2fbd62fe"
}
}| HTTP | Code | Beschreibung | Lösung |
|---|---|---|---|
| 400 | invalid_request_error | Ungültige Anfrage - Parameter fehlen oder sind falsch | Überprüfen Sie die Request-Parameter |
| 401 | invalid_api_key | API-Key ungültig oder fehlt | Überprüfen Sie Ihren API-Key |
| 404 | model_not_found | Modell nicht gefunden | Prüfen Sie den Modell-Alias |
| 429 | rate_limit_exceeded | Rate Limit überschritten | Warten Sie und versuchen Sie es erneut |
| 429 | insufficient_quota | Budget/Quota aufgebraucht | Budget erhöhen oder warten |
| 500 | server_error | Interner Server-Fehler | Versuchen Sie es später erneut |
| 503 | model_unavailable | Das angeforderte Modell ist vorübergehend nicht verfügbar. | Kurz warten und erneut versuchen oder auf ein anderes erlaubtes Modell wechseln. |
Diese Punkte sollten in jeder produktiven Integration abgedeckt sein.
- Authorization-Header und Secret-Verwaltung sind serverseitig abgesichert.
- Timeouts und Abbruchpfade sind implementiert.
- Temporäre Fehler werden mit Backoff retried, permanente Fehler nicht.
- X-Request-Id wird in allen relevanten Logs gespeichert.
- Streaming-Clients behandeln Chunks und [DONE] korrekt.