İçeriğe geç

Responses API

LLMTR gateway, OpenAI'ın yeni /v1/responses endpoint'ini destekler. GPT-5 Codex serisi (gpt-5-codex, gpt-5.1-codex, gpt-5.1-codex-max, gpt-5.1-codex-mini, gpt-5.2-codex, gpt-5.3-codex) gibi modeller yalnızca bu endpoint üzerinden çalışır; bu modelleri /v1/chat/completions'a göndermek 400 endpoint_mismatch hatası döner.

  • Reasoning effort kontrolü gerektiğinde (low / medium / high / xhigh)
  • Cached input avantajı olan modelleri kullanırken
  • Sadece Responses endpoint'ini destekleyen modellerle çalışırken

Klasik chat tamamlama akışı için /v1/chat/completions kullanmaya devam edin.

POST /v1/responses
Authorization: Bearer llmtr-your_key
Content-Type: application/json

| Alan | Tip | Zorunlu | Açıklama | |---|---|---|---| | model | string | evet | Canonical model ID (örn. openai/gpt-5.1-codex). İsteğe bağlı suffix: openai/gpt-5.3-codex:max | | messages veya input | array | string | evet | OpenAI mesaj formatı veya doğrudan input | | instructions | string | hayır | System prompt karşılığı | | reasoning | object | hayır | { "effort": "low" \| "medium" \| "high" \| "xhigh", "summary": "auto" \| "concise" \| "detailed" } | | max_output_tokens | integer | hayır | Çıktı token üst sınırı | | temperature | number | hayır | Modelin desteklediği aralıkta | | tools | array | hayır | Function calling (destekleyen modellerde) | | tool_choice | string | object | hayır | auto, none veya belirli tool | | response_format | object | hayır | Structured output (Chat Completions yazımı; text.format'a çevrilir) | | text | object | hayır | Structured output (Responses yazımı): { "format": { "type": "json_schema", ... } } | | stream | boolean | hayır | SSE akışı. Sağlayıcı akışı olduğu gibi aktarılır |

Terminal window
curl "$LLMTR_BASE_URL/v1/responses" \
-H "Authorization: Bearer llmtr-your_key" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-5.1-codex:high",
"messages": [
{"role": "user", "content": "Refaktör et: bu fonksiyonu pure yap"}
]
}'

Aynı isteği reasoning.effort body alanı ile de yapabilirsiniz:

Terminal window
curl https://llmtr.com/v1/responses \
-H "Authorization: Bearer llmtr-your_key" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-5.1-codex",
"reasoning": { "effort": "high" },
"messages": [
{"role": "user", "content": "Refaktör et: bu fonksiyonu pure yap"}
]
}'
{
"id": "resp_xxx",
"object": "response",
"status": "completed",
"model": "gpt-5.1-codex",
"output": [
{
"type": "message",
"role": "assistant",
"content": [
{ "type": "output_text", "text": "İşte refaktör edilmiş hali..." }
]
}
],
"usage": {
"input_tokens": 142,
"input_tokens_details": { "cached_tokens": 24 },
"output_tokens": 318,
"output_tokens_details": { "reasoning_tokens": 256 }
}
}

status alanı completed, incomplete veya failed olabilir.

stream: true gönderdiğinizde gateway sağlayıcının SSE akışını olduğu gibi aktarır: token'lar model ürettikçe gelir, yanıtın tamamlanması beklenmez.

Terminal window
curl https://llmtr.com/v1/responses \
-H "Authorization: Bearer llmtr-your_key" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-5.3-codex",
"input": "Cursor tabanlı sayfalamayı anlat.",
"stream": true
}'

Akış, OpenAI Responses olay adlarını kullanır:

event: response.created
data: {"type":"response.created","response":{"id":"resp_xxx","model":"openai/gpt-5.3-codex"}}
event: response.output_text.delta
data: {"type":"response.output_text.delta","delta":"Cursor"}
event: response.completed
data: {"type":"response.completed","response":{"status":"completed","usage":{...}}}
data: [DONE]

Notlar:

  • Olay gövdelerindeki response.model alanı canonical LLMTR model ID'sine çevrilir; non-streaming yanıtla aynı değeri görürsünüz.
  • usage yalnızca response.completed olayında gelir. Faturalama bu bloktan yapılır, dolayısıyla streaming ile non-streaming arasında maliyet farkı yoktur.
  • Akış başlamadan önce oluşan hatalar normal HTTP durum kodu döner. Akış başladıktan sonra oluşan hatalar akışın içinde {"error":{...}} gövdesiyle bildirilir, çünkü 200 durum satırı çoktan gönderilmiştir.
  • Bağlantı beklerken düzenli aralıklarla SSE yorum satırı (: keepalive) gönderilir. Uyumlu tüm SSE ayrıştırıcıları bunları yok sayar.

İki yazım da kabul edilir. Chat Completions'tan gelen response_format, Responses API'nin text.format alanına çevrilir:

Terminal window
curl https://llmtr.com/v1/responses \
-H "Authorization: Bearer llmtr-your_key" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-5.3-codex",
"input": "İstanbul için hava JSON'u üret.",
"text": {
"format": {
"type": "json_schema",
"name": "weather",
"strict": true,
"schema": {
"type": "object",
"properties": { "city": { "type": "string" }, "tempC": { "type": "number" } },
"required": ["city", "tempC"],
"additionalProperties": false
}
}
}
}'

Hem response_format hem text.format gönderirseniz text.format kazanır.

  • input_tokens_details.cached_tokens, cache kullanılan token miktarını gösterir.
  • output_tokens_details.reasoning_tokens, reasoning sırasında harcanan tokenları gösterir.
  • Toplam maliyet modelin kendi fiyatlandırmasına göre hesaplanır; platform marjı yalnızca kredi yüklemede uygulanır.
  • Üretim kullanımı öncesinde ilgili modelin güncel fiyatını dashboard veya katalog üzerinden doğrulayın.

tencent/hy3, Chat Completions yanında /v1/responses üzerinden de çağrılabilir. Çıplak model kimliği thinking kapalı çalışır; :low, :high suffix'i veya reasoning.effort ile reasoning açılır:

Terminal window
curl https://llmtr.com/v1/responses \
-H "Authorization: Bearer llmtr-your_key" \
-H "Content-Type: application/json" \
-d '{
"model": "tencent/hy3:high",
"input": "Bu TypeScript servisini güvenli biçimde refaktör et.",
"max_output_tokens": 2048,
"stream": false
}'

Hy3 yalnız low ve high effort seviyelerini sunar. Model text-only'dir; function calling, structured output ve prompt cache destekler.

xai/grok-4.3, xai/grok-4.20-multi-agent, xai/grok-4.20-0309-reasoning ve xai/grok-4.20-0309-non-reasoning için önerilen endpoint /v1/responses:

Terminal window
curl https://llmtr.com/v1/responses \
-H "Authorization: Bearer llmtr-your_key" \
-H "Content-Type: application/json" \
-d '{
"model": "xai/grok-4.3",
"input": "Bir TypeScript servis fonksiyonunu sadeleştir."
}'

Uyumluluk için /v1/chat/completions çağrıları da kabul edilir; gateway bu istekleri içeride Responses akışına çevirir ve OpenAI Chat Completions formatında yanıt döner. LLMTR bu modellerde store:false gönderir. store:true, previous_response_id, instructions ve xAI server-side tools alanları bu sürümde reddedilir. Sistem mesajı gerekiyorsa input veya messages içindeki ilk system ya da developer mesajını kullanın.

Grok 4.3 için 200K üzeri input tahmini, xAI yüksek context fiyatı ayrıca doğrulanana kadar pricing_unverified ile reddedilir. xAI text yanıtında usage.cost_in_usd_ticks yoksa istek provider tarafında başarılı olsa bile settlement yapılmaz ve gateway provider_usage_missing döner. Grok 4.20 Multi-Agent modelinde reasoning.effort yalnızca ajan sayısını kontrol eder; high ve xhigh daha fazla token tüketebilir.

Image, video, TTS ve STT örnekleri dahil Grok ailesinin tam kullanımı için xAI Grok modelleri sayfasına bakın.

Reasoning seviyeleri ayrı bir sayfada detaylandırılmıştır: Reasoning effort.

| HTTP | error.type | Anlamı | |---|---|---| | 400 | invalid_request_error | Geçersiz parametre / bilinmeyen suffix | | 400 | endpoint_mismatch | Model /v1/responses gerektiriyor ama /v1/chat/completions çağrıldı (veya tersi) | | 400 | unsupported_capability | Model bu reasoning seviyesini veya modaliteyi desteklemiyor | | 401 | auth_error | Geçersiz API anahtarı | | 402 | insufficient_balance | Bakiye yetersiz | | 429 | rate_limit_exceeded | RPM/TPM limiti aşıldı | | 502 | provider_error | Sağlayıcı hatası |

Detay için Hatalar bölümüne bakın.