API Opencran
Semua model di katalog, langsung dari kode Anda. Satu kunci, satu saldo, harga yang sama dengan studio.
1 · Autentikasi
Buat kunci di Pengaturan, Kunci API. Kirimkan di setiap permintaan sebagai token Bearer. Kunci diawali dengan oc_live_ dan hanya berfungsi di Opencran; simpan di server Anda, jangan pernah di browser atau aplikasi.
curl https://opencran.com/api/v1/api/catalog/me \
-H 'Authorization: Bearer oc_live_...'2 · Pilih model
Pilih model untuk melihat permintaan siap pakai yang disusun dari kolomnya sendiri. Kolom wajib sudah terisi, dan setiap pengaturan opsional memakai nilai bawaan model.
opencran/fast-image/text-to-image| Nama | Tipe | Wajib | Bawaan |
|---|---|---|---|
| prompt | text | ya | - |
| aspect_ratio | 1:1 | 2:1 | 1:2 | 3:1 | 1:3 | 21:9 | ... | tidak | 1:1 |
3 · Mulai render
Satu panggilan menghitung harga input persis Anda dan memotongnya dari saldo. Respons langsung kembali dengan status queued, sementara render berjalan di latar belakang. Kirim header Idempotency-Key agar permintaan yang diulang tidak pernah ditagih dua kali.
curl -X POST https://opencran.com/api/v1/api/catalog/generations \
-H 'Authorization: Bearer oc_live_...' \
-H 'Content-Type: application/json' \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"modelId": "opencran/fast-image/text-to-image",
"inputs": {
"prompt": "a lighthouse on a cliff at dusk, soft light"
}
}'Cek harga terlebih dahulu (opsional)
Input yang sama, dihitung harganya tanpa memulai apa pun. Jawabannya dalam sen.
curl -X POST https://opencran.com/api/v1/api/catalog/quote \
-H 'Authorization: Bearer oc_live_...' \
-H 'Content-Type: application/json' \
-d '{"modelId":"opencran/fast-image/text-to-image","inputs":{"prompt":"a lighthouse on a cliff at dusk, soft light"}}'4 · Cek status dan unduh
Minta status render setiap beberapa detik sampai statusnya succeeded, failed, atau refunded. Jika berhasil, unduh file dari contentUrl dengan kunci yang sama. Model teks mengembalikan jawabannya di textOutput.
curl https://opencran.com/api/v1/api/catalog/generations/GENERATION_ID \
-H 'Authorization: Bearer oc_live_...'curl https://opencran.com/api/v1/api/catalog/generations/GENERATION_ID/content \
-H 'Authorization: Bearer oc_live_...' \
-o result.pngEndpoint
URL dasar: https://opencran.com/api/v1/api/catalog
| GET | /me | Kunci dan saldo Anda |
| GET | /models | Semua model |
| GET | /models/detail?id=MODEL_ID | Satu model dan kolomnya |
| POST | /quote | Harga untuk input tertentu |
| POST | /generations | Mulai render |
| GET | /generations | Render terbaru Anda |
| GET | /generations/ID | Status satu render |
| GET | /generations/ID/content | File hasil |
| DELETE | /generations/ID | Hapus render |
Harga dan saldo
Render lewat API memakai saldo yang sama dengan studio dan harganya sama. Setiap jumlah di API dalam sen euro: costCents adalah biaya sebuah render, balanceCents adalah sisa saldo.
Error dan batas
Galat dikembalikan sebagai JSON dengan kode dan pesan. 401: kunci hilang, salah, atau dicabut. 400: ada kolom yang tidak valid (detailnya menyebutkannya). 402: saldo tidak cukup. 429: terlalu banyak permintaan, pelan-pelan. Render yang gagal dikembalikan dananya secara otomatis. Batas yang tepat akan diumumkan saat kunci diluncurkan. 403 dengan halaman HTML: permintaan dihentikan sebelum mencapai API, biasanya karena User-Agent. Bawaan Python-urllib diblokir, kirim milik Anda sendiri, misalnya User-Agent: my-app/1.0.