Chat Completions
LLMTR gateway, OpenAI Chat Completions API'sine uyumludur. Tüm istekler https://llmtr.com/v1/chat/completions adresine POST edilir.
Request
Section titled “Request”POST /v1/chat/completionsAuthorization: Bearer llmtr-your_keyContent-Type: application/jsonGövde parametreleri
Section titled “Gövde parametreleri”| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
model | string | evet | Canonical model ID (örn. openai/gpt-4o) |
messages | array | evet | OpenAI messages formatı |
stream | boolean | hayır | true ise SSE akışı döner |
temperature | number | hayır | 0-2 aralığında, default model'e göre değişir |
max_tokens | integer | hayır | Çıktı token üst sınırı |
top_p | number | hayır | Nucleus sampling |
frequency_penalty | number | hayır | -2 ile 2 arası |
presence_penalty | number | hayır | -2 ile 2 arası |
stop | string/array | hayır | Durdurma dizileri |
response_format | object | hayır | { "type": "json_object" } destekleyen modellerde |
tools | array | hayır | Function calling (destekleyen modellerde) |
tool_choice | string/object | hayır | auto, none veya belirli tool |
Temel örnek
Section titled “Temel örnek”curl https://llmtr.com/v1/chat/completions \ -H "Authorization: Bearer llmtr-your_key" \ -H "Content-Type: application/json" \ -d '{ "model": "openai/gpt-4o", "messages": [ {"role": "system", "content": "You are a concise assistant."}, {"role": "user", "content": "What is LLMTR?"} ], "temperature": 0.3, "max_tokens": 200 }'Response
Section titled “Response”Başarılı yanıt OpenAI formatıyla birebir aynıdır:
{ "id": "chatcmpl-xxx", "object": "chat.completion", "created": 1739200000, "model": "openai/gpt-4o", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "LLMTR is a unified gateway..." }, "finish_reason": "stop" } ], "usage": { "prompt_tokens": 24, "completion_tokens": 52, "total_tokens": 76 }}Model kimliği formatı
Section titled “Model kimliği formatı”Tüm modeller canonical olarak provider/model şeklinde referanslanır:
openai/gpt-4oanthropic/claude-sonnet-4.5google/gemini-3.6-flashdeepseek/deepseek-v4-flashmistral/mistral-large-latest
Tüm katalog için dashboard model listesini veya GET /v1/models ucunu kullanın.
Emekliye ayrılan modeller
Section titled “Emekliye ayrılan modeller”Bir model sağlayıcı tarafından kullanımdan kaldırıldığında LLMTR isteği sessizce
başka bir modele yönlendirmez. Emeklilik tarihinden sonra istek 410 ile
reddedilir ve yanıt hangi modele geçmeniz gerektiğini söyler:
{ "error": { "type": "model_retired", "message": "Model \"google/gemini-2.5-flash\" was retired on 2026-10-16. Use \"google/gemini-3.6-flash\" instead.", "details": { "model": "google/gemini-2.5-flash", "retirement_date": "2026-10-16", "replacement_model": "google/gemini-3.6-flash", "status": "retired" } }}Model sayfası ve katalog kartı, emeklilik tarihinden önce de uyarı gösterir;
/v1/models çıktısı ise emekli modelleri listelemez.
Gemini 2.5 kapanıyor
Section titled “Gemini 2.5 kapanıyor”Google, Gemini 2.5 metin modellerini Gemini Enterprise Agent Platform üzerinde kullanımdan kaldırıyor. LLMTR bu üç kimliği 16 Ekim 2026 tarihinde kapatır:
| Kapanan model | Önerilen karşılığı |
|---|---|
google/gemini-2.5-flash | google/gemini-3.6-flash |
google/gemini-2.5-flash-lite | google/gemini-3.5-flash-lite |
google/gemini-2.5-pro | google/gemini-3.1-pro-preview |
Diğer google/gemini-2.5-* modelleri (görsel, TTS, native audio, computer use)
bu kapanmanın kapsamında değildir.
Sağlayıcıya özgü davranışlar
Section titled “Sağlayıcıya özgü davranışlar”Bazı sağlayıcılar ek body alanları veya özel seçenekler destekler. Desteklenen alanları doğrudan isteğinize ekleyebilirsiniz.
Tencent Hy3
Section titled “Tencent Hy3”tencent/hy3 düşünmeyi varsayılan olarak kapalı tutar. Düşünmeyi açmak için canonical suffix veya standart body alanını kullanın:
{ "model": "tencent/hy3:low", "messages": [{ "role": "user", "content": "Bu kodu analiz et." }] }{ "model": "tencent/hy3", "reasoning": { "effort": "high" }, "messages": [{ "role": "user", "content": "Bu kodu analiz et." }] }Yalnız low ve high desteklenir. tools bulunan low istekleri, Hy3 adaptive-thinking davranışı nedeniyle upstream'de high olarak yürütülür. Yanıtta reasoning_content, usage.completion_tokens_details.reasoning_tokens ve cache hit olduğunda usage.prompt_tokens_details.cached_tokens alanları bulunabilir. Reasoning tokenları zaten completion_tokens içindedir ve ikinci kez ücretlendirilmez.
Çok adımlı tool calling sırasında dönen assistant mesajını tool_calls, content ve reasoning_content alanlarıyla birlikte geçmişe ekleyin. Alanı düşürmek modelin sonraki turdaki reasoning bağlamını bozar.
Model 256K pencere ile duyurulur, ancak tek bir istek en fazla 192K token (196.608) girdi kabul eder. Bu sınırın üzerindeki istemlerde sağlayıcı hata döndürmez: istemin baş tarafını sessizce düşürür, kalanla yanıt verir ve kaybı bildirmez. Bu yüzden /v1/models bu model için context_length değerini 196608 olarak bildirir; bağlam boyutunu bu alandan okuyan istemciler otomatik olarak sınırın altında kalır. İstemi elle boyutlandırıyorsanız uzun dokümanları bu sınırın altında tutun veya parçalara bölün.
Tencent Hy4 Preview
Section titled “Tencent Hy4 Preview”tencent/hy4-preview, Hy3'ün aksine düşünmeyi varsayılan olarak açık tutar ve farklı bir alan kullanır: Hy3’ün reasoning.effort kademeleri yerine tek bir kapatma anahtarı sunar.
{ "model": "tencent/hy4-preview:none", "messages": [{ "role": "user", "content": "2+2 kaç eder? Sadece sayı." }] }{ "model": "tencent/hy4-preview", "reasoning_effort": "none", "messages": [{ "role": "user", "content": "2+2 kaç eder? Sadece sayı." }] }Yalnız none desteklenir. Sağlayıcı diğer seviyeleri kabul etse de ölçümde düşünme uzunluğunu düzenli biçimde değiştirmiyorlar; seçilebilir olsalardı hiçbir şeyi değiştirmeden düşünme tokenı faturalatırlardı. Desteklenmeyen bir seviye istenirse istek yukarı akışa gitmeden 400 ile reddedilir.
Yanıtta reasoning_content ve usage.completion_tokens_details.reasoning_tokens döner; reasoning tokenları zaten completion_tokens içindedir ve ikinci kez ücretlendirilmez. Model prompt cache destekler, cache’ten okunan tokenlar usage.prompt_tokens_details.cached_tokens alanında gelir ve indirimli cache okuma fiyatından faturalanır.
json_schema ile şema zorlamalı JSON çıktısı verir. Araç çağrısında iki sınırı vardır — tool_choice: "required" desteklenmez ve isimli seçimde finish_reason yanlış etiketlenir; ayrıntı için Tool Calling sayfasına bakın.
Model yalnızca metin kabul eder. Gönderilen görsel hata verilmeden düşürülür: istek 200 döner, prompt_tokens yalnızca metni sayar ve model görseli göremediğini söyler. Bu modele görsel göndermeyin.
LLMTR Qwen 3.5 4B (Türkiye)
Section titled “LLMTR Qwen 3.5 4B (Türkiye)”llmtr/qwen3-5-4b Türkiye'de barındırılan bir modeldir: istekler üçüncü taraf bir sağlayıcıya yönlendirilmez. 128K bağlam penceresi (prompt + cevap birlikte) sunar, görsel girdi okur ve tool calling destekler.
Düşünme varsayılan olarak açıktır. Model yanıttan önce bir akıl yürütme üretir ve bunu message.reasoning_content alanında döndürür. Akıl yürütme max_tokens bütçesinden harcanır: bütçe küçükse tamamı akıl yürütmede tükenir, content boş döner ve finish_reason length olur. Varsayılan modda max_tokens değerini en az 2048 verin.
Düşünmeyi kapatmak için canonical suffix'i veya body alanını kullanın:
{ "model": "llmtr/qwen3-5-4b:fast", "messages": [{ "role": "user", "content": "Bu urunu tek cumlede ozetle." }], "max_tokens": 256 }{ "model": "llmtr/qwen3-5-4b", "reasoning": false, "messages": [{ "role": "user", "content": "Bu urunu tek cumlede ozetle." }], "max_tokens": 256 }Kapalı hâlde ekstra akıl yürütme tokenı harcanmaz, yanıt reasoning_content içermez ve yanıtlar belirgin şekilde hızlıdır. Kısa yanıt bekleyen sınıflandırma, etiketleme ve özetleme akışlarında bu modu tercih edin.
Model prompt cache destekler. Aynı prompt önekini (örneğin sabit bir sistem promptu) tekrar gönderdiğinizde cache devreye girer; cache'ten okunan token sayısı usage.prompt_tokens_details.cached_tokens alanında döner ve bu tokenlar indirimli cache read fiyatından faturalanır. Uzun sistem promptu kullanan RAG ve chatbot akışlarında maliyeti azaltmak için sabit içeriği mesaj dizisinin başında, değişen içeriği sonunda tutun.
Görsel girdi yalnızca base64 data URL olarak kabul edilir; uzak bir https:// görsel adresi 400 unsupported_input döner. Ayrıntı için LLMTR Qwen 3.5 4B sayfasına bakın. Ses ve video girdisi desteklenmez.
OpenAI reasoning modelleri
Section titled “OpenAI reasoning modelleri”Aşağıdaki modeller sabit sampling ayarlarıyla çalışır ve temperature ile top_p değerlerini kabul etmez:
openai/o1, openai/o3, openai/o3-mini, openai/o4-mini, openai/gpt-5.5, openai/gpt-5.5-pro, openai/gpt-5.6-sol, openai/gpt-5.6-sol-pro, openai/gpt-5.6-terra, openai/gpt-5.6-terra-pro, openai/gpt-5.6-luna, openai/gpt-5.6-luna-pro, openai/gpt-6-astra
Bu modellere temperature veya top_p gönderirseniz istek reddedilmez: LLMTR ilgili alanı gövdeden çıkarır ve isteği çalıştırır. Hangi alanların çıkarıldığı yanıtta bildirilir:
{ "id": "chatcmpl-xxx", "object": "chat.completion", "choices": [], "usage": {}, "llmtr_dropped_parameters": ["temperature", "top_p"]}llmtr_dropped_parameters alanı yalnızca gerçekten bir alan çıkarıldığında bulunur; diğer tüm yanıtlar OpenAI şemasıyla birebir aynıdır. Akış (streaming) modunda aynı alan son chunk'ta döner.
Bu modeller /v1/models çıktısında supported_parameters içinde temperature ve top_p listelemez, dolayısıyla bu alanı okuyan ajan çerçeveleri parametreyi kendiliğinden göndermez.
Not: Her reasoning modeli bu grupta değildir. openai/gpt-5.3-codex reasoning yapar ve temperature kabul eder. Ayrımı model bazında ölçüyoruz, model ailesine göre varsaymıyoruz.
o-serisinde düşünme derinliği
Section titled “o-serisinde düşünme derinliği”openai/o1, openai/o3, openai/o3-mini ve openai/o4-mini düşünme derinliğini reasoning_effort ile kabul eder. Desteklenen seviyeler low, medium ve high. Model kimliğine suffix olarak da yazabilirsiniz:
{ "model": "openai/o4-mini:high", "messages": [{ "role": "user", "content": "Bu algoritmanin karmasikligini analiz et." }] }{ "model": "openai/o4-mini", "reasoning_effort": "high", "messages": [{ "role": "user", "content": "Bu algoritmanin karmasikligini analiz et." }] }Seviye verilmezse alan gönderilmez ve OpenAI kendi varsayılanını uygular.
xhigh bilerek desteklenmez. Sağlayıcı bu değeri kabul edip 200 döndürüyor, ancak ölçümde dört modelde de düşünme tokenı üretmiyor: seçilebilir olsaydı hiçbir şeyi değiştirmeden seçim sunardı. Desteklenmeyen bir seviye istenirse istek yukarı akışa gitmeden 400 ile reddedilir ve hata mesajı çalışan seviyeleri sayar.
Yanıtta düşünme tokenları usage.completion_tokens_details.reasoning_tokens alanında raporlanır; bu tokenlar zaten completion_tokens içindedir ve ikinci kez ücretlendirilmez.
Moonshot AI (Kimi)
Section titled “Moonshot AI (Kimi)”moonshot/kimi-k2.5, 5 Eylül 2026'da emekli edilmiştir (model_retired, HTTP 410); yeni ve mevcut entegrasyonlarda moonshot/kimi-k2.6 kullanın.
moonshot/kimi-k3, moonshot/kimi-k2.7-code ve moonshot/kimi-k2.6 modelleri thinking varsayılan açık çalışır. moonshot/kimi-k2.7-code için non-thinking mod desteklenmez; thinking alanını hiç göndermeyin veya { "type": "enabled" } kullanın. thinking: { "type": "disabled" } 400 invalid_request döner.
moonshot/kimi-k3 için thinking kapatılabilir: istek gövdesinde "reasoning": false gönderin veya model adına :fast suffix'i ekleyin (moonshot/kimi-k3:fast). :think suffix'i thinking'i açık tutar; suffix ve reasoning alanı verilmezse varsayılan davranış thinking açıktır. Thinking kapalıyken yanıt reasoning_content içermez ve reasoning tokenı üretilmez. Reasoning tokenları output olarak faturalandığı için kısa yanıtlarda bile max_tokens değerini yüksek tutun (en az 1024 önerilir).
Kimi K3, K2.7 Code ve K2.6 için sampling değerleri sabittir: temperature=1, top_p=0.95, n=1, presence_penalty=0, frequency_penalty=0. Farklı n, presence/frequency penalty veya Kimi'nin desteklemediği tool_choice biçimleri upstream hatası beklenmeden 400 döndürür. K2 ailesinde tool_choice yalnızca auto veya none kabul eder; kimi-k3 ek olarak required destekler. Belirli bir fonksiyonu zorlayan {"type": "function", ...} biçimi hiçbir Kimi modelinde desteklenmez.
kimi-k3 web araması desteklemez; $web_search içeren istekler 400 döner. Web araması gereken akışlarda kimi-k2.7-code veya kimi-k2.6 kullanın.
Çok adımlı tool calling sırasında Kimi, assistant tool-call mesajında reasoning_content alanı döndürebilir. Sonraki tool result turunda bu assistant mesajını tool_calls ve reasoning_content ile birlikte koruyun; LLMTR bu provider-specific alanı tur boyunca korur.
Medya girdilerinde remote URL yerine base64 data URL kullanın. Görsel ve video parçaları data: URL olarak gönderilmelidir; remote medya URL'leri 400 unsupported_input döner.
Xiaomi MiMo
Section titled “Xiaomi MiMo”Aktif chat model kimlikleri: mimo/mimo-v2.5-pro, mimo/mimo-v2.5.
Eski MiMo V2 model kimlikleri 30 Haziran 2026 00:00 Beijing saati sonrasında model_retired (HTTP 410) hatası döner. Endpoint ve API key değişmez; model ID'yi aşağıdaki replacement kimliğe taşıyın.
| Eski model ID | Replacement model ID | Geçiş davranışı |
|---|---|---|
mimo/mimo-v2-pro | mimo/mimo-v2.5-pro | 1 Haziran 2026'dan itibaren LLMTR tarafından otomatik yönlendirilir |
mimo/mimo-v2-omni | mimo/mimo-v2.5 | 1 Haziran 2026'dan itibaren LLMTR tarafından otomatik yönlendirilir |
mimo/mimo-v2-flash | mimo/mimo-v2.5 | 18 Haziran 2026'dan itibaren MiMo upstream tarafından otomatik yönlendirilir; 30 Haziran 2026 sonrası eski ID kabul edilmez |
LLMTR'de MiMo TTS modeli şu an expose edilmez; TTS/ASR desteği geldiğinde ayrı endpoint ve doküman ile duyurulacaktır.
Web aramasını etkinleştirme. İki yöntem de kullanılabilir:
// Yöntem 1: Tool alanı ile{ "tools": [{ "type": "web_search" }] }
// Yöntem 2: Body alanı ile{ "webSearchEnabled": true }Web araması kullanılan isteklerde ek sağlayıcı ücretleri oluşabilir. Üretim trafiği göndermeden önce ilgili modelin fiyatını kontrol edin.
Thinking kontrolü. Destekleyen modellerde body alanına thinking ekleyerek davranışı ayarlayabilirsiniz:
{ "thinking": { "type": "enabled" } } // veya "disabled"Hata kodları
Section titled “Hata kodları”| HTTP | error.type | Anlamı |
|---|---|---|
| 400 | invalid_request_error | Geçersiz parametre / eksik alan |
| 401 | auth_error | Geçersiz veya süresi dolmuş API anahtarı |
| 403 | forbidden | Bu model için yetki yok |
| 410 | model_retired | Model kullanımdan kaldırıldı; hata mesajındaki replacement model ID'sini kullanın |
| 429 | rate_limit_exceeded | Rate limit aşıldı |
| 500 | internal_error | Gateway iç hatası |
| 502 | provider_error | Sağlayıcı tarafında hata |
Detay için Hatalar bölümüne bakın.