Kesalahan
UberLLM mengembalikan amplop kesalahan bergaya OpenAI sehingga penanganan kesalahan yang sudah ada berfungsi tanpa perubahan:
{
"error": {
"code": "insufficient_credits",
"message": "Your credit balance is too low to serve this request.",
"type": "insufficient_credits"
}
}
Permukaan Inferensi (/v1/*)
| HTTP | code |
Arti | Yang harus dilakukan |
|---|---|---|---|
| 402 | insufficient_credits |
Saldo prabayar Anda tidak cukup untuk menutupi reservasi permintaan. | Isi ulang di Dashboard → Credits. |
| 402 | key_spend_cap_exceeded |
Kunci ini telah mencapai batas pengeluaran yang dikonfigurasi (harian / bulanan / seumur hidup). | Naikkan atau hapus batas kunci, atau gunakan kunci lain. |
| 400 | invalid_request |
Body permintaan tidak dapat di-parse, atau model menolak permintaan (pesan akan menjelaskan alasannya). | Perbaiki permintaan; permintaan tidak akan dicoba ulang. |
| 413 | request_too_large |
Body permintaan melebihi 10 MB (paling sering gambar yang dikirim sebagai base64). | Kirim gambar sebagai link https://, atau perpendek percakapan. Tidak ada biaya yang dikenakan. |
| 404 | model_not_found |
ID model tidak tersedia. Prefix uberllm/ di depannya tidak masalah: uberllm/deepseek/deepseek-v4.1-flash mencapai deepseek/deepseek-v4.1-flash. |
Periksa GET /v1/models; perbaiki ID. |
| 400 | context_length_exceeded |
Prompt lebih panjang dari yang dapat ditangani model, siapa pun penjualnya. Pada /v1/chat/completions tanpa daftar models, model terdekat yang dapat menanganinya akan menjawab sebagai gantinya (model balasan akan menyebutkannya); error ini muncul ketika tidak ada yang bisa, atau pada /v1/messages. Pesan akan memberikan kedua ukuran dan menyebutkan model yang dapat menanganinya. |
Kirim lebih sedikit, atau pilih model yang disebutkan dalam pesan. Tidak ada biaya yang dikenakan. |
| 400 | tools_not_supported |
Permintaan mengirimkan tools dan model tidak dapat memanggilnya, siapa pun penjualnya. Aturan pengganti yang sama seperti di atas. Pesan akan menyebutkan model yang bisa. |
Kirim tanpa tools, atau pilih model yang disebutkan dalam pesan. Tidak ada biaya yang dikenakan. |
| 400 | max_price_exceeded |
Tidak ada yang menjual model dalam provider.max_price Anda saat ini (dan tidak ada model di models yang dapat menanganinya). |
Naikkan max_price, coba lagi nanti, atau sebutkan model lain. Tidak ada biaya yang dikenakan. |
| 400 | unsupported_routing_option |
Opsi provider yang tidak dapat diterapkan UberLLM (pesan akan menyebutkannya). |
Jangan sertakan; lihat Models & routing. |
| 400 | invalid_metadata |
metadata bukan objek dengan hingga 16 nilai teks. |
Perbaiki tag; angka harus dalam tanda kutip. |
| 400 | unknown_capability |
Alias best-price: / fastest: tidak menyebutkan pekerjaan apa pun. |
Gunakan salah satu dari chat, image, image-edit, text-to-video, image-to-video, music, speech, transcription. |
| 400 | wrong_endpoint |
Model (atau alias) melakukan pekerjaan yang tidak dilakukan oleh rute ini: model gambar, video, musik, ucapan, atau transkripsi yang dikirim ke /v1/chat/completions atau /v1/messages, model chat yang dikirim ke rute media, atau ucapan dan transkripsi yang tertukar. Pesan akan menyebutkan rute yang benar. Ditolak sebelum ada yang berjalan; tidak ada biaya yang dikenakan, dan Activity mencantumkannya sebagai ditolak. |
Kirim ke rute yang disebutkan dalam pesan (juga di endpoints pada /v1/models/{id}). |
| 503 | no_timing_data |
fastest: diminta sebelum cukup permintaan diukur waktunya untuk membandingkan model. |
Gunakan best-price: atau sebutkan model. |
| 429 | rate_limited |
Kunci ini melebihi batas permintaan per menitnya, atau marketplace terus melakukan rate-limiting setelah percobaan ulang otomatis. | Tunggu sebentar dan coba lagi dengan jitter; naikkan batas rate kunci. |
| 503 | no_available_provider |
Tidak ada yang dapat melayani model tersebut saat ini, bahkan setelah percobaan ulang otomatis (tidak ada penjual, setiap penjual gagal atau terlalu lambat untuk memulai, atau opsi provider Anda tidak menyisakan apa pun untuk dirutekan), atau alias best-price: / fastest: tidak menemukan model yang tersedia untuk pekerjaan tersebut saat ini. Pesan akan menyebutkan model atau pekerjaan tersebut. Ini juga mencakup penjual yang akun penyediaannya sendiri gagal: UberLLM mencoba penjual lain, dan tidak pernah meneruskan error penjual tersebut seolah-olah kunci Anda salah. |
Coba lagi sebentar lagi atau pilih model lain. Tidak ada biaya yang dikenakan. |
| 503 | service_unavailable |
Masalah sementara di sisi UberLLM. | Coba lagi dalam beberapa menit. |
Permintaan gambar, video, dan musik menambahkan beberapa kode mereka sendiri (image_required,
invalid_image_url (link gambar sumber yang tidak mengarah ke gambar),
max_cost_too_low, idempotency_key_reused, artifact_expired); lihat
Buat video atau gambar.
Permintaan chat yang ditolak atau gagal akan muncul di Dashboard → Activity dengan
pesan yang dikirimkan kepada Anda. Respons chat, gambar, video, musik, ucapan, dan transkripsi
membawa header X-Request-Id dengan ID yang sama dengan baris Activity-nya,
termasuk error.
Percobaan ulang terjadi untuk Anda sebelum error dikembalikan: hingga 4 percobaan, hanya sebelum byte konten pertama. Lihat Models & routing.
Reservasi dan Pembatalan
UberLLM memesan perkiraan biaya sebelum melakukan proxy dan menyelesaikannya dari penggunaan aktual setelahnya. Jika permintaan mengalami error, dibatalkan, atau Anda terputus di tengah streaming, reservasi yang tidak terpakai akan dilepaskan — Anda hanya akan ditagih untuk konten yang benar-benar diproduksi. Streaming yang dibatalkan direkonsiliasi dari perkiraan tokenizer dan ditandai di Dashboard → Activity.
Pembatasan laju
Pembatasan laju per-kunci diberlakukan dengan jendela tetap. Pada layanan inferensi, pemeriksaan pembatasan laju gagal tertutup — jika UberLLM tidak dapat memverifikasi batas Anda, permintaan ditolak daripada dilayani tanpa terukur. Atur (atau tingkatkan) batas permintaan per menit untuk sebuah kunci di Dashboard → API keys.
Setiap jawaban /v1/* yang terautentikasi membawa jendela saat ini dari kunci tersebut:
| Header | Arti |
|---|---|
X-RateLimit-Limit |
Permintaan yang dapat dikirim kunci ini per menit |
X-RateLimit-Remaining |
Permintaan tersisa di menit saat ini |
X-RateLimit-Reset |
Kapan jendela dimulai ulang (detik Unix) |
Retry-After |
Pada 429 dari batas ini: detik untuk menunggu sebelum mencoba lagi |
Perlambat ketika X-RateLimit-Remaining mendekati 0. Header dihilangkan ketika jendela tidak dapat dibaca.
API Penjual (/api/v1/seller/*)
Ini menggunakan kode REST standar:
| HTTP | code |
Arti |
|---|---|---|
| 400 | invalid_request |
Validasi gagal (misalnya endpoint_url non-https, harga tidak ada untuk absolute, multiplier di luar 0 < m ≤ 1.5). Pesan tersebut menyebutkan nama bidangnya. |
| 400 | model_not_in_catalog |
model_id bukan model katalog yang dikenal. |
| 401 | unauthorized |
JWT dasbor tidak ada atau tidak valid. |
| 404 | seller_not_found |
Tidak ada penjual untuk organisasi Anda — hubungi POST /api/v1/seller/register terlebih dahulu. |
| 404 | offer_not_found |
Tidak ada penawaran dengan ID tersebut di bawah penjual Anda. |
| 409 | invalid_status_transition |
Perubahan status ilegal — misalnya melanjutkan penawaran delisted (dihapus dari daftar adalah status akhir). |
Catatan: probe validasi yang gagal bukanlah respons kesalahan. Penawaran berhasil dibuat/diperbarui dan dikembalikan dengan status: "paused" serta last_probe_error yang menjelaskan alasannya — perbaiki endpoint dan PATCH kembali ke active untuk melakukan probe ulang. Lihat Penjual.
Kesalahan Auth
| HTTP | Arti |
|---|---|
| 401 | Header Authorization tidak ada/tidak valid. Kunci inferensi adalah Bearer ull_...; endpoint dasbor menggunakan JWT akun Anda. |
| 403 | Kunci valid tetapi tidak memiliki cakupan yang diperlukan (misalnya, kunci khusus inferensi memanggil endpoint dasbor). |