API Ducklygen

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 dk_live_ dan hanya berfungsi di Ducklygen; simpan di server Anda, jangan pernah di browser atau aplikasi.

curl https://ducklygen.com/api/v1/api/catalog/me \
  -H "Authorization: Bearer $DUCKLYGEN_API_KEY"

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://ducklygen.com/api/v1/api/catalog/generations \
  -H "Authorization: Bearer $DUCKLYGEN_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "modelId": "image-model-id",
  "inputs": {
    "prompt": "rubber duck floating on teal water, soft light"
  }
}'

Cek harga terlebih dahulu (opsional)

Input yang sama, dihitung harganya tanpa memulai apa pun. Jawabannya dalam sen.

curl -X POST https://ducklygen.com/api/v1/api/catalog/quote \
  -H "Authorization: Bearer $DUCKLYGEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"modelId":"image-model-id","inputs":{"prompt":"rubber duck floating on teal water, 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://ducklygen.com/api/v1/api/catalog/generations/ID \
  -H "Authorization: Bearer $DUCKLYGEN_API_KEY"

curl https://ducklygen.com/api/v1/api/catalog/generations/ID/content \
  -H "Authorization: Bearer $DUCKLYGEN_API_KEY" \
  -o result.png

Endpoint

URL dasarhttps://ducklygen.com/api/v1/api/catalog

GET/meKunci dan saldo Anda
GET/modelsSemua model
GET/models/detail?id=MODEL_IDSatu model dan kolomnya
POST/quoteHarga untuk input tertentu
POST/generationsMulai render
GET/generationsRender terbaru Anda
GET/generations/IDStatus satu render
GET/generations/ID/contentFile hasil
DELETE/generations/IDHapus render

Error dan batas

Error dikembalikan sebagai JSON dengan kode dan pesan. 401: kunci tidak ada, salah, atau dicabut. 400: ada kolom yang tidak valid (detailnya menyebutkan kolom itu). 402: saldo tidak cukup. 409 API_KEY_DAILY_CAP: batas harian kunci sudah tercapai. 429: terlalu banyak permintaan, perlambat. Render yang gagal dikembalikan dananya secara otomatis.

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.