Response erstellen
Erstellt eine Modellantwort über die zustandslose Responses API. Eine Alternative zu /v2/chat/completions mit einem einfacheren Eingabeformat und umfangreicheren Streaming-Ereignissen.
Akzeptiert einen einfachen String oder ein Array von Eingabe-Items (Nachrichten und Tool-Ausgaben). Das Feld store muss weggelassen oder auf false gesetzt werden — nur der zustandslose Modus wird unterstützt.
Prompt-Caching (Anthropic-Modelle). Die Cache-Lebensdauer beträgt ausschließlich fünf
Minuten — ttl: "1h" wird auf diesem Endpoint NICHT unterstützt. Markieren Sie das letzte Element eines
unveränderlichen Präfixes mit cache_control, und dieses Präfix wird beim Anbieter
zwischengespeichert; eine spätere Anfrage, die es Byte für Byte wiederholt, wird zum
Cache-Read-Tarif abgerechnet. Ohne Ihre Markierung wird nichts gecacht — wir setzen
niemals selbst Breakpoints, denn ob sich ein Cache-Write lohnt, hängt von Ihrem
Zugriffsmuster ab, nicht von unserem. Jeder Cache lebt fünf Minuten — ttl: "1h" wird
akzeptiert, aber noch nicht unterstützt und als marker_ttl_unsupported gemeldet statt
angewandt. Siehe Abrechnung → Prompt-Caching.
Prompt-Caching (Mistral-Modelle). Mistral cacht Präfixe automatisch, cache_control
bewirkt dort also nichts — senden Sie stattdessen prompt_cache_key: eine stabile
Zeichenkette pro Konversation oder Sitzung, wiederholt bei jeder Anfrage mit gemeinsamem
Präfix. Das Feld wird bedingungslos angewendet und kostet nichts extra (Mistral berechnet
keinen Cache-Write-Aufschlag), Ihr Wert wird Ihrem Workspace zugeordnet, und ein Treffer ist
eine Wahrscheinlichkeit, keine Zusage. Siehe
Abrechnung → Mistral-Modelle.
https://api.deutschlandgpt.de/v2/responsesBeispielaufruf
curl https://api.deutschlandgpt.de/v2/responses \
-X POST \
-H "Authorization: Bearer $DGPT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o",
"instructions": "You are a concise assistant. Answer in German.",
"input": "",
"stream": false,
"temperature": 0,
"max_output_tokens": 0,
"tools": [
{
"type": "function",
"name": "string",
"parameters": {}
}
],
"tool_choice": "auto",
"parallel_tool_calls": true,
"text": {},
"reasoning": {},
"store": true,
"prompt_cache_key": "conversation-42",
"reasoning_effort": "none"
}'curl https://api.deutschlandgpt.de/v2/responses \
-X POST \
-H "Authorization: Bearer $DGPT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o",
"instructions": "You are a concise assistant. Answer in German.",
"input": "",
"stream": false,
"temperature": 0,
"max_output_tokens": 0,
"tools": [
{
"type": "function",
"name": "string",
"parameters": {}
}
],
"tool_choice": "auto",
"parallel_tool_calls": true,
"text": {},
"reasoning": {},
"store": true,
"prompt_cache_key": "conversation-42",
"reasoning_effort": "none"
}'import os, requests
response = requests.post(
"https://api.deutschlandgpt.de/v2/responses",
headers={"Authorization": f"Bearer {os.environ['DGPT_API_KEY']}"},
json={
"model": "gpt-4o",
"instructions": "You are a concise assistant. Answer in German.",
"input": "",
"stream": False,
"temperature": 0,
"max_output_tokens": 0,
"tools": [
{
"type": "function",
"name": "string",
"parameters": {}
}
],
"tool_choice": "auto",
"parallel_tool_calls": True,
"text": {},
"reasoning": {},
"store": True,
"prompt_cache_key": "conversation-42",
"reasoning_effort": "none"
},
)
print(response.json())import os, requests
response = requests.post(
"https://api.deutschlandgpt.de/v2/responses",
headers={"Authorization": f"Bearer {os.environ['DGPT_API_KEY']}"},
json={
"model": "gpt-4o",
"instructions": "You are a concise assistant. Answer in German.",
"input": "",
"stream": False,
"temperature": 0,
"max_output_tokens": 0,
"tools": [
{
"type": "function",
"name": "string",
"parameters": {}
}
],
"tool_choice": "auto",
"parallel_tool_calls": True,
"text": {},
"reasoning": {},
"store": True,
"prompt_cache_key": "conversation-42",
"reasoning_effort": "none"
},
)
print(response.json())const response = await fetch('https://api.deutschlandgpt.de/v2/responses', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.DGPT_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
"model": "gpt-4o",
"instructions": "You are a concise assistant. Answer in German.",
"input": "",
"stream": false,
"temperature": 0,
"max_output_tokens": 0,
"tools": [
{
"type": "function",
"name": "string",
"parameters": {}
}
],
"tool_choice": "auto",
"parallel_tool_calls": true,
"text": {},
"reasoning": {},
"store": true,
"prompt_cache_key": "conversation-42",
"reasoning_effort": "none"
}),
});
console.log(await response.json());const response = await fetch('https://api.deutschlandgpt.de/v2/responses', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.DGPT_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
"model": "gpt-4o",
"instructions": "You are a concise assistant. Answer in German.",
"input": "",
"stream": false,
"temperature": 0,
"max_output_tokens": 0,
"tools": [
{
"type": "function",
"name": "string",
"parameters": {}
}
],
"tool_choice": "auto",
"parallel_tool_calls": true,
"text": {},
"reasoning": {},
"store": true,
"prompt_cache_key": "conversation-42",
"reasoning_effort": "none"
}),
});
console.log(await response.json());Anfrage-Body
modelstringerforderlichZu verwendende Modell-ID (z. B. gpt-4o, o4-mini). Verfügbare Modelle mit /v2/models auflisten.
instructionsstring | nulloptionalEine System- (bzw. Developer-)Nachricht, die als erstes Element in den Kontext des Modells eingefügt wird. Das Äquivalent zu einer system-Nachricht bei /v2/chat/completions. Enthält Ihr input-Array bereits ein system- oder developer-Element, wird dieser Text davor gestellt — der Endpoint unterstützt eine System-Nachricht pro Anfrage.
inputstring | object[]optionalText-, Bild- oder Dateieingaben. Einen String für einen einzelnen Benutzer-Turn oder ein Array von Eingabe-Items für mehrstufige Unterhaltungen übergeben.
streambooleanoptionalResponse als Server-Sent Events streamen. Ereignisse sind JSON-Objekte mit einem Feld type (z. B. response.output_text.delta, response.completed).
temperaturenumberoptionalSampling-Temperatur (0–2). Höher = variablere Ausgabe.
max_output_tokensintegeroptionalObergrenze für zu generierende Token. Alias: max_completion_tokens.
toolsobject[]optionalFunktionen, die das Modell aufrufen darf. Verwendet flaches Format — kein verschachteltes function-Objekt.
typestringerforderlichnamestringerforderlichdescriptionstringoptionalparametersobjecterforderlichJSON Schema für Funktionsparameter
strictbooleanoptionalcache_controlCacheControloptionalCacht die Tool-Definitionen (und damit auch den System-Prompt, da Anthropic Tools zuerst anordnet). Erfordert eine System-Nachricht in derselben Anfrage — ohne sie wird die Markierung verworfen und nicht auf die erste Nutzer-Nachricht verschoben, die sich bei jeder Anfrage aendert und daher nie zu einem Treffer fuehren wuerde.
typestringerforderlichttlstringoptionalCache-Lebensdauer. Auf DIESEM Endpoint wird 1h NICHT UNTERSTUETZT: es wird akzeptiert, damit bestehende Integrationen weiterlaufen, der Breakpoint wird aber mit der Standard-Lebensdauer von fuenf Minuten gesetzt, zum Fuenf-Minuten-Tarif abgerechnet (1,25-facher Eingabetarif, nicht 2-facher) und als Warnung marker_ttl_unsupported in prompt_cache gemeldet. Da damit alle Breakpoints dieselbe Lebensdauer haben, wird das Mischen beider Werte akzeptiert und Anthropics Reihenfolge-Regel (1h vor 5m) nicht erzwungen. Auf /anthropic/v1/messages WIRD 1h beachtet, dort ist cache_control Anthropics eigenes Feld. Wo nichts gecacht wird, werden die Markierungen vollstaendig ignoriert.
tool_choicestring | objectoptionalSteuert, welches Tool (falls überhaupt) aufgerufen wird.
parallel_tool_callsbooleanoptionalErlaubt dem Modell, mehrere Tools in einem einzigen Turn aufzurufen.
textobjectoptionalKonfiguration für Ausgabeformat und Ausführlichkeit.
formatobject | objectoptionalAusgabeformat. json_schema für strukturierte Ausgabe verwenden (Streaming nicht unterstützt).
verbositystringoptionalSchränkt die Antwortlänge ein. low = prägnant, high = detailliert.
reasoningobjectoptionalKonfiguration für Reasoning-Modelle (für o3, o4-mini usw.).
effortstringoptionalReasoning-Intensität. none deaktiviert erweitertes Denken und wird dem Modell auch so übergeben, es entstehen also keine Reasoning-Tokens und es werden keine berechnet. Nicht jedes Reasoning-Modell akzeptiert jeden Wert.
summarystring | nulloptionalFordert eine Zusammenfassung des Reasonings an, die als reasoning-Output-Elemente zurückkommt (beim Streaming als response.reasoning_summary_*-Events). Wird nur von Reasoning-Modellen erzeugt und nur bei einem Effort über none.
generate_summarystring | nulloptionalVeralteter Alias für summary, wird für ältere OpenAI-SDKs akzeptiert. Bevorzugen Sie summary; sind beide gesetzt, gewinnt summary.
storebooleanoptionalWird für OpenAI-SDK-Kompatibilität akzeptiert, aber immer als false behandelt — nur der zustandslose Modus wird unterstützt. Das Setzen auf true führt nicht zu einem Fehler; die Antwort wird dennoch nicht gespeichert.
prompt_cache_keystringoptionalOptionale stabile Kennung für Anfragen, die sich ein Prompt-Präfix teilen — eine Konversations-, Sitzungs- oder Workflow-ID. Erhöht die Prompt-Cache-Trefferquote bei Modellen, die Präfixe automatisch cachen (Mistral). Wird von Modellen ignoriert, die über explizite cache_control-Breakpoints cachen (Anthropic), sowie von Modellen ohne Prompt-Cache. Ihr Wert wird serverseitig Ihrem Workspace zugeordnet und kann daher nie mit einem anderen Tenant kollidieren oder auf dessen Cache zielen. Treffer sind Best-Effort und nie garantiert — ein Fehlschlag wird exakt wie eine ungecachte Anfrage abgerechnet, es geht also nichts verloren. Legen Sie keine Geheimnisse oder personenbezogenen Daten hinein.
reasoning_effortstringoptionalAlias für reasoning.effort, akzeptiert damit ein /v2/chat/completions-Request-Body unverändert auf diesem Endpoint funktioniert. Bei Angabe beider Felder gewinnt reasoning.effort.
Antwort
{
"id": "resp_abc123",
"object": "response",
"created_at": 0,
"status": "completed",
"model": "string",
"output": [
{
"id": "string",
"type": "message",
"role": "assistant",
"content": [
{
"type": null,
"text": null,
"annotations": null
}
]
}
],
"usage": {
"input_tokens": 0,
"output_tokens": 0,
"total_tokens": 0,
"input_tokens_details": {
"cached_tokens": 0,
"cache_write_tokens": 0
}
},
"prompt_cache_key": "string"
}{
"id": "resp_abc123",
"object": "response",
"created_at": 0,
"status": "completed",
"model": "string",
"output": [
{
"id": "string",
"type": "message",
"role": "assistant",
"content": [
{
"type": null,
"text": null,
"annotations": null
}
]
}
],
"usage": {
"input_tokens": 0,
"output_tokens": 0,
"total_tokens": 0,
"input_tokens_details": {
"cached_tokens": 0,
"cache_write_tokens": 0
}
},
"prompt_cache_key": "string"
}Response-Objekt oder SSE-Stream bei stream: true
Ebenfalls verfügbar als text/event-stream
idstringobjectstringcreated_atintegerUnix-Zeitstempel
statusstringmodelstringoutputobject[]idstringtypestringrolestringcontentobject[]typestringtextstringannotationsobject[]usageobjectinput_tokensintegeroutput_tokensintegertotal_tokensintegerinput_tokens_detailsobjectDie Cache-Aufteilung von input_tokens, das die Gesamtsumme ist.
cached_tokensintegerEingabetokens aus dem Prompt-Cache, abgerechnet zum Cache-Read-Tarif, sofern Prompt-Caching fuer Ihre Organisation aktiviert ist.
cache_write_tokensintegerIn den Prompt-Cache geschriebene Eingabetokens. Nur vorhanden, wenn Prompt-Caching fuer Ihre Organisation aktiviert ist.
prompt_cache_keystring | nullDer von Ihnen gesendete prompt_cache_key, zurückgegeben. null, wenn Sie keinen gesendet haben.
Statuscodes
Response-Objekt oder SSE-Stream bei stream: true
Ungültige Anfrage oder stream: true mit json_schema
Fehlender oder ungültiger API-Key
ErrorNicht genügend Guthaben
ErrorFeature nicht aktiviert
ErrorModell nicht gefunden
Error