Api.Airforce
API REFERENCE

Parametri universali

Intestazioni, schemi di autenticazione, buste di errore e convenzioni che si applicano a ogni endpoint.

Qui risiedono le convenzioni condivise da ogni endpoint: gli header di autenticazione accettati, l'uniforme involucro di errore e il modo in cui vengono negoziati i content type di richiesta e risposta.

I parametri specifici di un singolo endpoint sono documentati nella pagina di quell'endpoint; questa pagina è il riferimento trasversale.

Autenticazione

Tutti gli endpoint richiedono una chiave API Airforce. Generane uno nella dashboard qui sotto Chiavi API. Le chiavi iniziano con sk-air-.

ParameterTypeRequiredDescription
AuthorizationstringRequiredBearer sk-air-YOUR_API_KEY. Accepted on every endpoint.
x-api-keystringOptionalAlternative auth header. Accepted on /v1/messages and /v1/responses for Anthropic SDK compatibility.
anthropic-versionstringOptionalRequired when using /v1/messages with the @anthropic-ai/sdk. Use "2023-06-01".
Content-TypestringOptionalapplication/json for body posts. multipart/form-data for endpoints that accept file uploads (transcriptions, voice cloning, etc.).

Esempi

# Standard
curl https://api.airforce/v1/chat/completions \
  -H "Authorization: Bearer sk-air-YOUR_API_KEY" \

# Anthropic SDK style (only on /v1/messages, /v1/responses)
curl https://api.airforce/v1/messages \
  -H "x-api-key: sk-air-YOUR_API_KEY" \
  -H "anthropic-version: 2023-06-01" \

# Multipart upload (file endpoints)
curl https://api.airforce/v1/audio/transcriptions \
  -H "Authorization: Bearer sk-air-YOUR_API_KEY" \
  -F "[email protected]" \
  -F "model=whisper-1"

Intestazioni di richiesta facoltative

ParameterTypeRequiredDescription
User-AgentstringOptionalHelpful for debugging. Logged with every request.

Intestazioni di risposta

ParameterTypeRequiredDescription
Content-TypestringOptionalapplication/json for JSON, text/event-stream for streams, or the media MIME (audio/mpeg, image/png, …) for binary endpoints.

Utilizzo e costo non vengono restituiti come header X-* personalizzati. I conteggi dei token vengono restituiti nell'oggetto usage del corpo della risposta su /v1/chat/completions e /v1/messages (anche gli hit della prompt-cache di Anthropic compaiono lì, es. cache_read_input_tokens). Il costo per richiesta è registrato nel log di utilizzo della tua dashboard, e i job media asincroni riportano un campo cost_cents nella loro risposta di stato.


Ragionamento e riflessione (cross-endpoint)

Modelli con supports_reasoning: true accettano gli stessi parametri canonici ovunque appaiano (attualmente /v1/chat/completions E /v1/messages).

ParameterTypeRequiredDescription
reasoning_effortstringOptional"low" | "medium" | "high". OpenAI o-series / GPT-5 reasoning models only — has no effect on Claude. Use `thinking_budget` for Anthropic budget control.
thinkingstring | objectOptional"on" / "off" / "auto" for a quick toggle, or { type: "enabled", budget_tokens: N } Anthropic shape. Both forms accepted, both normalised to the upstream's native shape.
thinking_budgetintegerOptionalMaximum tokens spent reasoning before visible output starts. Maps to budget_tokens (Anthropic) and thinking_budget (Gemini).
ignore_defaultsbooleanOptionalBypass your saved per-model defaults for this single request. Useful when a saved default (e.g. thinking on) is overriding the value you sent.

Modelli con supporto del ragionamento

· live

Vedere Completamenti chat → Ragionamento per esempi completi.


Convenzione sullo streaming

Endpoint che accettano stream: true rispondere con Content-Type: text/event-stream ed emettere eventi inviati dal server. Il formato del cavo dipende dal punto finale:

ParameterTypeRequiredDescription
/v1/chat/completionsOpenAI SSEOptionaldata: {…JSON chunk…}, terminated by data: [DONE].
/v1/messagesAnthropic SSEOptionalNamed events: message_start, content_block_start, content_block_delta, content_block_stop, message_delta, message_stop.
/v1/images/generations (sse: true)OpenAI-shape SSEOptionalSingle data: event with the full response, then [DONE]. Useful for long-running image jobs to keep the connection alive.
/v1/video/tasks/:id/streamprogress SSEOptionalPeriodic { progress, status } events for in-flight video tasks. Stream closes once the task is done.

Busta di errore

Ogni risposta all'errore utilizza la stessa forma JSON. Il codice di stato HTTP riflette la classe di errore.

ParameterTypeRequiredDescription
error.messagestringOptionalHuman-readable message safe to display.
error.typestringOptionalMachine-readable category. See table below.
error.codestringOptionalSpecific identifier when applicable, e.g. "model_not_found".
error.paramstringOptionalField name that failed validation, when relevant.
ParameterTypeRequiredDescription
400invalid_requestOptionalMalformed JSON, unknown field, validation failed.
401authentication_errorOptionalMissing or invalid API key.
403permission_errorOptionalPlan or per-key restriction blocks this request.
404not_foundOptionalUnknown resource (model, task ID, voice ID).
413payload_too_largeOptionalUpload exceeds size limit (200 MB for voice samples, etc.).
429rate_limitOptionalPer-second throttle, daily token cap, or balance exhausted.
500internal_errorOptionalUnexpected. Quote the X-Request-ID when reporting.
503upstream_errorOptionalEvery key for the requested provider is failing right now. Retry with a different model or wait.
{
  "error": {
    "message": "Model 'gpt-99' not found.",
    "type": "invalid_request",
    "param": "model",
    "code": "model_not_found"
  }
}

Limiti di velocità e tentativi

I limiti vengono applicati per chiave API. Il superamento di uno qualsiasi di essi restituisce 429:

  • Per-second request throttle (plan-dependent).
  • Daily token cap on free / pay-as-you-go plans.
  • Limite di credito per chiave quando ne imposti uno nella dashboard.
  • Concurrent video tasks (typically 4 in flight).

Retry with exponential backoff on 429 and 503. Don't retry on 4xx other than 429.


Idempotenza

Gli endpoint di generazione (chat, immagini, audio, video) non sono idempotenti: ogni chiamata produce una nuova risposta e viene fatturata in modo indipendente. Per risultati deterministici, imposta un seed fisso dove supportato (immagine/audio/alcuni modelli di chat). Gli endpoint asincroni a esecuzione prolungata (/v1/video/generazioni) restituiscono un task_id che puoi ripetere il polling in sicurezza.


Mappa degli endpoint

Tutti gli endpoint pubblici a colpo d'occhio.

ParameterTypeRequiredDescription
POST /v1/chat/completionschatOptionalOpenAI Chat Completions. See /docs/api/chat.
POST /v1/messageschatOptionalAnthropic Messages. See /docs/api/chat.
POST /v1/responseschatOptionalAnthropic Responses (stateful). See /docs/api/chat.
GET /v1/modelsmodelsOptionalList available models. See /docs/api/models.
POST /v1/images/generationsimageOptionalGenerate / edit images. See /docs/api/media.
POST /v1/audio/speechaudioOptionalText-to-speech. See /docs/api/audio.
POST /v1/audio/musicaudioOptionalMusic generation.
POST /v1/audio/sound-effectsaudioOptionalSFX generation.
POST /v1/audio/transcriptionsaudioOptionalSpeech-to-text.
POST /v1/audio/audio-isolationaudioOptionalVoice isolation / noise removal.
POST /v1/audio/voice-changeraudioOptionalSpeech-to-speech voice conversion.
POST /v1/audio/dubbingaudioOptionalAsync multi-language dubbing.
GET /v1/audio/voicesaudioOptionalCatalog of TTS voices.
POST /v1/voices/clonevoiceOptionalClone a custom voice. See /docs/api/audio#voice-cloning.
GET /v1/voices/libraryvoiceOptionalList your cloned voices.
POST /v1/video/generationsvideoOptionalAsync video generation. See /docs/api/video.
GET /v1/video/tasks/:idvideoOptionalPoll a video task.