Model & Routing
UberLLM mengirimkan setiap permintaan ke penyedia pihak ketiga yang tersedia untuk model yang Anda minta. Jika penyedia gagal sebelum mulai menjawab, permintaan akan dicoba lagi, dan permintaan yang masih gagal tidak akan ditagih. Setiap permintaan ditagih sesuai dengan biaya yang dikenakan penyedia, tanpa biaya tambahan dari UberLLM, dan tercantum dengan biayanya di Dashboard → Activity. Anda memilih model, bukan penyedia.
ID Model
Gunakan ID model dari katalog, misalnya deepseek/deepseek-v4-flash,
anthropic/claude-sonnet-5 atau z-ai/glm-5.3. Daftar apa yang bisa Anda panggil sekarang:
GET https://api.uberllm.dev/v1/models: model chat yang permintaannya bisa dikirim sekarang, jadi alat yang mengisi menu modelnya dari daftar ini (SillyTavern, LibreChat, n8n, Cline) hanya menampilkan model yang bisa diajak chat. Tambahkan?type=video(atauimage,music,speech,transcription,audiountuk keduanya,chat, beberapa digabungkan dengan koma) untuk jenis lain, atau?type=alluntuk setiap model, chat dulu, lalu gambar, video, musik, suara, dan transkripsi. Setiap entri memilikitype(chat,image,video,music,speech,transcription),endpoints(jalur yang melayaninya) danpricing.- Setiap model chat juga menyatakan apa yang bisa dilakukannya:
context_length,max_output_tokens,input_modalities(image= ia membaca gambar),supports_tools,supports_reasoning,supports_visiondansupported_parameters(kolom permintaan yang didukungnya). Fakta yang sama juga ada di bawah nama OpenRouter (architecture.input_modalities,top_provider.context_length,top_provider.max_completion_tokens, danpricing.prompt/pricing.completiondalam dolar per token), jadi alat yang dibuat untuk daftar OpenRouter membaca daftar kami apa adanya. GET https://api.uberllm.dev/v1/models/<model id>: satu model, dengan harganya, konteksnya (chat) dan, untuk model media,parameters: JSON Schema dari body permintaan (lihat Buat video atau gambar).- Setiap entri, di kedua jawaban, juga memiliki:
available:truesaat permintaan untuknya bisa dilayani sekarang.falseberarti tidak ada yang melayaninya saat ini, jadi permintaan akan ditolak denganno_available_provider. Pilih model lain atau coba lagi nanti.input_modalities: apa yang diterima model. Model yang membutuhkan gambar (image to video, reference to video, picture editing) mencantumkan"image"di samping"text"; yang mengambil video (upscaling) mencantumkan"video".nsfw:trueuntuk model yang dibuat untuk konten dewasa atau tanpa filter (Lustify, model "uncensored" dan sejenisnya). Lewati ini jika produk Anda harus tetap aman untuk pekerjaan.
- Publik, tanpa kunci:
GET https://api.uberllm.dev/api/v1/public/models(dengan harga, dan kolomavailable,input_modalities, dannsfwyang sama) - Web: uberllm.dev/#models, dan halaman per model di
uberllm.dev/models/<model id>
Apa yang terjadi pada setiap permintaan
- UberLLM memeriksa apakah modelnya ada, bahwa prompt Anda sesuai dengan jendela konteksnya, dan bahwa ia mendukung tools jika permintaan Anda menggunakannya.
- Ini mencadangkan perkiraan biaya dari saldo Anda dan meneruskan permintaan tersebut.
- Permintaan dikirim ke penyedia yang tersedia untuk model tersebut. Penyedia
dipilih lagi untuk setiap panggilan: yang termurah yang mulai menjawab cukup cepat
untuk ukuran prompt Anda (dalam 2x dari yang tercepat terukur, atau di bawah 1
detik). Prompt streaming yang panjang juga dikirim ke penyedia cepat kedua jika yang
pertama lambat untuk memulai; Anda mendapatkan dan membayar satu balasan. Menamai penyedia di
provider.only,ignoreatauorder, atau mengatursort, menggantikan pilihan ini. Cara kerjanya: smart routing. - Ketika balasan selesai, UberLLM menyelesaikan pembayaran dengan harga yang dilaporkan marketplace untuk panggilan tersebut dan melepaskan sisa reservasi.
Percobaan ulang otomatis
Jika panggilan gagal sebelum konten apa pun mencapai Anda, UberLLM akan mencoba lagi untuk Anda. Marketplace akan mencocokkan ulang penjual di setiap percobaan, dan tidak membebankan biaya apa pun untuk panggilan yang gagal sebelum diarahkan, jadi percobaan ulang hanya memakan waktu Anda.
- Dicoba ulang: tidak ada penjual untuk model saat ini (
no_sellers_for_model,no_healthy_sellers), marketplace kehabisan waktu untuk mengarahkan (route_deadline_exceeded),429yang meminta untuk menunggu 5 detik atau kurang,5xxapa pun, kesalahan koneksi, penjual yang kunci atau akun penyedianya sendiri gagal, atau tidak ada byte pertama tepat waktu. - Tidak dicoba ulang: model tidak ada, permintaan tidak valid, atau masalah penagihan atau otentikasi. Masalah-masalah tersebut akan langsung dikembalikan.
- Jadwal: hingga 4 percobaan, menunggu 0.3 d, 0.9 d, lalu 2.7 d di
antaranya (atau
Retry-Afteryang dikirim marketplace, jika 5 detik atau kurang). Ketika tidak ada yang menjual model, jawaban akan kembali dalam beberapa detik. - Menunggu byte pertama: sebuah stream mendapatkan 10 detik (lebih banyak untuk prompt yang panjang,
dan lebih banyak untuk model yang biasanya lambat); balasan tanpa
"stream": truemendapatkan 85 detik, karena tidak ada yang tiba sampai selesai. Percobaan yang menghabiskan seluruh 85 detik tidak akan ditunggu untuk kedua kalinya. Tidak ada percobaan ulang yang dimulai setelah 150 detik.
Setelah streaming dimulai, tidak ada yang dicoba ulang: kegagalan di tengah stream akan mengakhiri stream dan Anda hanya akan ditagih untuk apa yang telah diproduksi.
Jika setiap percobaan gagal, Anda akan mendapatkan kesalahan alih-alih balasan, dan reservasi sepenuhnya dilepaskan. Yang umum adalah:
| HTTP | code |
Kapan |
|---|---|---|
| 503 | no_available_provider |
Tidak ada yang bisa melayani model tersebut saat ini, bahkan setelah percobaan ulang: tidak ada penjual, setiap penjual gagal atau terlalu lambat untuk memulai, atau opsi provider Anda tidak menyisakan apa pun untuk diarahkan. Pesan tersebut menyebutkan nama model. Coba lagi sebentar lagi atau pilih model lain. |
| 503 | service_unavailable |
Masalah sementara di pihak UberLLM. Coba lagi dalam beberapa menit. |
| 404 | model_not_found |
ID model tidak tersedia. |
Lihat Kesalahan untuk daftar lengkap.
Model Cadangan
Kirim models dengan daftar ID model lain untuk dicoba, secara berurutan, ketika yang pertama tidak dapat dilayani:
{ "model": "deepseek/deepseek-v4-flash",
"models": ["z-ai/glm-5.3", "qwen/qwen3.6-plus"],
"messages": [{ "role": "user", "content": "hi" }] }
Model berikutnya hanya dicoba ketika tidak ada yang bisa melayani model sebelumnya saat ini (no_available_provider), atau tidak ada yang menjualnya dalam provider.max_price Anda.
Kesalahan permintaan (body yang buruk, ID model tidak dikenal di salah satu kolom) dan penolakan pembayaran (saldo, batas kunci) akan dijawab sekaligus dan tidak pernah diteruskan ke daftar berikutnya. Maksimal 5 model di model dan models secara bersamaan. Kolom model pada balasan dan baris Aktivitas akan menyebutkan model yang menjawab. models berfungsi pada /v1/chat/completions dan pada permintaan gambar, video, musik, dan ucapan; /v1/messages dan /v1/audio/transcriptions tidak membacanya.
Alias Model
Alih-alih ID model, Anda bisa menamai apa yang Anda butuhkan, dan UberLLM memilih model pada setiap permintaan:
best-price:<job>: model yang tersedia dengan harga terendah untuk satu permintaan biasa. Model chat dibandingkan berdasarkan harganya per juta token dengan output dihitung tiga kali; model gambar berdasarkan satu gambar (satu gambar 1024×1024 jika harganya per megapiksel); model video berdasarkan klip terpendeknya; model musik berdasarkan satu trek; model ucapan berdasarkan 1K karakter; model transkripsi berdasarkan satu menit.fastest:<job>: model dengan waktu median terendah di antara permintaan suksesnya di UberLLM dalam 7 hari terakhir (waktu hingga token pertama untuk chat, waktu hingga file selesai untuk media), hanya menghitung model dengan setidaknya 5 permintaan semacam itu. Ketika tidak ada model yang cukup, permintaan ditolak dengan503 no_timing_data, danbest-price:masih berfungsi.
Keduanya hanya memilih di antara model yang tersedia saat ini: pasar langsung menunjukkan penjual yang sehat untuk itu, dan permintaan terakhir UberLLM kepadanya dalam 10 menit terakhir tidak menemukan setiap penjual sibuk atau tidak berfungsi (aturan yang sama dengan available pada /v1/models). Pada rute media, ketika model yang dipilih alias menjawab bahwa tidak ada yang bisa menangani permintaan, permintaan yang sama berlanjut ke model berikutnya yang diwakili alias (hingga 3 model), dan model dari balasan menamai model yang menjawab. Ketika tidak ada model untuk pekerjaan itu yang tersedia, jawabannya adalah 503 no_available_provider dan tidak ada biaya yang dikenakan.
<job> adalah salah satu dari chat, image, image-edit, text-to-video, image-to-video, music, speech, transcription. Kirim alias chat ke /v1/chat/completions atau /v1/messages, dan alias media ke rute medianya. Bidang model dari balasan menamai model yang diselesaikannya. GET /v1/models/aliases mencantumkan setiap alias yang diselesaikan saat ini dan modelnya; GET /v1/models/best-price:chat menjelaskan model yang diwakilinya, dengan alias diatur.
Opsi routing
Objek provider dibaca pada /v1/chat/completions. Opsi yang tidak dapat diterapkan UberLLM akan ditolak dengan 400 unsupported_routing_option dan tidak ada biaya yang dikenakan, sehingga permintaan tidak akan pernah berjalan dengan pengaturan yang diabaikan secara diam-diam.
| Opsi | Fungsi |
|---|---|
only / allow |
Hanya rute atau provider ini. uberllm (rute marketplace UberLLM) dan seller (penawaran milik penjual sendiri) memilih di antara rute kami. Nama lain apa pun, seperti openai atau api.venice.ai, adalah provider di marketplace: permintaan kemudian melalui rute uberllm, yang hanya menggunakan penawaran dari provider tersebut. |
ignore / deny |
Jangan pernah ini. Nama rute seperti di atas. Nama provider (maksimal 32) ditolak di marketplace, dan permintaan kemudian melalui rute uberllm. |
order |
Urutan pilihan. Nama rute mengurutkan rute kami; nama provider mengatur urutan percobaan marketplace. Ini tidak pernah membuat provider memenuhi syarat atau tidak memenuhi syarat. |
sort |
price (default), latency (tercepat yang diamati pertama, dalam rentang harga) atau uptime (paling andal pertama, dalam rentang yang sama). throughput hanya mengurutkan rute kami sendiri. |
max_price |
Jumlah maksimum yang Anda bayar per juta token, dalam dolar AS: { "prompt": 1.0, "completion": 3.0 }. Rute yang harganya di atasnya akan dilewati; rute marketplace dipertahankan untuk penjual setidaknya sejauh di bawah harga daftar model sesuai kebutuhan batas Anda. Jika tidak ada yang tersisa, permintaan ditolak dengan 400 max_price_exceeded dan tidak ada biaya yang dikenakan. Ketika Anda menetapkan prompt dan completion, permintaan tidak akan pernah ditagih di atasnya untuk token yang digunakan. |
allow_fallbacks |
false mematikan percobaan ulang otomatis di atas; kegagalan pertama dikembalikan kepada Anda. |
data_collection |
Hanya "allow" (default) yang diterima. |
zdr, require_parameters |
Hanya false yang diterima. |
Sufiks model :floor dan :nitro diterima dan dihapus dari ID model; :floor mengurutkan berdasarkan harga dan :nitro berdasarkan throughput.
Untuk gambar, video, musik, dan ucapan, setiap permintaan dikirim ke provider pihak ketiga yang tersedia untuk model tersebut. provider.max_price adalah biaya maksimum satu unit (gambar, detik, megapixel, menit, 1K karakter, atau permintaan) yang mungkin dikenakan, sebagai angka: { "max_price": 0.05 }; ini juga membatasi tagihan. Setiap opsi provider lainnya ditolak untuk media.
Tag
Kirim metadata, sebuah objek berisi hingga 16 nilai teks (kunci hingga 64 karakter tanpa titik dua, nilai hingga 512), pada setiap request:
{ "model": "deepseek/deepseek-v4-flash", "messages": [...],
"metadata": { "project": "spring-ads", "run": "42" } }
Tag-tag tersebut disimpan bersama request dan tidak pernah dikirim ke provider. Tag-tag tersebut muncul pada request di Dashboard → Activity, pada status pekerjaan video atau musik, serta dalam ekspor CSV (kolom metadata). Saring Activity berdasarkan tag dengan GET /api/v1/usage/activity?tag=project:spring-ads (ulangi tag untuk memerlukan beberapa); tautan CSV akan menggunakan filter yang sama. Pada /v1/messages, metadata milik Anthropic sendiri ({"user_id": "…"}) disimpan dengan cara yang sama.