Parameter universal
Header, skema autentikasi, cakupan kesalahan, dan konvensi yang berlaku di setiap titik akhir.
Konvensi yang dibagikan oleh setiap endpoint ada di sini: header autentikasi yang diterima, envelope error yang seragam, dan bagaimana content type request dan response dinegosiasikan.
Parameter spesifik untuk satu endpoint didokumentasikan di halaman endpoint tersebut; halaman ini adalah referensi lintas-bidang.
Otentikasi
Semua titik akhir memerlukan kunci API Airforce. Hasilkan satu di dasbor di bawah Kunci API. Kunci dimulai dengan sk-air-.
| Parameter | Type | Required | Description |
|---|---|---|---|
| Authorization | string | Required | Bearer sk-air-YOUR_API_KEY. Accepted on every endpoint. |
| x-api-key | string | Optional | Alternative auth header. Accepted on /v1/messages and /v1/responses for Anthropic SDK compatibility. |
| anthropic-version | string | Optional | Required when using /v1/messages with the @anthropic-ai/sdk. Use "2023-06-01". |
| Content-Type | string | Optional | application/json for body posts. multipart/form-data for endpoints that accept file uploads (transcriptions, voice cloning, etc.). |
Contoh
# 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"Header permintaan opsional
| Parameter | Type | Required | Description |
|---|---|---|---|
| User-Agent | string | Optional | Helpful for debugging. Logged with every request. |
Header respons
| Parameter | Type | Required | Description |
|---|---|---|---|
| Content-Type | string | Optional | application/json for JSON, text/event-stream for streams, or the media MIME (audio/mpeg, image/png, …) for binary endpoints. |
Usage dan biaya tidak dikembalikan sebagai custom header X-*. Jumlah token dikembalikan dalam objek usage pada body respons di /v1/chat/completions dan /v1/messages (hit prompt-cache Anthropic juga muncul di sana, mis. cache_read_input_tokens). Biaya per request dicatat di usage log dashboard Anda, dan async media job membawa field cost_cents dalam respons status-nya.
Penalaran & pemikiran (cross-endpoint)
Model dengan supports_reasoning: true menerima parameter kanonik yang sama di mana pun parameter tersebut muncul (saat ini /v1/chat/completions Dan /v1/messages).
| Parameter | Type | Required | Description |
|---|---|---|---|
| reasoning_effort | string | Optional | "low" | "medium" | "high". OpenAI o-series / GPT-5 reasoning models only — has no effect on Claude. Use `thinking_budget` for Anthropic budget control. |
| thinking | string | object | Optional | "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_budget | integer | Optional | Maximum tokens spent reasoning before visible output starts. Maps to budget_tokens (Anthropic) and thinking_budget (Gemini). |
| ignore_defaults | boolean | Optional | Bypass your saved per-model defaults for this single request. Useful when a saved default (e.g. thinking on) is overriding the value you sent. |
Model dengan dukungan penalaran
…· liveMelihat Penyelesaian obrolan → Penalaran untuk contoh lengkap.
Konvensi streaming
Titik akhir yang menerima stream: true merespons dengan Content-Type: text/event-stream dan memancarkan Acara Terkirim Server. Format kabel bergantung pada titik akhir:
| Parameter | Type | Required | Description |
|---|---|---|---|
| /v1/chat/completions | OpenAI SSE | Optional | data: {…JSON chunk…}, terminated by data: [DONE]. |
| /v1/messages | Anthropic SSE | Optional | Named events: message_start, content_block_start, content_block_delta, content_block_stop, message_delta, message_stop. |
| /v1/images/generations (sse: true) | OpenAI-shape SSE | Optional | Single data: event with the full response, then [DONE]. Useful for long-running image jobs to keep the connection alive. |
| /v1/video/tasks/:id/stream | progress SSE | Optional | Periodic { progress, status } events for in-flight video tasks. Stream closes once the task is done. |
Amplop kesalahan
Setiap respons kesalahan menggunakan bentuk JSON yang sama. Kode status HTTP mencerminkan kelas kegagalan.
| Parameter | Type | Required | Description |
|---|---|---|---|
| error.message | string | Optional | Human-readable message safe to display. |
| error.type | string | Optional | Machine-readable category. See table below. |
| error.code | string | Optional | Specific identifier when applicable, e.g. "model_not_found". |
| error.param | string | Optional | Field name that failed validation, when relevant. |
| Parameter | Type | Required | Description |
|---|---|---|---|
| 400 | invalid_request | Optional | Malformed JSON, unknown field, validation failed. |
| 401 | authentication_error | Optional | Missing or invalid API key. |
| 403 | permission_error | Optional | Plan or per-key restriction blocks this request. |
| 404 | not_found | Optional | Unknown resource (model, task ID, voice ID). |
| 413 | payload_too_large | Optional | Upload exceeds size limit (200 MB for voice samples, etc.). |
| 429 | rate_limit | Optional | Per-second throttle, daily token cap, or balance exhausted. |
| 500 | internal_error | Optional | Unexpected. Quote the X-Request-ID when reporting. |
| 503 | upstream_error | Optional | Every 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"
}
}Batasan nilai & percobaan ulang
Batasan diterapkan per kunci API. Melebihi salah satu dari mereka akan kembali 429:
- Per-second request throttle (plan-dependent).
- Daily token cap on free / pay-as-you-go plans.
- Batas kredit per kunci saat Anda mengaturnya di dashboard.
- Concurrent video tasks (typically 4 in flight).
Retry with exponential backoff on 429 and 503. Don't retry on 4xx other than 429.
Idempotensi
Titik akhir pembuatan (obrolan, gambar, audio, video) tidak idempoten — setiap panggilan menghasilkan respons baru dan ditagih secara independen. Untuk hasil deterministik, tetapkan benih tetap jika didukung (gambar/audio/beberapa model obrolan). Titik akhir asinkron yang berjalan lama (/v1/video/generasi) mengembalikan task_id yang dapat Anda jajak pendapat ulang dengan aman.
Peta titik akhir
Sekilas tentang setiap titik akhir publik.
| Parameter | Type | Required | Description |
|---|---|---|---|
| POST /v1/chat/completions | chat | Optional | OpenAI Chat Completions. See /docs/api/chat. |
| POST /v1/messages | chat | Optional | Anthropic Messages. See /docs/api/chat. |
| POST /v1/responses | chat | Optional | Anthropic Responses (stateful). See /docs/api/chat. |
| GET /v1/models | models | Optional | List available models. See /docs/api/models. |
| POST /v1/images/generations | image | Optional | Generate / edit images. See /docs/api/media. |
| POST /v1/audio/speech | audio | Optional | Text-to-speech. See /docs/api/audio. |
| POST /v1/audio/music | audio | Optional | Music generation. |
| POST /v1/audio/sound-effects | audio | Optional | SFX generation. |
| POST /v1/audio/transcriptions | audio | Optional | Speech-to-text. |
| POST /v1/audio/audio-isolation | audio | Optional | Voice isolation / noise removal. |
| POST /v1/audio/voice-changer | audio | Optional | Speech-to-speech voice conversion. |
| POST /v1/audio/dubbing | audio | Optional | Async multi-language dubbing. |
| GET /v1/audio/voices | audio | Optional | Catalog of TTS voices. |
| POST /v1/voices/clone | voice | Optional | Clone a custom voice. See /docs/api/audio#voice-cloning. |
| GET /v1/voices/library | voice | Optional | List your cloned voices. |
| POST /v1/video/generations | video | Optional | Async video generation. See /docs/api/video. |
| GET /v1/video/tasks/:id | video | Optional | Poll a video task. |