Akun
Pemecahan masalah
Solusi untuk masalah umum API: autentikasi, saldo, akses model, batas laju, timeout, streaming, CORS, dan base URL yang salah.
Sebagian besar masalah muncul sebagai status HTTP dan code di body error. Cari kode di bawah; Error memuat daftar lengkapnya. Request yang gagal (4xx atau 5xx apa pun) tidak pernah ditagih.
{ "error": { "message": "...", "type": "authentication_error", "code": "invalid_api_key" } }
401 invalid_api_key
Key tidak ada, salah format, atau sudah dicabut.
- Kirim sebagai
Authorization: Bearer sk-api14-.... OpenAI SDK melakukannya dariapiKey/api_key; dengan curl, pastikan$API14_API_KEYbenar-benar terisi di shell tempat Anda menjalankannya (echo ${API14_API_KEY:0:9}seharusnya mencetaksk-api14-). - Waspadai tanda kutip atau baris baru yang nyasar ketika key berasal dari file
.env. OPENAI_API_KEYyang tertinggal di environment dapat menimpa key yang Anda maksudkan. Kirim key secara eksplisit untuk menyingkirkan kemungkinan ini.- Key yang dicabut langsung gagal. Key hanya ditampilkan sekali, jadi jika Anda kehilangannya, buat key baru di API key dan cabut yang lama.
Lihat Autentikasi.
402 insufficient_balance
Saldo USD Anda $0, atau (untuk video) di bawah perkiraan biaya job. Request tetap diblokir sampai Anda menambah dana, mengulang tidak membantu.
- Periksa saldo dengan
GET /creditsatau di Billing. Lihat Saldo dan info key. - Tambah dana atau aktifkan top up otomatis. Paket menambahkan pemakaian termasuk ke saldo yang sama setiap bulan. Lihat Harga dan penagihan.
- Pada job yang berjalan lama, perlakukan kode ini sebagai fatal dan berhenti, alih-alih membiarkan retry SDK berputar.
403 model_not_allowed atau plan_required
model_not_allowed: key memiliki allowlist model yang tidak mencakup ID model ini. Edit allowlist key di API key, atau gunakan key tanpa allowlist. Akhiran varian dihitung: pastikan ID persis yang Anda kirim diizinkan.plan_required: paket Anda tidak mencakup kategori model ini. Paket standar mencakup semua kategori; periksa paket Anda di halaman harga.
404 model_not_found atau not_found
model_not_found: ID model tidak dikenal, dinonaktifkan, atau dihapus. ID menyertakan awalan provider:openai/gpt-5-mini, bukangpt-5-mini. Cari ID persisnya denganGET /modelsatauGET /models/{id}(tanpa key). Lihat ID model dan varian.not_found: path tidak ada, atau id job video atau generasi bukan milik Anda. Ini biasanya berarti base URL salah (lihat di bawah). Pencarian generasi tepat setelah request juga dapat mengembalikan404selama beberapa detik sampai catatan muncul.
Base URL yang salah
Base URL-nya persis:
https://api14.com/api/v1
Kesalahan umum:
| Yang Anda atur | Hasil |
|---|---|
https://api14.com/v1 atau https://api14.com | Request mengenai situs web, bukan API: respons HTML, 404, atau error CORS di browser. |
https://api14.com/api/v1/chat/completions sebagai base | SDK menambahkan path lagi. Atur hanya base-nya. |
https://api.openai.com/v1 (default) | Key api14 Anda ditolak oleh OpenAI. Atur base URL di kode atau dengan OPENAI_BASE_URL. |
Kekhasan library: ruby-openai menambahkan v1 sendiri, jadi uri_base-nya adalah https://api14.com/api (Ruby); openai-go mengharapkan garis miring di akhir, https://api14.com/api/v1/ (Go).
429 rate_limited
Anda melampaui batas request per menit milik key atau paket Anda (Free 5, Pro 100, Team 3.000, Enterprise 3.000+). Respons menyertakan Retry-After: 60.
- Tunggu sesuai
Retry-Afterdan ulangi dengan exponential backoff dan jitter. OpenAI SDK resmi sudah melakukannya (dua retry secara default; naikkanmaxRetries/max_retries). - Untuk pekerjaan massal, atur laju request alih-alih menembakkan semuanya sekaligus, dan masukkan beberapa item dalam satu request. Lihat Panduan: pemrosesan batch.
- 429 juga bisa datang dari provider upstream, terutama pada varian
:free. Gunakan fallback model atau provider routing untuk menyebar beban.
429 daily_limit_reached
Key mencapai batas pengeluaran USD hariannya. Mengulang tidak membantu sampai hari UTC berikutnya. Naikkan atau hapus batas di API key jika lalu lintasnya memang diharapkan. Pastikan logika retry Anda membedakan kode ini dari rate_limited, jika tidak job akan terus mengulang tanpa hasil. Lihat Batas laju.
Timeout
Model besar, model reasoning, dan keluaran panjang bisa memakan waktu beberapa menit.
- Periksa timeout klien Anda. SDK Node dan Python default-nya 10 menit; klien HTTP lain sering memakai default yang lebih pendek.
- Gunakan streaming untuk generasi panjang. Token mulai tiba dalam hitungan detik, dan timeout koneksi idle di proxy serta load balancer tidak lagi menjadi masalah. Lihat Streaming.
- Atur
max_tokensdan, untuk model reasoning, effort reasoning yang lebih rendah. - Jika Anda meneruskan request lewat server Anda sendiri, timeout proxy-nya (misalnya
proxy_read_timeoutnginx, yang default-nya 60 detik) juga berlaku. - Timeout di sisi Anda tidak membatalkan generasi upstream, yang mungkin tetap ditagih. Gunakan Pencarian generasi dengan id request untuk memeriksanya.
Streaming terputus atau berhenti lebih awal
- Periksa
finish_reasonpada chunk terakhir."length"berartimax_tokenstercapai;"error"berarti provider gagal di tengah stream, dan chunk membawa objekerror. Ulangi, atau tambahkan fallback. - Proxy dan platform serverless kadang melakukan buffering atau memotong respons SSE. Matikan buffering (
X-Accel-Buffering: nopada nginx) dan periksa durasi respons maksimum platform. - Jika Anda mem-parse stream sendiri, abaikan baris komentar yang diawali
:(keep-alive) dan berhenti padadata: [DONE]. - Menutup koneksi lebih awal tidak membatalkan tagihan: provider mungkin tetap menyelesaikan generasi.
Error CORS dan aplikasi browser
Jangan pernah menaruh API key di kode browser atau mobile. Siapa pun dapat membacanya dari halaman dan membelanjakan saldo Anda. Panggil api14 dari backend Anda sendiri dan hanya ekspos endpoint Anda sendiri ke browser:
// server.js (Node / Express)
app.post("/api/chat", async (req, res) => {
const stream = await client.chat.completions.create({
model: "openai/gpt-5-mini",
messages: req.body.messages, // validate and limit this input
stream: true,
});
for await (const chunk of stream) res.write(chunk.choices[0]?.delta?.content ?? "");
res.end();
});
Error CORS di browser selama pengembangan biasanya berarti base URL salah (request sampai ke situs web, bukan ke API) atau header request kustom yang tidak diizinkan oleh preflight API; memindahkan panggilan ke server Anda menyelesaikan keduanya.
Masalah versi SDK
- Python
openaidi bawah 1.0 memakaiopenai.ChatCompletion.createdanopenai.api_base. Upgrade denganpip install -U openaidan gunakan klienOpenAI(base_url=..., api_key=...). chat.completions.parsetidak ada: rilis 1.x/4.x yang lebih lama hanya memilikiclient.beta.chat.completions.parse. Upgrade paketnya.- Error parameter tidak dikenal dari SDK untuk field gateway (
provider,models,reasoning,plugins): kirim denganextra_bodydi Python, atau opsi extra-body yang setara di SDK lain. Lihat Kompatibilitas OpenAI SDK. 400dari upstream dengan pesan provider: parameter tidak didukung oleh model atau provider tersebut. Periksasupported_parametersmodel di Model, atau tambahkanprovider: { "require_parameters": true }.