Api.Airforce
API REFERENCE

Chatin valmistuminen

Luo chat-vastauksia yli 100 malliin yhdestä API:sta. Drop-in on yhteensopiva OpenAI Chat Completions, Anthropic Messages ja Anthropic Responses kanssa.

Todennus

Jokainen pyyntö tarvitsee Bearer-tunnuksen (Airforce API -avaimesi). Antrooppinen x-api-key otsikko on myös hyväksytty /v1/messages SDK-yhteensopivuuden vuoksi.

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

POST /v1/chat/completions

OpenAI-yhteensopivat chat-päätökset. Toimii virkamiehen kanssa openai SDK ohittamalla base_url kohtaan https://api.airforce/v1.

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

Pyynnön runko

ParameterTypeRequiredDescription
modelstringRequiredMallin tunnus. Käytä GET /v1/models löytääksesi käytettävissä olevat tunnukset.
messagesarrayRequiredKeskusteluhistoria. Jokaisella tiedolla on { role: "system" | "käyttäjä" | "avustaja" | "työkalu", sisältö }. Sisältö on merkkijono tai joukko sisältölohkoja (näkemys, katso alla).
max_tokensintegerOptionalLuotavien tunnuksien enimmäismäärä. Rajattu mallin max_output_tokeniin.
temperaturefloatOptionalNäytteenottolämpötila, 0–2. Alempi on deterministisempi. Oletusarvo riippuu ylävirran toimittajasta.
top_pfloatOptionalYdinnäytteenotto. Käytä joko lämpötilaa tai top_p:tä, ei molempia.
streambooleanOptionalKun tosi, vastaus on palvelimen lähettämien tapahtumien virta. Katso "Striimaus" alla.
stream_optionsobjectOptional{ include_usage: boolean }. Kun include_usage on tosi, viimeinen SSE-osa sisältää käyttölohkon.
stopstring | arrayOptionalJopa 4 pysäytysjaksoa. Sukupolvi pysähtyy heti, kun sellainen on valmistettu.
toolsarrayOptionalToimintojen määritelmät, joita malli voi kutsua. Katso "Työkalun kutsuminen" alla.
tool_choicestring | objectOptional"auto" (oletus), "ei mikään" tai { type: "function", function: { name } } pakottaaksesi tietyn kutsun.
response_formatobjectOptional{ type: "json_object" } pakottaa mallin lähettämään kelvollisen JSONin. Ohitetaan malleissa, jotka eivät tue sitä.
reasoning_effortstringOptionalOpenAI o1/o3-tyylinen päättelyn syvyys: "matala" | "keskikokoinen" | "korkea". Katso "Päättely ja ajattelu".
thinkingstring | objectOptionalTarjoajien välinen ajattelukytkin. "päällä" | "pois päältä" | "auto" tai Anthropic-shape { type: "enabled", budget_tokens: N }. Katso "Päättely ja ajattelu".
thinking_budgetintegerOptionalToken cap mallin päättelyjäljelle (kun toimittaja paljastaa sellaisen).
ignore_defaultsbooleanOptionalOhita käyttäjän tallentamat mallikohtaiset oletusparametrit (määritetty kojelaudassa) tälle pyynnölle.

Perusesimerkki

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
  }'

Vastauksen muoto

ParameterTypeRequiredDescription
idstringOptionalVakaa valmistumistunnus, esim. "chatcmpl-abc123".
objectstringOptional"chat.completion" ei-suoratoistolle, "chat.completion.chunk" suoratoistolle.
createdintegerOptionalUnix-aikaleima (sekuntia).
modelstringOptionalKaiku pyydetystä mallitunnuksesta.
choicesarrayOptionalJoukko valmistumisehdokkaita: [{ index, message: { role, content, tool_calls? }, lopetussyy }].
choices[].finish_reasonstringOptional"pysäytys" | "pituus" | "työkalukutsut" | "content_filter".
usageobjectOptional{ prompt_tokens, completion_tokens, total_tokens, completion_tokens_details?, prompt_tokens_details?, cache_creation_input_tokens?, cache_creation? }. completion_tokens_details.reasoning_tokens asetetaan kun malli tuotti päättelyjäljen. Välimuistikentät näkyvät kun upstream palautti prompt-välimuistitietoja: prompt_tokens_details.cached_tokens raportoi välimuistiluvut (OpenAI-standardi), cache_creation_input_tokens summaa kirjoitukset, ja cache_creation.ephemeral_5m_input_tokens / ephemeral_1h_input_tokens antavat TTL-jaon.
{
  "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
  }
}

Pohdintaa & ajattelua

Laajennettua päättelyä tukevat mallit paljastavat ajattelujäljen tavallisen tulosteen rinnalla. Airforce normalisoi kolme erilaista ylävirran yleissopimusta yhdeksi kanonisten parametrien joukoksi, jotka toimivat kaikkialla.

Tarkista supports_reasoning: true mallissa sisään GET /v1/models tietää, mitkä tunnukset hyväksyvät nämä parametrit.

Mallit päättelyn tuella

· live

Kanoniset parametrit

ParameterTypeRequiredDescription
reasoning_effortstringOptional"matala" | "keskikokoinen" | "korkea". OpenAI o1/o3-, GPT-5-päättelymallit ja kaikki niihin liittyvät reitittimet.
thinkingstring | objectOptional"päällä" | "pois päältä" | "auto" nopeaa vaihtoa varten tai { type: "enabled", budget_tokens: N } Anthropic-natiivimuotoa varten. Kartoittaa Clauden laajennettua ajattelua, Kaksosten ajattelua ja DeepSeek-päättelyä.
thinking_budgetintegerOptionalEnimmäismäärä merkkiä, jonka malli voi käyttää päättelyyn ennen näkyvän tulosteen lähettämistä. Peilaa budget_tokens.

Päättelytyö (OpenAI-tyyli)

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"
  }'

Laajennettu ajattelu (antrooppiseen tyyliin)

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}
  }'

Itse päättelyn jälki näkyy choices[0].message.reasoning_content (OpenAI-muoto) tai kuten thinking blokkaa sisään content (Antrooppinen muoto). Perustelut laskutetaan ja raportoidaan usage.completion_tokens_details.reasoning_tokens.


Vision ja kuvan syöttö

Mallit, joissa supports_vision: true hyväksyä sisältölohkoiksi upotetut kuvat. Joko julkinen URL-osoite tai base64-tieto-URL toimii; kokorajoitukset riippuvat alkupään mallista.

Näkötuella varustetut mallit

· 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"}}
      ]
    }]
  }'

Työkalun kutsuminen

Mallit, joissa supports_tools: true voi kutsua määrittämiäsi toimintoja. Malli palauttaa a tool_calls joukko; soitat puhelun ja lähetät sitten tuloksen takaisin a tool viesti.

Mallit, joissa on työkalukutsutuki

· live

Pyytää

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"
  }'

Vastaa työkalukutsulla

{
  "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"
  }]
}

Seuranta työkalun tuloksella

{
  "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\"}"}
  ]
}

Suoratoisto

Sarja stream: true vastaanottaa osittaisia ​​suorituksia palvelimen lähettäminä tapahtumina. Jokainen tapahtuma on yksi JSON-pala, jolla on sama muoto kuin suoratoistetulla vastauksella, paitsi message korvataan delta. Virta päättyy 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}
  }'

Langallinen muoto

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

Anthropic-yhteensopiva Messages API. Toimii virkamiehen kanssa @anthropic-ai/sdk asettamalla baseURL kohtaan https://api.airforce. Edelleenlähetys OpenAI/Google/etc. läpinäkyvästi muille kuin Claude-malleille.

POSThttps://api.airforce/v1/messages

Pyynnön runko

ParameterTypeRequiredDescription
modelstringRequiredMallin tunnus (antrooppinen muoto tai reititetty alias).
messagesarrayRequiredJokainen merkintä: { rooli: "käyttäjä" | "avustaja", sisältö: merkkijono | taulukko }.
max_tokensintegerRequiredAnthropicin vaatima. Token cap vastaukselle.
systemstring | arrayOptionalJärjestelmäkehote. Välitä taulukko { type: "text", text, cache_control? } lohkot merkitsevät välimuistissa olevat etuliitesegmentit. Katso "Kehote välimuistiin".
temperaturefloatOptional0–1.
top_pfloatOptionalYdinnäytteenotto.
top_kintegerOptionalRajoita näytteenottopooli top-K tokeneihin.
stop_sequencesarrayOptionalJopa 4 pysäytysjaksoa.
streambooleanOptionalKun tosi, lähettää antrooppisen SSE-tapahtumavirran (katso "Streaming").
toolsarrayOptionalAntrooppiset työkalun määritelmät: { nimi, kuvaus, input_schema }. Vastaus voi sisältää tool_use -sisältölohkoja.
tool_choiceobjectOptional{ type: "auto" | "mikä tahansa" | "työkalu", nimi? }.
thinkingobjectOptionalAntrooppinen laajennettu ajattelu: { type: "enabled", budget_tokens: N }.

Esimerkki

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!"}
    ]
  }'

Vastauksen muoto

ParameterTypeRequiredDescription
idstringOptionalViestitunnus, esim. "msg_01ABCxyz".
typestringOptionalAina "viesti".
rolestringOptionalAina "avustaja".
contentarrayOptionalSisältölohkojen joukko: { type: "text" | "työkalun_käyttö" | "ajattelu", … }.
modelstringOptionalKaiku pyydetystä mallista.
stop_reasonstringOptional"end_turn" | "max_tokens" | "stop_sequence" | "työkalun_käyttö".
usageobjectOptional{ input_tokens, output_tokens, cache_read_input_tokens?, cache_creation_input_tokens?, cache_creation? }. Välimuistikentät näkyvät kun prompt-välimuistia käytettiin. cache_creation.ephemeral_5m_input_tokens ja ephemeral_1h_input_tokens antavat kirjoitusjaon TTL-kohtaisesti.

Streaming tapahtumia

Anthropic SSE käyttää nimettyjä tapahtumia kertaluonteisten JSON-palojen sijaan. Jokaisessa tapahtumassa on sekä event: nimi ja a data: JSON-hyötykuorma.

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"}

Nopea välimuisti

Päällä /v1/messages Claude-malleissa, merkitse etuliite välimuistiin siirtämällä system joukkona lohkoja, joissa välimuistissa oleva segmentti kuljettaa cache_control: { type: "ephemeral" }. Myöhemmät pyynnöt, jotka alkavat samalla etuliitteellä, veloittavat halvemman välimuistin lukuhinnan. Mallit, joissa supports_caching: true sisään /v1/models tukea tätä.

Mallit, joissa on nopea välimuisti

· 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?"}
  ]
}

Miten välimuistilukemat raportoidaan vastauksessa

Välimuistitokenien lukemat välitetään kunkin muodon natiivimuodossa, joten SDK:t (openai, @anthropic-ai/sdk, @google/genai) lukevat ne ilman mukautettua koodia. Kentät jätetään pois kun arvo on nolla, pitäen ei-välimuistivastaukset kevyinä.

/v1/chat/completions (OpenAI-muoto)

"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-muoto)

"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-muoto)

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

Missä välimuistitus pätee

Eksplisiittiset cache_control-merkinnät huomioidaan /v1/messages- ja /v1/chat/completions-rajapinnoissa Claude-malleille — laita ne system- tai message-sisältölohkoihin. Monet muut tarjoajat (OpenAI-perhe, DeepSeek, Gemini) välimuistittavat automaattisesti: et lähetä merkintöjä, ja näet vain cached_tokens vastauksessa, kun riittävän pitkää etuliitettä käytetään uudelleen.

Välimuistin kesto: 5 minuuttia tai 1 tunti

Välimuistitettu etuliite elää oletuksena 5 minuuttia, ja ajastin nollautuu joka osumalla. Pidempään elävää etuliitettä varten lisää ttl: "1h" merkintään. Vastaus raportoi kunkin TTL:n erikseen cache_creation-kohdassa.

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

Esimerkki: ensin kirjoitus, sitten luku

Lähetä täsmälleen sama pyyntö kahdesti (yllä oleva välimuistiesimerkki). Ensimmäinen etuliitteen näkevä kutsu maksaa kertaluonteisen välimuistikirjoituksen; identtiset kutsut TTL:n sisällä maksavat paljon halvemman välimuistiluvun.

Ensimmäinen kutsu — välimuistikirjoitus (usage-ote):

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

Toinen identtinen kutsu TTL:n sisällä — välimuistiluku:

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

Rajat ja kustannus

  • Claude vaatii vähimmäisetuliitteen välimuistille (noin 1024 tokenia; joillekin malleille enemmän). Lyhyempiä etuliitteitä ei yksinkertaisesti välimuistiteta.
  • Enintään 4 välimuistin katkaisukohtaa pyyntöä kohden, ja välimuistitetun etuliitteen on oltava tavulleen identtinen kutsujen välillä — yhdenkin merkin muutos ohittaa välimuistin.
  • Välimuistikirjoitukset maksavat enemmän kuin tavallinen syöte (5m ≈ 1,25×, 1h ≈ 2×); luvut maksavat paljon vähemmän (≈ 0,1×). Katso kunkin mallin välimuistihinnat hinnoittelusivulta.

POST /v1/responses

OpenAI Responses-API tilallisille keskusteluille. Sama Bearer/x-api-key todennus. Välimuistilukemat näkyvät input_tokens_details.cached_tokens (luku) sekä litteä cache_creation_input_tokens + cache_creation.ephemeral_* (kirjoitukset) /v1/chat/completions pariteetilla.

POSThttps://api.airforce/v1/responses

Virheet

Airforce palauttaa normaalit HTTP-tilakoodit ja yhtenäisen virheenkuoren molemmille päätepisteille.

ParameterTypeRequiredDescription
400invalid_requestOptionalVäärin muotoiltu JSON, pakollinen kenttä puuttuu, malli tuntematon.
401authentication_errorOptionalPuuttuva tai virheellinen API-avain.
403permission_errorOptionalSuunnitelman tai avainkohtaiset käyttöoikeudet estävät tämän pyynnön.
429rate_limitOptionalPyyntökorko tai päiväkohtainen token cap ylitetty.
503upstream_errorOptionalKaikki pyydetyn palveluntarjoajan ylävirran avaimet epäonnistuivat.
{
  "error": {
    "message": "Model 'gpt-99' not found.",
    "type": "invalid_request",
    "param": "model",
    "code": "model_not_found"
  }
}

Tutustu malleihin

Katso täydellinen luettelo mallin tunnuksista ja niiden ominaisuuslipuista (näkemys, työkalut, päättely, välimuisti, kontekstin pituus jne.) osoitteessa /docs/api/models.

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