BaruArahkan agen apa pun ke UberLLM — satu key, semua model, harga resmi atau lebih murah.
UberLLM

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 (atau image, music, speech, transcription, audio untuk keduanya, chat, beberapa digabungkan dengan koma) untuk jenis lain, atau ?type=all untuk setiap model, chat dulu, lalu gambar, video, musik, suara, dan transkripsi. Setiap entri memiliki type (chat, image, video, music, speech, transcription), endpoints (jalur yang melayaninya) dan pricing.
  • 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_vision dan supported_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, dan pricing.prompt / pricing.completion dalam 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: true saat permintaan untuknya bisa dilayani sekarang. false berarti tidak ada yang melayaninya saat ini, jadi permintaan akan ditolak dengan no_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: true untuk 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 kolom available, input_modalities, dan nsfw yang sama)
  • Web: uberllm.dev/#models, dan halaman per model di uberllm.dev/models/<model id>

Apa yang terjadi pada setiap permintaan

  1. UberLLM memeriksa apakah modelnya ada, bahwa prompt Anda sesuai dengan jendela konteksnya, dan bahwa ia mendukung tools jika permintaan Anda menggunakannya.
  2. Ini mencadangkan perkiraan biaya dari saldo Anda dan meneruskan permintaan tersebut.
  3. 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, ignore atau order, atau mengatur sort, menggantikan pilihan ini. Cara kerjanya: smart routing.
  4. 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), 429 yang meminta untuk menunggu 5 detik atau kurang, 5xx apa 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-After yang 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": true mendapatkan 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 dengan 503 no_timing_data, dan best-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.