Satu API untuk semua model video AI
Jika Anda mengenal OpenRouter untuk model bahasa, Revana adalah gagasan yang sama untuk generasi video dan gambar: satu kunci API, satu format permintaan, dan satu saldo prabayar untuk Seedance, Veo, Kling, Wan, Nano Banana Pro, GPT Image 2, dan sisa katalog, dengan fallback otomatis ketika rute upstream gagal.
Masalah memanggil setiap model secara langsung
Setiap pembuat model menjalankan API-nya sendiri, dengan akun, kunci, format permintaan, alur status job, dan penagihan sendiri. Membangun di atas tiga di antaranya berarti tiga integrasi yang harus dipelihara, tiga saldo yang harus diisi, dan tiga set kode error yang harus ditangani. Beberapa model ditawarkan oleh beberapa platform dengan harga berbeda, batas berbeda, dan kapasitas yang datang dan pergi.
Biayanya terasa ketika Anda ingin mencoba model baru, yang pada 2026 terjadi setiap beberapa bulan. Setiap model baru berarti satu integrasi lagi sebelum Anda bahkan bisa melihat apakah cocok untuk produk Anda.
Cara kerja Revana
- Satu kunci. Daftar dan buat kunci API di dasbor. Kunci ini berlaku untuk semua model di katalog.
- Satu permintaan. Kirim
POST /v1/generationsdengan idmodeldan objekinput. Nama field sama untuk setiap model:prompt,image_url,end_image_url,image_urls,resolution,duration,aspect_ratiodanaudio. - Harga sebelum apa pun berjalan. Harga job berasal dari katalog dan ditahan dari saldo prabayar Anda. Field atau nilai yang tidak didukung model ditolak dengan
422sebelum ada yang ditagih. Anda juga bisa mengaturmax_cost_usdsebagai batas atas. - Perutean. Router mengirim job ke rute termurah untuk model itu. Jika rute gagal atau timeout, job pindah ke rute berikutnya.
- Satu format hasil. Lakukan polling
GET /v1/generations/{id}. Ketika statusnyasucceeded, file ada dioutput.urlsdan biaya ada dicost_usd. Jika job gagal, penahanan dilepas.
Job bersifat asinkron: gambar biasanya butuh hitungan detik, dan video butuh dari kurang dari semenit hingga beberapa menit. Dokumentasi memuat referensi field lengkap dan kode error.
Permintaan yang sama pada tiga model
Karena format permintaan dipakai bersama, membandingkan model hanyalah sebuah loop. Skrip ini mengirim satu prompt ke Seedance 2.0, Veo 3.1 Fast dan Wan 3.0, lalu mencetak setiap hasil dan biayanya. Setiap model mempertahankan opsinya sendiri, jadi pilih nilai yang diterima ketiganya; di sini yaitu 720p, 8 detik, dan 16:9.
import os
import time
import requests
API = "https://api.revana.si/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['REVANA_API_KEY']}"}
PROMPT = (
"A paper boat sails down a rain-soaked street gutter at dusk, "
"neon signs reflected in the water. Rain, distant traffic."
)
MODELS = ["seedance-2.0", "veo-3.1-fast", "wan-3.0"]
# Submit the same job to every model; each call returns 202 with an id.
jobs = {}
for model in MODELS:
resp = requests.post(f"{API}/generations", headers=HEADERS, json={
"model": model,
"input": {
"prompt": PROMPT,
"resolution": "720p",
"duration": 8,
"aspect_ratio": "16:9",
"audio": True,
},
"max_cost_usd": 1.5,
})
resp.raise_for_status()
jobs[model] = resp.json()["id"]
# Poll each job until it finishes.
for model, job_id in jobs.items():
while True:
job = requests.get(f"{API}/generations/{job_id}", headers=HEADERS).json()
if job["status"] in ("succeeded", "failed"):
break
time.sleep(5)
if job["status"] == "succeeded":
print(model, job["output"]["urls"][0], job["cost_usd"])
else:
print(model, "failed:", job["error"])Pada harga katalog Oktober 2026, ketiga job berbiaya:
| Model | Permintaan | Harga |
|---|---|---|
| Seedance 2.0 | 720p, 8 dtk, suara sudah termasuk dalam tarif | $1.20 |
| Veo 3.1 Fast | 720p, 8 dtk, dengan suara (harga terpisah) | $0.80 |
| Wan 3.0 | 720p, 8 dtk, suara sudah termasuk dalam tarif | $0.72 |
max_cost_usd sebesar 1.5 mencakup ketiganya. Job yang akan berbiaya lebih dari batas atasnya tidak dijalankan.
Fallback antar rute
Rute adalah satu sumber kapasitas upstream untuk sebuah model. Banyak model di Revana punya lebih dari satu, dan router memakainya secara berurutan:
- Termurah lebih dulu. Setiap job diarahkan ke rute berbiaya terendah yang menerima opsinya.
- Berikutnya saat gagal. Jika rute itu gagal atau timeout, job otomatis pindah ke rute berikutnya. Field
attemptsmenunjukkan berapa yang dicoba. - Model sama, harga sama. Setiap rute melayani model yang Anda minta, pada harga yang tercantum. Router tidak pernah menukar dengan model yang berbeda.
- Satu tagihan. Hanya rute yang berhasil yang ditagih. Jika semua rute gagal, job berakhir sebagai
faileddan tidak berbiaya.
| Model | Jenis | Rute |
|---|---|---|
| Seedance 2.5 | video | lima rute |
| Seedance 2.0 | video | tiga rute |
| Kling 3.0 | video | dua rute |
| Veo 3.1 Fast | video | dua rute |
| Veo 3.1 | video | dua rute |
| Wan 3.0 | video | tiga rute |
| Nano Banana Pro | image | satu rute |
| GPT Image 2 | image | dua rute |
Model dengan satu rute tidak bisa melakukan fallback. Fallback meningkatkan peluang job selesai, tetapi bukan jaminan uptime: tangani job failed di kode Anda, misalnya dengan mencoba lagi nanti atau beralih sendiri ke model lain.
Harga dan kredit
Revana bayar sesuai pemakaian. Tidak ada langganan, tidak ada seat, dan tidak ada minimum bulanan: Anda membeli kredit prabayar dalam paket $10, $50, $100, $500, $1,000 atau $5,000 dan memakainya di model apa pun pada harga yang tercantum.
- Sebagian besar model video dihargai per detik output, menurut resolusi dan, pada beberapa model, menurut apakah suara aktif.
- Model gambar dihargai per gambar, menurut ukuran.
- Harga ditahan saat Anda mengirim, ditagih ketika job berhasil, dan dilepas ketika gagal.
Halaman harga mencantumkan harga setiap model. Panduan kami menunjukkan biaya pekerjaan umum di Seedance 2.0, Veo 3.1 dan Kling 3.0.
Baca katalog lewat kode
Katalog lengkap adalah file JSON publik di https://revana.si/data/models.json. Field utama untuk setiap model:
| Field | Isinya |
|---|---|
id | string yang dikirim sebagai model |
name, maker | nama tampilan dan perusahaan yang membuat model |
kind | video or image |
tasks | apa yang diterima model, seperti text_to_video atau image_to_video |
options | resolusi, rasio aspek, durasi, suara, dan batas gambar input |
price | satuan (per detik, per gambar, atau per job) dan harga untuk setiap opsi |
routes | berapa banyak rute yang melayani model |
Misalnya, untuk mencantumkan semua model yang bisa membuat video dari teks:
# Every model that can make a video from a text prompt
curl -s https://revana.si/data/models.json \
| jq -r '.models[] | select(any(.tasks[]; . == "text_to_video")) | .id'Pakai untuk membuat pemilih model, memeriksa opsi sebelum mengirim, atau memperkirakan harga job di antarmuka Anda sendiri. Data yang sama menjalankan halaman model.
Yang perlu diketahui sebelum beralih
- Opsi berbeda menurut model. Nama field dipakai bersama, tetapi setiap model menerima nilainya sendiri. Kling 3.0, misalnya, tidak mencantumkan opsi rasio aspek. Periksa halaman model sebelum Anda mengubah string
model. - Tautan output kedaluwarsa. Unduh file yang selesai dan simpan di penyimpanan Anda sendiri.
- Model adalah pilihan Anda. Perutean mengubah tempat job berjalan, tidak pernah model yang menjalankannya. Beralih ke model lain adalah keputusan kode Anda.
- Harga bisa berubah. Katalog selalu menampilkan harga saat ini, dan harga setiap job ditetapkan saat Anda mengirimnya.
Siap mencoba? Dapatkan kunci API, jelajahi model, atau mulai dengan quickstart.
Pertanyaan yang sering diajukan
Adakah satu API untuk semua model video AI?
Revana memberi Anda satu kunci API, satu format permintaan, dan satu saldo prabayar untuk model video dan gambar utama, termasuk Seedance, Veo, Kling, Wan, Hailuo, Grok Imagine, Nano Banana dan GPT Image. Setiap model mempertahankan opsi dan harganya sendiri.
Apa kesamaan Revana dengan OpenRouter?
OpenRouter memberi developer satu API untuk banyak model bahasa. Revana melakukan hal yang sama untuk model generasi video dan gambar: satu kunci, satu saldo, dan perutean ke beberapa sumber kapasitas untuk model yang sama.
Apa yang terjadi ketika rute upstream gagal?
Jika model punya lebih dari satu rute, router memindahkan job ke rute berikutnya dengan harga tercantum yang sama. Jika semua rute gagal, job berakhir sebagai gagal dan jumlah yang ditahan dilepas.
Apakah Revana akan beralih ke model lain jika model saya tidak tersedia?
Tidak. Router mengganti rute, bukan model. Jika Anda ingin beralih ke model lain, lakukan di kode Anda dengan mengirim permintaan baru dengan id model yang berbeda.
Bagaimana cara kerja penagihan?
Anda membeli kredit prabayar dalam paket dari $10 hingga $5,000, tanpa langganan. Setiap job dihargai dari katalog, ditahan saat Anda mengirim, dan hanya ditagih jika berhasil.
Bagaimana cara mendapatkan daftar model dan harga lewat kode?
Ambil https://revana.si/data/models.json. File ini mencantumkan setiap model beserta id, pembuat, tugas, opsi, harga, dan jumlah rutenya.
Satu kunci untuk seluruh katalog
Buat kunci, tambahkan kredit prabayar, dan panggil model video atau gambar mana pun dengan permintaan yang sama.