Anthropic Messages API
Anthropic SDK ve Claude Code ile uyumlu /v1/messages ucu
Onysoft, Anthropic Messages API biçimini de sunar. Anthropic SDK'sıyla yazılmış kodunuz ve Claude Code, yalnız temel adresi ve anahtarı değiştirerek çalışır; aynı sk-ony- anahtarı, aynı bakiye ve aynı model kataloğu kullanılır. Claude dışı modeller de bu uçtan çağrılabilir. Claude Code kurulumu için Claude Code bölümüne bakın.
/v1/messages
Mesaj oluşturur (akışlı ya da akışsız). Yanıt Anthropic Message nesnesi ya da Anthropic SSE olaylarıdır.
/v1/messages/count_tokens
İsteğin girdi token sayısını döndürür. Ücretsizdir; bakiyeden düşmez.
/v1/models
anthropic-version başlığıyla çağrılınca model listesini Anthropic biçiminde döndürür (bkz. Models API).
Temel Adres ve Kimlik Doğrulama
Anthropic SDK'sında ve Claude Code'da temel adres https://api.onysoft.com olmalıdır; istemci /v1/messages yolunu kendisi ekler. Anahtar iki yoldan gönderilebilir: Authorization: Bearer sk-ony-... ya da x-api-key: sk-ony-.... İkisi birden gelirse Authorization kullanılır. anthropic-version başlığını SDK'lar kendisi gönderir (ör. 2023-06-01). x-api-key yalnız bu uçlarda kabul edilir; /v1/chat/completions gibi diğer uçlar Authorization: Bearer ister.
Sonuna /v1 eklemeyin. Temel adres https://api.onysoft.com/v1 yazılırsa istek /v1/v1/messages adresine gider ve 404 döner; Claude Code bunu "There's an issue with the selected model" diye gösterir. OpenAI SDK'sı ise https://api.onysoft.com/v1 ister.
Örnek İstek
curl https://api.onysoft.com/v1/messages \
-H "x-api-key: $ONYSOFT_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "anthropic/claude-sonnet-5.5",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Merhaba!"}]
}'
import os
from anthropic import Anthropic
client = Anthropic(
base_url="https://api.onysoft.com", # sonuna /v1 eklemeyin
api_key=os.environ["ONYSOFT_API_KEY"],
)
message = client.messages.create(
model="anthropic/claude-sonnet-5.5",
max_tokens=1024,
messages=[{"role": "user", "content": "Merhaba!"}],
)
print(message.content[0].text)
import Anthropic from '@anthropic-ai/sdk';
const client = new Anthropic({
baseURL: 'https://api.onysoft.com', // sonuna /v1 eklemeyin
apiKey: process.env.ONYSOFT_API_KEY,
});
const message = await client.messages.create({
model: 'anthropic/claude-sonnet-5.5',
max_tokens: 1024,
messages: [{ role: 'user', content: 'Merhaba!' }],
});
console.log(message.content[0].text);
Model Adları
model alanına katalog kimliğini (anthropic/claude-sonnet-5.5) ya da Anthropic kimliğini (claude-sonnet-5-5, claude-haiku-4-5-20251001) yazabilirsiniz; Anthropic kimlikleri katalogdaki karşılığına çevrilir. claude-sonnet-latest gibi adlar ~anthropic/claude-sonnet-latest takma adına gider. Öneksiz ama katalogda tek bir modele uyan adlar da çözülür. Katalogda bulunmayan ya da anahtarınızın izinli olmadığı bir model 404 not_found_error döner. Claude dışı modeller (ör. openai/gpt-5.5, z-ai/glm-5.3:tr) de bu uçtan çağrılabilir: istek sohbet biçimine çevrilir, yanıt yine Anthropic biçiminde döner.
Desteklenen ve Desteklenmeyen Alanlar
- Claude modellerinde
system,tools,tool_choice,thinking,stop_sequencesve akış Anthropic biçimiyle desteklenir; istek gövdesi (cache_controlişaretleri dahil) Anthropic'e değiştirilmeden iletilir. - Sunucu araçlarından web araması (
web_search) ve web sayfası getirme (web_fetch) Claude modellerinde çalışır; web araması ayrıca ücretlendirilir. - Desteklenmeyenler (Claude modellerinde 400
invalid_request_error; hata iletisinde ilgili alan ya da araç adı yazar): Files API dosya kimlikleri (file_id,container_upload),thread, fiyatı tanımlı olmayan sunucu araçları (code_execution,tool_searchvb.),containerve uzak MCP bağlayıcısı (mcp_servers). Kendi bilgisayarınızda çalışan MCP sunucuları (istemci tarafı araç çağrısı) etkilenmez. - İstekten sessizce çıkarılanlar:
fallbacks,context_managementiçindekicompact_*düzenlemeleri,speed,service_tiervediagnostics. İstek bunlar olmadan normal biçimde çalışır. - Claude dışı modellerde düşünce (thinking) blokları yanıta eklenmez, Anthropic'e özgü alanlar (
cache_control,metadata,context_management) modele iletilmez ve sunucu araçları istekten çıkarılır. max_tokenszorunludur; modelin çıktı tavanını aşarsa tavana indirilir.- Message Batches (
/v1/messages/batches) ve Files API uçları yoktur (404).
Token Sayımı
POST /v1/messages/count_tokens isteğin girdi token sayısını {"input_tokens": N} olarak döndürür; ücretsizdir. Claude modellerinde sayım Anthropic tarafından yapılır. Diğer modellerde (ya da sayım yapılamazsa) yaklaşık bir tahmin döner ve yanıtta X-Onysoft-Token-Count: estimate başlığı bulunur. Anahtarınızın model izinleri bu uçta da uygulanır; istek dakikalık istek sayacına dahildir.
// POST /v1/messages/count_tokens
{ "model": "anthropic/claude-sonnet-5.5", "messages": [{ "role": "user", "content": "Merhaba!" }] }
// 200
{ "input_tokens": 10 }
Yanıt ve Akış
Akışsız istekte Anthropic Message nesnesi döner (id, type: "message", content, stop_reason, usage). stream: true ile Anthropic SSE olayları gelir: message_start, content_block_start, content_block_delta, content_block_stop, message_delta ve message_stop. Akış başladıktan sonra oluşan bir hata event: error olayıyla bildirilir; geçici durumlarda hata türü overloaded_error olur ve Claude Code isteği kendisi yeniden dener.
Hata Biçimi
{
"type": "error",
"error": {
"type": "not_found_error",
"message": "model: claude-ornek bulunamadı"
}
}
Bu uçlardaki hatalar Anthropic biçimindedir; success, code ve param alanları yoktur. Türler: 400 invalid_request_error, 401 authentication_error, 402 billing_error, 403 permission_error, 404 not_found_error, 413 request_too_large, 429 rate_limit_error, 503 overloaded_error, 504 timeout_error, diğer 5xx api_error. İzinli olmayan ya da katalogda bulunmayan model 404 not_found_error döner. 402 iletisinde gereken ve mevcut tutar yazar.
Ücretlendirme
Ücret, Chat Completions ile aynı kuralla ve aynı model fiyatıyla gerçek kullanımdan kesilir. İstekten önce max_tokens değerine göre bakiye ön kontrolü yapılır (bkz. Bakiye ön kontrolü). count_tokens ücretsizdir.