Api.Airforce
API REFERENCE

Sohbet tamamlamaları

Tek bir API'den 100'den fazla modelde sohbet yanıtları oluşturun. OpenAI Sohbet Tamamlamaları, Antropik Mesajlar ve Antropik Yanıtlarla uyumludur.

Kimlik doğrulama

Her isteğin bir Taşıyıcı belirtecine (Airforce API anahtarınız) ihtiyacı vardır. Antropik x-api-key başlık da kabul edilir /v1/messages SDK uyumluluğu için.

Authorization: Bearer sk-air-YOUR_API_KEY
# alt for /v1/messages:
x-api-key: sk-air-YOUR_API_KEY

POST /v1/chat/completions

OpenAI uyumlu Sohbet Tamamlamaları. Yetkili ile çalışır openai Geçersiz kılarak SDK base_url ile https://api.airforce/v1.

POSThttps://api.airforce/v1/chat/completions

Talep gövdesi

ParameterTypeRequiredDescription
modelstringRequiredModel kimliği. Kullanılabilir kimlikleri keşfetmek için GET /v1/models komutunu kullanın.
messagesarrayRequiredKonuşma geçmişi. Her girişte { role: "system" | "kullanıcı" | "asistan" | "araç", içerik}. İçerik, bir dizi veya içerik blokları dizisidir (görüş, aşağıya bakınız).
max_tokensintegerOptionalOluşturulacak maksimum jeton sayısı. Modelin max_output_tokens değeriyle sınırlıdır.
temperaturefloatOptionalÖrnekleme sıcaklığı, 0–2. Düşük daha deterministiktir. Varsayılan, yukarı akış sağlayıcısına bağlıdır.
top_pfloatOptionalÇekirdek örneklemesi. Hem sıcaklık hem de top_p kullanın, ikisini birden kullanmayın.
streambooleanOptionalDoğru olduğunda yanıt, Sunucu Tarafından Gönderilen Olayların akışıdır. Aşağıdaki "Akış" konusuna bakın.
stream_optionsobjectOptional{ include_usage: boolean }. Include_usage doğru olduğunda, son SSE öbeği kullanım bloğunu taşır.
stopstring | arrayOptional4'e kadar durdurma dizisi. Bir tanesi üretildiği anda nesil durur.
toolsarrayOptionalModelin çağırabileceği işlev tanımları. Aşağıdaki "Takım çağırma" konusuna bakın.
tool_choicestring | objectOptionalBelirli bir çağrıyı zorlamak için "auto" (varsayılan), "none" veya { type: "function", function: { name } }.
response_formatobjectOptional{ type: "json_object" } modeli geçerli JSON yaymaya zorlar. Desteklemeyen modeller için yoksayılır.
reasoning_effortstringOptionalOpenAI o1/o3 tarzı muhakeme derinliği: "düşük" | "orta" | "yüksek". Bkz. "Akıl yürütme ve düşünme".
thinkingstring | objectOptionalSağlayıcılar arası düşünme anahtarı. "açık" | "kapalı" | "otomatik" veya Antropik şekil { type: "etkin", budget_tokens: N }. Bkz. "Akıl yürütme ve düşünme".
thinking_budgetintegerOptionalModelin mantık izlemesi için belirteç sınırı (sağlayıcı bir tane ortaya çıkardığında).
ignore_defaultsbooleanOptionalBu istek için kullanıcının model başına kayıtlı varsayılan parametrelerini (kontrol panelinde yapılandırılmış) atlayın.

Temel örnek

curl https://api.airforce/v1/chat/completions \
  -H "Authorization: Bearer sk-air-YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.1-chat",
    "messages": [
      {"role": "system", "content": "You are a helpful assistant."},
      {"role": "user", "content": "What is the capital of France?"}
    ],
    "max_tokens": 200,
    "temperature": 0.7
  }'

Tepki şekli

ParameterTypeRequiredDescription
idstringOptionalKararlı tamamlama kimliği, ör. "chatcmpl-abc123".
objectstringOptionalAkışlı olmayanlar için "chat.completion", akışlı olanlar için "chat.completion.chunk".
createdintegerOptionalUnix zaman damgası (saniye).
modelstringOptionalİstenen model kimliğinin yankısı.
choicesarrayOptionalTamamlama adayları dizisi: [{ index, message: { role, content, tool_calls? }, bitiş_nedeni }].
choices[].finish_reasonstringOptional"dur" | "uzunluk" | "tool_calls" | "içerik_filtresi".
usageobjectOptional{ prompt_tokens, completion_tokens, total_tokens, completion_tokens_details?, prompt_tokens_details?, cache_creation_input_tokens?, cache_creation? }. completion_tokens_details.reasoning_tokens model bir akıl yürütme izi ürettiğinde ayarlanır. Cache alanları upstream prompt-caching bilgisi döndürdüğünde görünür: prompt_tokens_details.cached_tokens cache okumalarını raporlar (OpenAI standardı), cache_creation_input_tokens yazmaları toplar, ve cache_creation.ephemeral_5m_input_tokens / ephemeral_1h_input_tokens TTL bazlı dağılımı verir.
{
  "id": "chatcmpl-abc123",
  "object": "chat.completion",
  "created": 1710000000,
  "model": "gpt-5.1-chat",
  "choices": [{
    "index": 0,
    "message": {
      "role": "assistant",
      "content": "The capital of France is Paris."
    },
    "finish_reason": "stop"
  }],
  "usage": {
    "prompt_tokens": 20,
    "completion_tokens": 8,
    "total_tokens": 28
  }
}

Muhakeme ve düşünme

Genişletilmiş akıl yürütmeyi destekleyen modeller, normal çıktının yanı sıra bir düşünme izini de ortaya çıkarır. Hava Kuvvetleri, üç farklı yukarı yönlü konvansiyonu, her yerde işe yarayan tek bir kanonik parametre seti halinde normalleştirir.

Kontrol etmek supports_reasoning: true bir model üzerinde GET /v1/models Bu parametreleri hangi kimliklerin kabul ettiğini bilmek için.

Muhakeme desteğine sahip modeller

· live

Kanonik parametreler

ParameterTypeRequiredDescription
reasoning_effortstringOptional"düşük" | "orta" | "yüksek". OpenAI o1/o3, GPT-5 akıl yürütme modelleri ve bunlara eşlenen herhangi bir yönlendirici.
thinkingstring | objectOptional"açık" | "kapalı" | Hızlı bir geçiş için "auto" veya Antropik-yerli şekil için { type: "enabled", budget_tokens: N }. Claude haritaları genişletilmiş düşünmeyi, İkizler düşünmesini ve DeepSeek muhakemesini genişletti.
thinking_budgetintegerOptionalModelin görünür çıktı yaymadan önce harcayabileceği maksimum jeton miktarı. budget_tokens'ı yansıtır.

Muhakeme çabası (OpenAI tarzı)

curl https://api.airforce/v1/chat/completions \
  -H "Authorization: Bearer sk-air-YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "o3-mini",
    "messages": [{"role": "user", "content": "Prove the Pythagorean theorem."}],
    "reasoning_effort": "high"
  }'

Genişletilmiş düşünme (Antropik tarz)

curl https://api.airforce/v1/chat/completions \
  -H "Authorization: Bearer sk-air-YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4.6",
    "messages": [{"role": "user", "content": "Plan a 7-day Italy trip."}],
    "thinking": {"type": "enabled", "budget_tokens": 4000}
  }'

Muhakeme izinin kendisi şu şekilde görünür: choices[0].message.reasoning_content (OpenAI şekli) veya thinking bloke etmek content (Antropik şekil). Muhakeme belirteçleri faturalandırılır ve raporlanır usage.completion_tokens_details.reasoning_tokens.


Görüş ve görüntü girişi

Şunlara sahip modeller: supports_vision: true İçerik blokları olarak gömülü görselleri kabul edin. Ya genel bir URL ya da bir base64 veri URL'si çalışır; boyut sınırları yukarı akış modeline bağlıdır.

Görüş desteğine sahip modeller

· live
curl https://api.airforce/v1/chat/completions \
  -H "Authorization: Bearer sk-air-YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.1-chat",
    "messages": [{
      "role": "user",
      "content": [
        {"type": "text", "text": "What is in this image?"},
        {"type": "image_url", "image_url": {"url": "https://example.com/cat.jpg"}}
      ]
    }]
  }'

Takım çağırma

Şunlara sahip modeller: supports_tools: true tanımladığınız işlevleri çağırabilir. Model bir döndürür tool_calls sıralamak; aramayı çalıştırırsınız ve ardından sonucu geri gönderirsiniz. tool mesaj.

Araç çağırma desteğine sahip modeller

· live

Rica etmek

curl https://api.airforce/v1/chat/completions \
  -H "Authorization: Bearer sk-air-YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.1-chat",
    "messages": [{"role": "user", "content": "What is the weather in Paris?"}],
    "tools": [{
      "type": "function",
      "function": {
        "name": "get_weather",
        "description": "Get current weather for a location",
        "parameters": {
          "type": "object",
          "properties": {
            "location": {"type": "string", "description": "City name"}
          },
          "required": ["location"]
        }
      }
    }],
    "tool_choice": "auto"
  }'

Araç çağrısıyla yanıt

{
  "id": "chatcmpl-abc123",
  "choices": [{
    "index": 0,
    "message": {
      "role": "assistant",
      "content": null,
      "tool_calls": [{
        "id": "call_1",
        "type": "function",
        "function": {
          "name": "get_weather",
          "arguments": "{\"location\":\"Paris\"}"
        }
      }]
    },
    "finish_reason": "tool_calls"
  }]
}

Araç sonucunun takibi

{
  "model": "gpt-5.1-chat",
  "messages": [
    {"role": "user", "content": "What is the weather in Paris?"},
    {
      "role": "assistant",
      "content": null,
      "tool_calls": [{
        "id": "call_1",
        "type": "function",
        "function": {"name": "get_weather", "arguments": "{\"location\":\"Paris\"}"}
      }]
    },
    {"role": "tool", "tool_call_id": "call_1", "content": "{\"temp_c\": 14, \"sky\": \"cloudy\"}"}
  ]
}

Akış

Ayarlamak stream: true Kısmi tamamlamaları Sunucu Tarafından Gönderilen Olaylar olarak almak için. Her olay, akışsız yanıtla aynı şekle sahip bir JSON öbeğidir; ancak message şununla değiştirilir: delta. Akış şununla bitiyor: data: [DONE].

curl https://api.airforce/v1/chat/completions \
  -H "Authorization: Bearer sk-air-YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.1-chat",
    "messages": [{"role": "user", "content": "Write a haiku about Berlin."}],
    "stream": true,
    "stream_options": {"include_usage": true}
  }'

Tel formatı

data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","created":1710000000,"model":"gpt-5.1-chat","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}

data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","created":1710000000,"model":"gpt-5.1-chat","choices":[{"index":0,"delta":{"content":"Cold "},"finish_reason":null}]}

data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","created":1710000000,"model":"gpt-5.1-chat","choices":[{"index":0,"delta":{"content":"stone "},"finish_reason":null}]}


data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","created":1710000000,"model":"gpt-5.1-chat","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":{"prompt_tokens":12,"completion_tokens":17,"total_tokens":29}}

data: [DONE]

POST /v1/messages

Antropik uyumlu Mesajlar API'sı. Yetkili ile çalışır @anthropic-ai/sdk ayarlayarak baseURL ile https://api.airforce. OpenAI/Google/etc'ye iletir. Claude olmayan modeller için şeffaf bir şekilde.

POSThttps://api.airforce/v1/messages

Talep gövdesi

ParameterTypeRequiredDescription
modelstringRequiredModel Kimliği (Antropik formatta veya yönlendirilmiş takma ad).
messagesarrayRequiredHer giriş: { rol: "kullanıcı" | "asistan", içerik: string | sıralamak }.
max_tokensintegerRequiredAntropik tarafından gerekli. Yanıt için belirteç sınırı.
systemstring | arrayOptionalSistem istemi. { türünden bir dizi iletin: "metin", metin, önbellek_kontrol? } önbelleğe alınmış önek bölümlerini işaretlemek için bloklar. Bkz. "İstemi önbelleğe alma".
temperaturefloatOptional0–1.
top_pfloatOptionalÇekirdek örneklemesi.
top_kintegerOptionalÖrnekleme havuzunu en iyi K jetonlarıyla sınırlayın.
stop_sequencesarrayOptional4'e kadar durdurma dizisi.
streambooleanOptionalDoğru olduğunda, Antropik tarzda SSE olay akışını yayar (bkz. "Akış").
toolsarrayOptionalAntropik araç tanımları: { ad, açıklama, giriş_şeması }. Yanıt tool_use içerik blokları içerebilir.
tool_choiceobjectOptional{ şunu yazın: "otomatik" | "herhangi biri" | "araç", isim? }.
thinkingobjectOptionalAntropik genişletilmiş düşünme: { type: "enabled", budget_tokens: N }.

Örnek

curl https://api.airforce/v1/messages \
  -H "x-api-key: sk-air-YOUR_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4.6",
    "max_tokens": 256,
    "system": "You are a helpful assistant.",
    "messages": [
      {"role": "user", "content": "Hello, Claude!"}
    ]
  }'

Tepki şekli

ParameterTypeRequiredDescription
idstringOptionalMesaj kimliği, ör. "msg_01ABCxyz".
typestringOptionalHer zaman "mesaj".
rolestringOptionalHer zaman "asistan".
contentarrayOptionalİçerik blokları dizisi: { type: "text" | "araç_kullanımı" | "düşünmek", … }.
modelstringOptionalİstenilen modelin yankısı.
stop_reasonstringOptional"son_dönüş" | "max_tokens" | "durma_sırası" | "araç_kullanımı".
usageobjectOptional{ input_tokens, output_tokens, cache_read_input_tokens?, cache_creation_input_tokens?, cache_creation? }. Cache alanları prompt caching kullanıldığında görünür. cache_creation.ephemeral_5m_input_tokens ve ephemeral_1h_input_tokens TTL bazlı yazma dağılımını verir.

Etkinliklerin akışı

Antropik SSE, tek seferlik JSON parçaları yerine adlandırılmış olayları kullanır. Her olayın hem bir event: isim ve bir data: JSON yükü.

event: message_start
data: {"type":"message_start","message":{"id":"msg_01","role":"assistant","content":[],"model":"claude-sonnet-4.6","stop_reason":null,"usage":{"input_tokens":12,"output_tokens":1}}}

event: content_block_start
data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}}

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Hello"}}

event: content_block_stop
data: {"type":"content_block_stop","index":0}

event: message_delta
data: {"type":"message_delta","delta":{"stop_reason":"end_turn"},"usage":{"output_tokens":17}}

event: message_stop
data: {"type":"message_stop"}

İstemi önbelleğe alma

Açık /v1/messages Claude modellerinde, bir öneki ileterek önbelleğe alınmış olarak işaretleyin system önbelleğe alınmış segmentin taşındığı bir blok dizisi olarak cache_control: { type: "ephemeral" }. Aynı önekle başlayan sonraki istekler, daha ucuz önbellek okuma hızından ücret alır. Şunlara sahip modeller: supports_caching: true içinde /v1/models bunu destekleyin.

Hızlı önbelleğe alma özelliğine sahip modeller

· live
{
  "model": "claude-sonnet-4.6",
  "max_tokens": 1024,
  "system": [
    {"type": "text", "text": "You are a senior staff engineer at Airforce."},
    {
      "type": "text",
      "text": "<repository-snapshot>...</repository-snapshot>",
      "cache_control": {"type": "ephemeral"}
    }
  ],
  "messages": [
    {"role": "user", "content": "Where is rate limiting enforced?"}
  ]
}

Cache sayıları yanıtta nasıl raporlanır

Cache token sayıları her formatın yerel biçiminde geçirilir, böylece SDK'lar (openai, @anthropic-ai/sdk, @google/genai) bunları özel kod olmadan okur. Değer sıfır olduğunda alanlar atlanır, cache'lenmemiş yanıtları yalın tutar.

/v1/chat/completions (OpenAI şekli)

"usage": {
  "prompt_tokens": 2104,
  "completion_tokens": 147,
  "total_tokens": 2251,
  "prompt_tokens_details": { "cached_tokens": 1980 },
  "cache_creation_input_tokens": 124,
  "cache_creation": {
    "ephemeral_5m_input_tokens": 124,
    "ephemeral_1h_input_tokens": 0
  }
}

/v1/messages (Anthropic şekli)

"usage": {
  "input_tokens": 2104,
  "output_tokens": 147,
  "cache_read_input_tokens": 1980,
  "cache_creation_input_tokens": 124,
  "cache_creation": {
    "ephemeral_5m_input_tokens": 124,
    "ephemeral_1h_input_tokens": 0
  }
}

/v1beta/.../generateContent (Gemini şekli)

"usageMetadata": {
  "promptTokenCount": 2104,
  "candidatesTokenCount": 147,
  "totalTokenCount": 2251,
  "cachedContentTokenCount": 1980
}

Önbellekleme nerede geçerli

Açık cache_control işaretleri Claude modelleri için /v1/messages ve /v1/chat/completions üzerinde dikkate alınır — bunları system veya message içerik bloklarına koyun. Diğer birçok sağlayıcı (OpenAI ailesi, DeepSeek, Gemini) otomatik önbellekler: işaret göndermezsiniz ve yeterince uzun bir önek yeniden kullanıldığında yanıtta yalnızca cached_tokens görürsünüz.

Önbellek süresi: 5 dakika veya 1 saat

Önbelleğe alınmış bir önek varsayılan olarak 5 dakika yaşar ve her isabet sayacı yeniler. Daha uzun yaşayan bir önek için işarete ttl: "1h" ekleyin. Yanıt her TTL’yi cache_creation altında ayrı ayrı bildirir.

"cache_control": { "type": "ephemeral", "ttl": "1h" }

Örnek: önce yazma, sonra okuma

Tam olarak aynı isteği iki kez gönderin (yukarıdaki önbellek örneği). Öneki ilk gören çağrı tek seferlik bir önbellek yazması öder; TTL içindeki özdeş çağrılar çok daha ucuz önbellek okumasını öder.

İlk çağrı — önbellek yazma (usage alıntısı):

"usage": {
  "input_tokens": 2104,
  "output_tokens": 12,
  "cache_creation_input_tokens": 1980,
  "cache_read_input_tokens": 0
}

TTL içinde ikinci özdeş çağrı — önbellek okuma:

"usage": {
  "input_tokens": 2104,
  "output_tokens": 12,
  "cache_creation_input_tokens": 0,
  "cache_read_input_tokens": 1980
}

Sınırlar ve maliyet

  • Claude, önbelleğe alınabilir minimum bir önek gerektirir (yaklaşık 1024 token; bazı modellerde daha fazla). Daha kısa önekler basitçe önbelleğe alınmaz.
  • İstek başına en fazla 4 önbellek kırılma noktası ve önbelleğe alınan önek çağrılar arasında bayt bayt aynı olmalıdır — tek karakterlik bir değişiklik bile önbelleği ıskalar.
  • Önbellek yazmaları normal girdiden daha pahalıdır (5m ≈ 1,25×, 1h ≈ 2×); okumalar çok daha ucuzdur (≈ 0,1×). Her modelin önbellek fiyatlarını fiyatlandırma sayfasında görün.

POST /v1/responses

Durum bilgili konuşmalar için OpenAI Responses-API yüzeyi. Aynı Bearer/x-api-key kimlik doğrulaması. Cache sayıları input_tokens_details.cached_tokens (okuma) artı düz cache_creation_input_tokens + cache_creation.ephemeral_* (yazmalar) olarak görünür, /v1/chat/completions ile eşitlik için.

POSThttps://api.airforce/v1/responses

Hatalar

Airforce, her iki uç nokta için standart HTTP durum kodlarını ve tek tip bir hata zarfını döndürür.

ParameterTypeRequiredDescription
400invalid_requestOptionalHatalı biçimlendirilmiş JSON, gerekli alan eksik, bilinmeyen model.
401authentication_errorOptionalEksik veya geçersiz API anahtarı.
403permission_errorOptionalPlan veya anahtar başına izinler bu isteği reddediyor.
429rate_limitOptionalTalep oranı veya günlük jeton sınırı aşıldı.
503upstream_errorOptionalİstenen sağlayıcının tüm yukarı akış anahtarları başarısız oldu.
{
  "error": {
    "message": "Model 'gpt-99' not found.",
    "type": "invalid_request",
    "param": "model",
    "code": "model_not_found"
  }
}

Modelleri keşfedin

Model kimliklerinin ve yetenek işaretlerinin (vizyon, araçlar, akıl yürütme, önbellekleme, bağlam uzunluğu,…) tam listesine şu adresten bakın: /docs/api/models.

curl https://api.airforce/v1/models \
  -H "Authorization: Bearer sk-air-YOUR_API_KEY"