Bir sağlayıcıdan ayrılırken temel URL en kolay kısımdır; geçişlerin başarısız olduğu yerler hata yollarıdır. OpenAI'dan TokenLab'e geçmek için OpenAI SDK istemcinizdeki iki değeri değiştirmeniz gerekir: base_url ve api_key. Bu kılavuzun geri kalanı, bu değişiklikle ilgili neleri doğrulamanız gerektiğini kapsar. Yani gönderdiğiniz model kimliği (ID), güncel fiyatı, streaming (akış), araç çağrıları, hata yönetimi, zaman aşımları ve faturalandırma. Aşağıdaki bilgiler, her biri gözlem tarihiyle birlikte TokenLab dokümanlarından ve canlı model API'sinden alınmıştır.
Önemli Çıkarımlar
- Temel değişiklik iki değerden ibarettir: TokenLab temel URL'si
https://api.tokenlab.sh/v1ve bir TokenLab API anahtarı (bunlarsk-ile başlar). - TokenLab, Chat Completions ve Responses için OpenAI SDK desteğini belgeler. İsteğe bağlı parametreler, araç seçenekleri ve yalnızca Responses alanları yine de seçilen modele bağlıdır.
- Herhangi bir karar vermeden önce modelinizin fiyatını canlı API üzerinden okuyun. 03.10.2026 itibarıyla
gpt-5.5, 1 milyon token başına 1,50$ giriş ve 9,00$ çıkış fiyatıyla listelenmiştir. - Üretim trafiğini taşımadan önce sondaki kontrol listesini uygulayın. Sürprizlerin çoğu mutlu yolda değil, hata yönetimi, zaman aşımları ve faturalandırmada yaşanır.
OpenAI'dan TokenLab'e Geçiş İçin İki Değerli Değişiklik
Anahtarla başlayın. Hızlı Başlangıç (03.10.2026 tarihinde gözlemlendi) uyarınca, bir hesap oluşturur, bir API anahtarı oluşturur ve tam değeri hemen kaydedersiniz. Bu değer yalnızca bir kez gösterilir ve anahtar listesindeki ön ek isteklerin kimliğini doğrulayamaz. İlk çağrıdan önce bakiyenizi kontrol edin, çünkü istekler seçilen modelin güncel fiyatı üzerinden faturalandırılır.
Ardından istemciyi değiştirin. Geçiş kılavuzu (03.10.2026 tarihinde gözlemlendi) tarifi şu şekilde tanımlar: base_url / baseURL değerini https://api.tokenlab.sh/v1 olarak ayarlayın, anahtarı değiştirin ve GET /v1/models içinden bir model kimliği seçin.
Örneğin, yapılandırmasında gpt-5.5 dizesi bulunan bir servis hayal edin. İki değerli değişiklikten sonra, aynı dize geçerli bir istektir ancak yine de önce kimliği doğrulamamız gerekir. GET /v1/models ve GET /v1/models/{model} herkese açık keşif uç noktalarıdır ve anahtar olmadan çalışırlar.
Python
import os
from openai import OpenAI
# Öncesi: client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])
client = OpenAI(
api_key=os.environ["TOKENLAB_API_KEY"],
base_url="https://api.tokenlab.sh/v1",
timeout=30.0,
max_retries=0,
)
response = client.chat.completions.create(
model="gpt-5.5",
messages=[{"role": "user", "content": "Hello, world!"}],
)
print(response.choices[0].message.content)
Node.js
import OpenAI from 'openai';
// Öncesi: new OpenAI({ apiKey: process.env.OPENAI_API_KEY })
const client = new OpenAI({
apiKey: process.env.TOKENLAB_API_KEY,
baseURL: 'https://api.tokenlab.sh/v1',
timeout: 30_000,
maxRetries: 0,
});
const completion = await client.chat.completions.create({
model: 'gpt-5.5',
messages: [{ role: 'user', content: 'Hello' }],
});
console.log(completion.choices[0].message.content);
cURL
curl https://api.tokenlab.sh/v1/chat/completions \
-H "Authorization: Bearer $TOKENLAB_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-5.5","messages":[{"role":"user","content":"Say hello"}]}'
İlk iki örnekteki zaman aşımı ve yeniden deneme ayarları, 30 saniyelik zaman aşımı ve sıfır SDK yeniden denemesi kullanan Hızlı Başlangıç örneklerini (03.10.2026 tarihinde gözlemlendi) yansıtır. Test sırasında yeniden denemeleri sıfırda tutuyoruz, böylece başarısız olan bir istek sessizce yeniden denenmek yerine görünür hale geliyor.
Temel URL'yi istemci yapılandırmasında açıkça belirtin. SDK kılavuzu (03.10.2026 tarihinde gözlemlendi), eski ortam değişkeni takma adlarına güvenmek yerine bunu önerir. Anahtarı sunucuda ve bir gizli yönetim aracında (secret manager) tutun, asla istemci tarafındaki kodda bulundurmayın.
Model Kimliğini Seçin ve Fiyatını Okuyun
Bir geçiş, bir model kimliğini veya fiyatını varsaymamalıdır. Her ikisi de model API'sinde bulunur. 03.10.2026 tarihinde https://api.tokenlab.sh/v1/models/gpt-5.5 ve https://api.tokenlab.sh/v1/models/laguna-s-2.1 adreslerini okuduk. Her ikisi için fiyatlandırma en son 2026-10-02T16:53:30.068Z tarihinde güncellenmiştir.
| Alan | gpt-5.5 |
laguna-s-2.1 |
|---|---|---|
| Yaşam döngüsü aşaması | active | active |
| Maksimum giriş / çıkış token'ı | 1.000.000 / 128.000 | 1.048.576 / 131.072 |
| Kabul edilen istek formatları | openai_chat_completions, openai_responses |
openai_chat_completions |
| Listelenen yetenekler | coding, json-mode, prompt-cache, reasoning, tool-use, vision | tool-use |
| Giriş, 1M token başına USD | 1.5 | 0.1 |
| Çıkış, 1M token başına USD | 9 | 0.2 |
| Önbellek okuma, 1M token başına USD | 0.15 | 0.01 |
Kaynaklar: gpt-5.5 ve laguna-s-2.1, her ikisi de 03.10.2026 tarihinde gözlemlenmiştir.
Bu oranları bir sayıya dönüştürmek için, işte gösterilen hesaplamalarla bir tahmin. Önbellek isabeti olmayan, 1M giriş token'ı ve 100k çıkış token'ı olan bir işi ele alalım.
gpt-5.5: 1 × 1,50$ + 0,1 × 9,00$ = 1,50$ + 0,90$ = 2,40$.laguna-s-2.1: 1 × 0,10$ + 0,1 × 0,20$ = 0,10$ + 0,02$ = 0,12$.
Bunlar, listelenen token başına oranlardan elde edilen tahminlerdir. Nihai ücretiniz Kullanım (Usage) kaydıdır. Tokenlaştırma modele göre değişir, bu nedenle aynı metin farklı modellerde farklı token sayıları üretir.
Burada bir tasarruf iddiasında bulunmuyoruz. Bugün ödediğiniz tutarla karşılaştırmak için, geçiş yaptığınız gün TokenLab oranlarını kendi OpenAI faturanızın veya OpenAI fiyatlandırma sayfasının yanına koyun. Fiyatlar değişir ve faturalandırma kılavuzu (03.10.2026 tarihinde gözlemlendi), kopyalanmış bir fiyat tablosunu kodunuza sabit kodlamamanızı (hard-code) söyler. Güncel değerler için GET /v1/models/:model/pricing adresini işaret eder.
Diğer model kimlikleri de aynı düzeni izler. Doküman örnekleri, Chat Completions için gpt-5.6-terra ve gpt-5.6-luna, kendi rotalarında ise claude-sonnet-5 ve gemini-3.5-flash kullanır. Trafiği yönlendirmeden önce her modelin kabul edilen formatlarını okuyun. Daha geniş karşılaştırmalar için model dizinine, OpenRouter vs TokenLab karşılaştırmasına ve model sıralamalarına bakın. Görüntü ve video ekipleri en iyi yapay zeka görüntü modelleri API'si 2026 ve en iyi yapay zeka video modelleri API'si 2026 ile başlayabilir. Kodlama görevleri için kodlama için en iyi yapay zeka modellerine bakın.
OpenAI'dan TokenLab'e Geçerken Sırada Ne Kontrol Edilmeli?
TokenLab, OpenAI SDK'sının Chat Completions ve Responses ile çalıştığını belgeler. Bu, istek ve yanıt formatıyla uyumluluktur, her modelin aynı şekilde davranacağına dair bir söz değildir. API formatları kılavuzu (03.10.2026 tarihinde gözlemlendi), isteğe bağlı parametrelerin modele bağlı olduğunu belirtir. Ayrıca bir modelin dört API formatının tamamını kabul etmesinin gerekmediğini ve tokenlab.accepted_request_formats alanının hangilerini kabul ettiğini gösterdiğini belirtir. Aşağıdaki her alanı gerçek trafiğinizle test etmeniz gereken bir şey olarak değerlendirin.
Streaming (Akış)
stream: true, kısmi mesaj deltalarını sunucu tarafından gönderilen olaylar (server-sent events) olarak gönderir. Create Chat Completion referansında (03.10.2026 tarihinde gözlemlendi) belgelendiği gibi, akış parçalarında token kullanımını almak için include_usage: true ile stream_options ayarını yapın.
stream = client.chat.completions.create(
model="gpt-5.5",
messages=[{"role": "user", "content": "Count to five."}],
stream=True,
stream_options={"include_usage": True},
)
for chunk in stream:
if chunk.choices:
print(chunk.choices[0].delta.content or "", end="")
Planlanması gereken iki davranış vardır. Bir akış çıktı geldikten sonra kesilirse, bunu tam bir yanıt olarak değerlendirmeyin. Hata yönetimi kılavuzu (03.10.2026 tarihinde gözlemlendi), bunu tekrarlamanın farklı bir çıktı veya ikinci bir ücretlendirme üretebileceği konusunda uyarır. Ayrıca akış, faturalandırmadan önce bitebilir, bu nedenle faturalandırma kimliği eksik olabilir.
Araç çağrıları
Chat Completions referansı tools, tool_choice ve parallel_tool_calls öğelerini listeler. Paralel çağrıların "seçilen model tarafından desteklendiğinde" çalıştığını belirtir. Fonksiyon çağırma, "seçilen model tarafından desteklenir" şeklinde belgelenmiştir, bu nedenle yetenek listesini kontrol edin. Yukarıdaki tabloda hem gpt-5.5 hem de laguna-s-2.1 araç kullanımını listeler, ancak yalnızca gpt-5.5 json-mode ve vision özelliklerini listeler. Oyuncak bir örnek değil, gerçek araç şemalarınızı gönderin ve döndürülen argümanların ayrıştırıldığını kontrol edin.
Claude modellerini çağırmayı planlıyorsanız, geçiş kılavuzunun kuralına dikkat edin. Claude araç çağrıları, düşünme blokları ve Anthropic mesaj alanları /v1/messages rotasına aittir ve Chat Completions bunları garanti etmez.
Hata şekilleri
Chat Completions ve Responses, OpenAI tarzı bir error nesnesi döndürür. Hata yönetimi kılavuzuna göre, yalnızca message ve type her zaman mevcuttur. code, param, retryable ve retry_after gibi alanlar ilgili olduğunda görünür. Mesaj metnine göre değil, HTTP durumuna ve code değerine göre dallanma yapın ve ayrıştırıcınızın eksik alanlara tolerans göstermesini sağlayın. Anthropic Messages ve Gemini kendi hata formatlarını korur, bu nedenle tek bir ayrıştırıcı her rotayı kapsamaz.
| Durum | Kod | Ne anlama gelir |
|---|---|---|
| 401 | invalid_api_key |
Anahtar eksik, geçersiz, etkin değil veya iptal edilmiş |
| 401 | expired_api_key |
Anahtarın süresi dolmuş |
| 402 | insufficient_balance |
Hesap bakiyesi isteği karşılayamıyor |
| 402 | quota_exceeded |
Anahtarın kendi kullanım limiti dolmuş |
| 403 | model_not_allowed |
Bu anahtar istenen modeli kullanamaz |
| 429 | rate_limit_exceeded |
Çok fazla istek; Retry-After süresini bekleyin |
Kaynaklar: Kimlik Doğrulama ve hata yönetimi, 03.10.2026 tarihinde gözlemlenmiştir.
Bu tablo yaygın bir varsayımı düzeltir. Boş bir bakiye 401 değil, 402'dir. Mevcut kodunuz her 4xx hatasını hatalı anahtar olarak değerlendiriyorsa, güncelleyin.
Zaman aşımları ve yeniden denemeler
Geçiş kılavuzu, mevcut yeniden deneme, zaman aşımı ve akış kodunun genellikle kalabileceğini belirtir. Bunu belgelenmiş yeniden deneme kurallarına göre gözden geçirin.
- 400, 401, 402, 403, 404 veya 413 yanıtlarını değiştirmeden tekrarlamayın.
- 429 hatasını sunucu tarafından sağlanan gecikmeden sonra yeniden deneyin.
- 500–504 hatalarını yalnızca
retryabledeğeritrueolduğunda yeniden deneyin veretry_aftersüresine uyun. - Bir
503 all_channels_failedhatasıretryable: falseile dönebilir. Bu durumda operasyonun seçilen teslimat kademesinde arzı yoktur, bu nedenle tekrarlamak yardımcı olmayacaktır.
Yanıt başlıklarındaki İstek Kimliğini (Request ID) model ve kendi iş kimliğinizle birlikte kaydedin. Bir inceleme için ihtiyacınız olan şey budur.
Faturalandırma
Faturalandırma kılavuzuna göre, abonelik veya minimum harcama olmaksızın tek bir bakiye tüm modellerde çalışır. Tamamlanan her istek, onu üreten teslimat seçeneği için bir kez ücretlendirilir. Seçenekler TokenLab Verified, Official ve Auto'dur; Auto önce Verified'ı, ardından Official'ı dener. Kesin bir durdurma istiyorsanız her API anahtarına bir harcama limiti koyun. Limit dolduğunda, o anahtarla yapılan istekler 402 döndürür.
Akış içermeyen OpenAI uyumlu yanıtlar, faturalandırma yanıt gönderilmeden önce bittiğinde billing_transaction_id içerir. Ayrıca X-Billing-Transaction-ID başlığında da görünebilir. Bunu saklayın ve kendi token hesaplamalarınız yerine Kullanım (Usage) sayfasıyla mutabakat yapın.
OpenAI'dan TokenLab'e Geçtikten Sonra Doğrulama Kontrol Listesi
Üretim trafiği taşınmadan önce bunları bir hazırlık (staging) anahtarına karşı sırayla çalıştırın. Her satır yukarıda belgelenen bir davranışa izlenebilir.
| Adım | Ne çalıştırılmalı | Ne görmelisiniz |
|---|---|---|
| 1. Model keşfi | GET /v1/models/gpt-5.5 (anahtar gerekmez) |
Yaşam döngüsü active ve kullanmayı planladığınız kabul edilen formatlar |
| 2. Kimlik doğrulamalı istek | Yukarıdaki Python veya cURL örneği | Boş olmayan bir yanıt; istek, model, durum ve kullanım ile İstekler görünümünde belirir |
| 3. Kullanım alanları | Akış içermeyen bir yanıtta usage okuyun |
prompt_tokens, completion_tokens, total_tokens |
| 4. Streaming | include_usage: true ile stream: true |
SSE parçaları, ardından kullanım; kesilen bir akış eksik olarak ele alınır |
| 5. Araç çağrıları | Gerçek tools ve tool_choice değerleriniz |
Argümanlar ayrıştırılır ve şemanızla eşleşir |
| 6. Vision veya JSON modu | Yalnızca model vision veya json-mode listeliyorsa |
Beklenen çıktı; yetenek listelenmemişse testi atlayın |
| 7. Hatalı anahtar | Silinmiş veya yanlış bir anahtarla istek | 401 invalid_api_key |
| 8. Bakiye yok veya anahtar limiti | Düşük limitli veya boş bir çalışma alanına sahip bir anahtar kullanın | 402 insufficient_balance veya quota_exceeded |
| 9. Model kısıtlaması | Bir anahtarın model listesini kısıtlayın, ardından başka bir model isteyin | 403 model_not_allowed |
| 10. Zaman aşımı ve yeniden deneme | Hazırlık ortamında bir zaman aşımını zorlayın | Kodunuz yalnızca retryable ve retry_after değerlerine göre yeniden dener |
| 11. Faturalandırma | billing_transaction_id ve Kullanımı tahmininizle karşılaştırın |
Ücret, modelin güncel fiyatı ve kaydedilen token'larla eşleşir |
Tablo başarılı olduktan sonra üretim yapılandırmanızı değiştirin ve dağıtın. Kullanım (Usage) yeni yolun kararlı olduğunu doğrulayana kadar eski OpenAI anahtarını aktif tutun.
Sıkça Sorulan Sorular
OpenAI'dan geçerken model adlarımı değiştirmem gerekiyor mu?
Mutlaka değil, ancak her birini doğrulayın. TokenLab model kimlikleri tam dizelerdir, bu nedenle bunları GET /v1/models veya GET /v1/models/{model} ile kontrol edin. 03.10.2026 tarihinde canlı API gpt-5.5'i aktif olarak listeledi. Bir istek model_not_found döndürürse, kimlik bilinmiyor veya kullanılamıyor demektir. Model listesini okuyun ve güncel bir kimlik kullanın.
Streaming ve araç çağrıları tam olarak OpenAI'ın API'si gibi mi davranacak?
TokenLab, streaming'i SSE aracılığıyla ve fonksiyon çağırmayı OpenAI uyumlu istek formatı aracılığıyla belgeler. Dokümanlar ayrıca desteklenen seçeneklerin seçilen modele bağlı olduğunu belirtir. Bu nedenle sonucu özdeş değil, uyumlu olarak değerlendiriyoruz. Streaming, tools, tool_choice ve kullandığınız herhangi bir response_format değerini çalıştırmayı planladığınız belirli modelle test edin.
Bakiyem bittiğinde hangi durum kodunu alırım?
insufficient_balance koduyla HTTP 402 alırsınız. Kendi harcama limitine ulaşan bir anahtar da quota_exceeded ile 402 döndürür. Eksik, geçersiz veya iptal edilmiş bir anahtar 401 döndürür. Bunların hiçbirini değiştirmeden yeniden denemeyin. Bakiyeyi yükleyin, anahtar limitini artırın veya anahtarı değiştirin.
Claude veya Gemini modellerini aynı OpenAI istemcisinden çağırabilir miyim?
Model kataloğu, istek formatları arasında openai_chat_completions ile claude-sonnet-5 ve gemini-3.5-flash modellerini listeler. Temel sohbet bu nedenle aynı istemciden geçebilir. Düşünme blokları ve Claude araç kullanımı gibi Claude'a özgü alanlar /v1/messages rotasına aittir. Gemini'ye özgü alanlar /v1beta rotasında kalır. Her konuşma için bir API formatı kullanın.
TokenLab Üzerinde İnşa Etmeye Başlayın
TokenLab'de bir anahtar oluşturun, temel URL'yi https://api.tokenlab.sh/v1 olarak ayarlayın ve üretime dokunmadan önce Hızlı Başlangıç isteğini çalıştırın.
Kaynaklar
Fiyat 2026-10-03 tarihinde gözlendi
- TokenLab Docs: Quickstart2026-10-03 tarihinde gözlendi
- TokenLab Docs: Authentication2026-10-03 tarihinde gözlendi
- TokenLab Docs: Migration Guides2026-10-03 tarihinde gözlendi
- TokenLab Docs: SDKs & Libraries2026-10-03 tarihinde gözlendi
- TokenLab Docs: API formats2026-10-03 tarihinde gözlendi
- TokenLab Docs: Handle API errors2026-10-03 tarihinde gözlendi
- TokenLab Docs: Billing and pricing2026-10-03 tarihinde gözlendi
- TokenLab Docs: Create Chat Completion2026-10-03 tarihinde gözlendi



