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.

POST /v1/messages

Mesaj oluşturur (akışlı ya da akışsız). Yanıt Anthropic Message nesnesi ya da Anthropic SSE olaylarıdır.

POST /v1/messages/count_tokens

İsteğin girdi token sayısını döndürür. Ücretsizdir; bakiyeden düşmez.

GET /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.

warning

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
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!"}]
  }'
Python
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)
Node.js
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

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.

JSON
// 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

JSON
{
  "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.

Size uygun modeli bulmanıza yardımcı olayım mı?