Akun
Error
Daftar lengkap kode error yang dikembalikan gateway api14 dalam format error OpenAI, beserta arti setiap status HTTP dan cara menanganinya.
Error memakai format error OpenAI, sehingga SDK resmi mengubahnya menjadi exception biasa (APIError, RateLimitError, AuthenticationError, dan seterusnya). Buat percabangan berdasarkan code; message adalah penjelasan yang mudah dibaca dalam bahasa Inggris.
{
"error": {
"message": "This request may cost up to $0.0123 but your balance is $0.0040. Add funds at /pricing.",
"type": "insufficient_quota",
"code": "insufficient_balance"
}
}
Request yang gagal tidak dikenakan biaya. Setiap response dengan status 4xx atau 5xx tidak dikenakan biaya apa pun.
Kode error gateway
| Status | code | type | Arti |
|---|---|---|---|
| 400 | model_required | invalid_request_error | Field model tidak ada. |
| 400 | invalid_json | invalid_request_error | Body bukan objek JSON. |
| 400 | invalid_body | invalid_request_error | Body multipart tidak dapat dibaca. |
| 400 | max_tokens_too_large | invalid_request_error | Request uji coba playground meminta terlalu banyak token output. |
| 401 | invalid_api_key | authentication_error | Key tidak ada, salah format, atau sudah dicabut. |
| 402 | insufficient_balance | insufficient_quota | Saldo USD Anda $0 atau di bawah estimasi biaya maksimum permintaan (input, batas output, gambar, atau durasi video). Permintaan tidak dikirim. |
| 403 | model_not_allowed | permission_error | Allowlist model pada key tidak mencakup model ini. |
| 403 | plan_required | permission_error | Paket Anda tidak mencakup kategori model ini. |
| 404 | model_not_found | not_found_error | Model id tidak dikenal, dinonaktifkan, atau sudah dihapus. |
| 404 | not_found | not_found_error | Endpoint tidak dikenal, atau job video maupun generation yang bukan milik Anda. |
| 413 | payload_too_large | invalid_request_error | Body request melebihi batas ukuran (default 25 MB). |
| 429 | rate_limited | rate_limit_error | Request per menit terlampaui. Disertai Retry-After: 60. |
| 429 | daily_limit_reached | rate_limit_error | Key telah mencapai batas pengeluaran USD hariannya. |
| 409 | idempotency_conflict | api_error | Permintaan dengan Idempotency-Key ini sudah dikirim. Gunakan kunci baru untuk permintaan lain. Batas laju. |
| 403 | site_not_allowed | permission_error | Khusus widget: situs halaman tidak termasuk situs widget yang Anda izinkan. Widget. |
| 429 | widget_daily_limit | rate_limit_error | Khusus widget: widget, atau semua widget bersama-sama, mencapai batas pengeluaran harian USD. |
| 429 | visitor_daily_limit | rate_limit_error | Khusus widget: pengunjung ini mencapai batas permintaan harian yang diatur di kontrol widget. |
| 502 | upstream_unavailable | api_error | Penyedia upstream tidak dapat dihubungi. |
| 4xx/502 | content_unavailable | bervariasi | Konten video belum dapat diambil (status mengikuti upstream, 502 jika tidak ada). |
| 503 | maintenance | service_unavailable | Mode pemeliharaan, endpoint generation dijeda, endpoint GET tetap berfungsi. |
| 503 | not_configured | service_unavailable | Gateway belum dikonfigurasi. |
Error dari upstream
Error yang dikembalikan oleh penyedia upstream, misalnya parameter yang tidak valid untuk model tertentu, context length yang meluap, penolakan karena kebijakan konten, atau 429 milik penyedia itu sendiri, diteruskan dengan kode status aslinya dan format { error: {... } } yang sama.
Apa yang harus dilakukan
| Status | Coba ulang? | Tindakan |
|---|---|---|
| 400 | Tidak | Perbaiki body request. |
| 401 | Tidak | Periksa key dan header Authorization: Bearer. Lihat Autentikasi. |
| 402 | Tidak | Tambahkan dana atau aktifkan isi ulang otomatis. |
| 403 | Tidak | Gunakan model yang diizinkan, ubah allowlist key, atau upgrade paket Anda. |
| 404 | Tidak | Periksa model id di halaman model. |
| 413 | Tidak | Kirim body yang lebih kecil, atau kirim file lewat URL alih-alih base64. |
| 429 | Nanti | rate_limited: tunggu sesuai Retry-After. daily_limit_reached: tunggu hari UTC berikutnya atau naikkan batas key. Lihat Rate limit. |
| 502 | Ya | Coba ulang dengan backoff, atau tambahkan fallback model. |
| 503 | Ya | Coba lagi nanti. |
Menangani error di kode
import OpenAI from 'openai'
const client = new OpenAI({ baseURL: 'https://api14.com/api/v1', apiKey: process.env.API14_API_KEY })
try {
await client.chat.completions.create({ model: 'openai/gpt-5-mini', messages: [{ role: 'user', content: 'Hi' }] })
} catch (err) {
if (err instanceof OpenAI.APIError) {
console.error(err.status, err.code, err.message)
if (err.code === 'insufficient_balance') {
// prompt the user to add funds
}
} else {
throw err
}
}
from openai import OpenAI, APIStatusError
client = OpenAI(base_url="https://api14.com/api/v1", api_key="sk-api14-...")
try:
client.chat.completions.create(model="openai/gpt-5-mini", messages=[{"role": "user", "content": "Hi"}])
except APIStatusError as e:
print(e.status_code, e.code, e.message)
Error yang terjadi setelah stream dimulai akan tiba di dalam stream. Lihat Streaming.