Sebelum Anda Melaporkan Bug
Sebagian besar "bug" adalah masalah konfigurasi yang dapat Anda perbaiki dalam 60 detik — jalankan daftar periksa ini terlebih dahulu.
Jika ada yang tidak berfungsi, cara tercepat untuk mengetahui apakah masalah ada di sisi Anda atau kami adalah dengan menjalankan permintaan yang sama dari alat berbeda.
Sekitar 9 dari 10 laporan "API bermasalah" ternyata disebabkan oleh base URL yang salah dikonfigurasi, API key yang kedaluwarsa, nama model yang salah, atau bentuk request body dari tutorial yang sudah tiga versi SDK lebih lama.
Uji Mandiri Cepat
Salin perintah curl ini ke terminal. Ganti YOUR_KEY dengan API key Anda dari dashboard lalu jalankan. Jika Anda mendapat respons completion yang normal, berarti API key, jaringan, dan backend kami semuanya sehat — masalah apa pun ada di kode klien atau lingkungan Anda.
cURL
curl https://api.airforce/v1/chat/completions \
-H "Authorization: Bearer sk-air-YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4.1-mini",
"messages": [{"role": "user", "content": "ping"}]
}'Daftar Periksa Langkah demi Langkah
Apakah API key Anda valid?
Buka Dashboard → API Keys dan konfirmasi bahwa key tersebut cocok dengan yang digunakan kode Anda. Jebakan umum adalah spasi sebelum awalan "sk-air-" akibat salin-tempel.
Gejala: 401 Unauthorized.
Apakah base URL sudah benar?
Base URL harus https://api.airforce/v1 — bukan http, dan akhiran /v1 wajib ada. Tutorial yang dibuat sebelum jalur v1 OpenAI terkadang menghilangkannya.
Gejala: 404 Not Found, atau curl menggantung.
Apakah nama model sudah dieja dengan benar?
ID model bersifat case-sensitive. Kunjungi halaman Models atau panggil GET /v1/models untuk mengonfirmasi ID yang tepat. Kesalahan ketik atau model yang sudah dihentikan akan mengembalikan error yang jelas, bukan "berjalan tapi salah".
Gejala: 400 unknown_model atau 404 model_not_found.
Apakah request body sudah berbentuk dengan benar?
Chat completions menggunakan array messages. Gambar menggunakan prompt + n. Audio TTS menggunakan input + voice. Mengirim body berbentuk chat ke /v1/images/generations akan menghasilkan 400 — mudah terlewat saat menyalin cuplikan antar-dokumentasi.
Gejala: 400 dengan field yang bermasalah disebutkan dalam response body.
Apakah Anda telah mencapai batas kecepatan atau kuota?
429 = terlalu banyak permintaan menit ini. 402 = plan atau saldo Anda habis. Keduanya ditampilkan di Dashboard. Permintaan tier gratis memiliki batas terpisah dari permintaan plan berbayar, sehingga model berbayar mungkin merespons dengan baik sementara yang gratis dibatasi kecepatan.
Gejala: 429 Too Many Requests atau 402 Payment Required.
Apakah model tersebut benar-benar aktif sekarang?
Periksa halaman Models — gangguan penyedia ditampilkan sebagai "degraded" atau "major outage". Jika satu model tidak berfungsi sementara yang lain berjalan, itu adalah masalah di sisi penyedia yang kami tangani, bukan kesalahan klien.
Gejala: model tertentu mengembalikan 5xx sementara yang lain berfungsi.
Arti Kode Status HTTP
Setiap respons error membawa kode status HTTP standar. Mengetahui arti setiap kode menghemat satu tiket.
| 400 | Sisi Anda | Bad Request — JSON tidak terbentuk dengan benar, field wajib tidak ada, parameter tidak dikenal. Perbaiki request body. |
| 401 | Sisi Anda | Unauthorized — API key tidak ada atau tidak valid. Periksa header Authorization menyertakan awalan "Bearer ". |
| 402 | Sisi Anda | Payment Required — plan habis atau saldo Pay-as-you-go kosong. Berlangganan atau isi ulang. |
| 403 | Sisi Anda | Forbidden — plan atau izin per-key Anda tidak mengizinkan model atau endpoint ini. |
| 404 | Sisi Anda | Not Found — endpoint atau ID model tidak dikenal. Periksa path URL dan ejaan model. |
| 413 | Sisi Anda | Payload Too Large — input melebihi jendela konteks model. Persingkat prompt. |
| 429 | Sisi Anda | Too Many Requests — dibatasi kecepatan (RPM, RPD, atau batas token harian). Perlambat atau tingkatkan paket. |
| 500 | Sisi kami | Internal Server Error — bug di sisi kami. Laporkan jika berlanjut lebih dari satu menit. |
| 502 | Sisi kami | Bad Gateway — backend sedang restart (kami melakukan deploy beberapa kali sehari). Tunggu 5–10 detik lalu coba lagi. |
| 503 | Sisi kami | Service Unavailable — setiap penyedia upstream untuk model tersebut gagal sekaligus. Laporkan jika berlangsung lebih dari beberapa menit. |
Ketika Ini Benar-benar Sebuah Bug
Jika uji mandiri curl di atas berhasil tetapi permintaan yang persis sama dari kode Anda tidak, masalahnya ada di klien Anda (atau library yang digunakannya). Jika uji mandiri sendiri gagal dengan 5xx, atau mengembalikan 4xx dengan pesan yang tidak sesuai dengan tampilan permintaan Anda, itu layak untuk dilaporkan.
Cara Melaporkan dengan Efektif
Buka tiket dukungan dari dashboard atau posting di #support di Discord. Sertakan:
- Kode status HTTP lengkap dan response body (serta header respons cf-ray jika ada).
- Perkiraan timestamp dalam UTC.
- Nama model dan endpoint mana yang Anda panggil.
- cURL minimal yang mereproduksi masalah tersebut (sembunyikan API key asli Anda!).
- Apakah uji mandiri di atas berhasil untuk Anda pada key yang sama.
Bingung saat setup atau mau key gratis? Tanyakan ke komunitas di Discord kami.
Gabung Discord kami