Lompati ke dokumentasi
Pada halaman ini

Seedream 5.0 Pro API

Buat gambar, edit referensi, atau urai gambar menjadi lapisan (layer) dengan kunci API Seevio Anda. Tugas berjalan secara asinkron; simpan taskId dan lakukan polling ke endpoint tugas atau terima melalui callback.

POST https://api.seevio.ai/v1/images/generations

Kemampuan

FiturNilai yang didukung
Mode pembuatantext-to-image, image-to-image, layer-decomposition
Resolusi output1K, 1.5K, 2K
Rasio aspek1:1, 4:3, 3:4, 16:9, 9:16, 2:3, 3:2, 21:9
Gambar referensiURL PNG / JPEG / WebP HTTPS publik, masing-masing hingga 30 MB. Jangan gunakan gambar untuk teks-ke-gambar, gunakan 1–10 gambar untuk gambar-ke-gambar, dan tepat satu gambar untuk layer-decomposition.
Perintah (Prompt)Gunakan 4–5000 karakter setelah menghapus spasi di awal dan akhir. Hanya untuk mode layer-decomposition, kolom prompt boleh dihilangkan atau dibiarkan kosong.
Format keluaranpng, jpg

Harga & kredit

Harga di bawah ini adalah per gambar yang dikembalikan. Pembuatan biasa mencadangkan satu gambar. Penguraian lapisan mencadangkan 17 gambar, menyesuaikan biaya berdasarkan jumlah gambar yang benar-benar dikembalikan (termasuk gambar dasar), dan mengembalikan kredit yang tidak terpakai ke saldo awal Anda. Tugas yang gagal akan dikembalikan dananya secara penuh.

Resolusi outputHarga & kredit
1K4 kredit
1.5K4 kredit
2K8 kredit

Pada resolusi default 2K, penguraian lapisan mencadangkan 136 kredit. Jika empat gambar dikembalikan, biaya akhirnya adalah 32 kredit dan 104 kredit akan dikembalikan.

Idempotensi permintaan tidak didukung. Setiap POST yang valid akan membuat tugas berbayar baru. Jika hasil pengiriman belum pasti, lakukan kueri pada taskId yang dikembalikan; mencoba ulang POST dapat membuat tugas baru lainnya.

Autentikasi

Buat kunci API di dasbor. Kunci lengkap hanya akan ditampilkan sekali. Simpan di server Anda dan kirimkan sebagai Bearer token pada setiap permintaan.

URL Basis

https://api.seevio.ai
Authorization: Bearer sk_live_your_api_key
Content-Type: application/json

Atur variabel lingkungan SEEVIO_API_KEY sebelum menjalankan contoh ini. Contoh JavaScript dijalankan di server Anda menggunakan Node.js; contoh Python menggunakan paket requests.

Isi permintaan

KolomTipeWajibDeskripsi & batasan
model
stringYa

ID Model. Untuk menggunakan Seedream 5.0 Pro, atur bidang ini ke seedream-5-0-pro.

callback_url
stringTidak

Endpoint HTTPS publik untuk callback POST selesai dan gagal. Jaringan privat dan localhost tidak diizinkan.

Contoh: https://example.com/webhooks/seevio
input
objectYa

Pengaturan pembuatan. Prompt wajib diisi untuk teks-ke-gambar dan gambar-ke-gambar; opsional untuk penguraian lapisan (layer-decomposition).

Parameter input

KolomTipeWajibDefaultDeskripsi & batasan
input.prompt
stringKondisional—

Gunakan 4–5000 karakter setelah menghapus spasi di awal dan akhir. Hanya untuk mode layer-decomposition, kolom prompt boleh dihilangkan atau dibiarkan kosong.

Contoh: A minimalist ceramic teapot on a stone pedestal, soft studio lighting
input.generation_type
stringTidaktext-to-image

Gunakan text-to-image untuk membuat gambar baru, image-to-image untuk mengedit gambar referensi, atau layer-decomposition untuk memisahkan satu gambar menjadi elemen yang dapat digunakan kembali.

Nilai yang didukung
text-to-image | image-to-image | layer-decomposition
input.image_urls
string[]Kondisional[]

URL PNG / JPEG / WebP HTTPS publik, masing-masing hingga 30 MB. Jangan gunakan gambar untuk teks-ke-gambar, gunakan 1–10 gambar untuk gambar-ke-gambar, dan tepat satu gambar untuk layer-decomposition.

Contoh: ["https://example.com/teapot.png"]
input.aspect_ratio
stringTidak1:1

Rasio aspek

Nilai yang didukung
1:1 | 4:3 | 3:4 | 16:9 | 9:16 | 2:3 | 3:2 | 21:9
Contoh: 1:1
input.resolution
stringTidak2K

Teks-ke-gambar dan gambar-ke-gambar mendukung 1K (kualitas dasar) dan 2K (kualitas tinggi). Layer-decomposition mendukung 1K, 1.5K, dan 2K. Default: 2K.

Nilai yang didukung
1K | 1.5K | 2K
Contoh: 2K
input.output_format
stringTidakpng

Format output yang diminta. Untuk pemisahan layer, png menghasilkan gambar dasar PNG dan jpg menghasilkan gambar dasar JPEG. Semua layer yang terpisah akan dikembalikan dalam format PNG dengan transparansi yang tetap terjaga.

Nilai yang didukung
png | jpg
Contoh: png

Setiap permintaan membuat satu tugas. Teks-ke-gambar dan gambar-ke-gambar menghasilkan satu gambar; pemisahan layer menghasilkan 1–17 gambar, termasuk gambar dasar. Jangan mengirim aspect_ratio untuk pemisahan layer.

Mulai cepat

Kirim permintaan minimal ini, simpan taskId yang dikembalikan, lalu gunakan contoh kueri tugas di bawah ini. Nilai kredit dalam respons pembuatan adalah jumlah yang dicadangkan.

curl --fail-with-body https://api.seevio.ai/v1/images/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedream-5-0-pro",
  "input": {
    "prompt": "A minimalist ceramic teapot on a stone pedestal, soft studio lighting",
    "aspect_ratio": "1:1",
    "resolution": "2K",
    "output_format": "png",
    "generation_type": "text-to-image"
  }
}'

Contoh respons pembuatan tugas

{
  "taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "credits": 8
}

Teks ke gambar

Buat gambar, edit referensi, atau urai gambar menjadi lapisan (layer) dengan kunci API Seevio Anda. Tugas berjalan secara asinkron; simpan taskId dan lakukan polling ke endpoint tugas atau terima melalui callback.

curl --fail-with-body https://api.seevio.ai/v1/images/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedream-5-0-pro",
  "input": {
    "prompt": "A minimalist ceramic teapot on a stone pedestal, soft studio lighting",
    "aspect_ratio": "1:1",
    "resolution": "2K",
    "output_format": "png",
    "generation_type": "text-to-image"
  }
}'

Gambar ke gambar

Untuk pengeditan gambar, atur generation_type ke image-to-image dan cantumkan image_urls. Parameter lainnya menggunakan ketentuan yang sama.

Ganti URL media example.com dengan file HTTPS Anda sendiri yang dapat diakses publik. URL contoh ini hanya menunjukkan struktur permintaan dan bukan aset sampel yang dapat diunduh.

curl --fail-with-body https://api.seevio.ai/v1/images/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedream-5-0-pro",
  "input": {
    "prompt": "Change the teapot to matte sage green. Preserve its shape and the studio lighting.",
    "aspect_ratio": "1:1",
    "resolution": "2K",
    "output_format": "png",
    "generation_type": "image-to-image",
    "image_urls": [
      "https://example.com/teapot.png"
    ]
  }
}'

Penguraian lapisan

Atur generation_type ke layer-decomposition dan masukkan tepat satu URL gambar. Jangan sertakan aspect_ratio. output_format hanya mengatur format gambar dasar. Layer yang terpisah akan selalu dikembalikan dalam format PNG dengan transparansi yang tetap terjaga. Simpan setiap URL yang dikembalikan dalam data.results.

curl --fail-with-body https://api.seevio.ai/v1/images/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedream-5-0-pro",
  "input": {
    "generation_type": "layer-decomposition",
    "image_urls": [
      "https://example.com/teapot.png"
    ],
    "resolution": "2K",
    "output_format": "png"
  }
}'

Penguraian lapisan dapat mengembalikan beberapa URL gambar di data.results: gambar dasar dan lapisan-lapisan yang telah dipisahkan. Setiap URL mengarah ke gambar terpisah. Jumlah hasil bervariasi tergantung tugas (total 1–17 gambar); proses seluruh array, bukan hanya data.results[0]. Baik kueri tugas yang selesai maupun webhook penyelesaian berisi array ini. Respons pembuatan awal hanya berisi taskId dan kredit yang dicadangkan, bukan URL gambar.

Contoh respons pembuatan tugas

{
  "taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "credits": 136
}

Penguraian lapisan selesai: beberapa URL gambar

Respons ilustratif ini menunjukkan empat gambar output: satu gambar dasar dan tiga lapisan. Tugas Anda mungkin mengembalikan jumlah yang berbeda. Pada resolusi 2K yang diminta, credits adalah biaya akhir untuk keempat gambar tersebut; bagian yang tidak terpakai dari reservasi awal 17 gambar telah dikembalikan.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1789171200,
  "model": "seedream-5-0-pro",
  "credits": 32,
  "failed_code": null,
  "status": "completed",
  "billing_status": "charged",
  "failed_reason": null,
  "data": {
    "results": [
      "https://cdn.seevio.ai/api/images/example/base.png",
      "https://cdn.seevio.ai/api/images/example/layer-1.png",
      "https://cdn.seevio.ai/api/images/example/layer-2.png",
      "https://cdn.seevio.ai/api/images/example/layer-3.png"
    ],
    "image_expires_at": "2026-10-12T00:00:00.000Z",
    "processing_time": 12
  }
}

Proses setiap gambar yang dikembalikan

const response = await fetch(
  "https://api.seevio.ai/v1/tasks/TASK_ID",
  { headers: { Authorization: `Bearer ${process.env.SEEVIO_API_KEY}` } }
);
if (!response.ok) throw new Error(await response.text());
const task = await response.json();

if (task.status === "completed") {
  // Process every returned image, including the base image.
  // The number of URLs varies; do not read only results[0].
  for (const [index, imageUrl] of task.data.results.entries()) {
    console.log({ taskId: task.id, index, imageUrl });
    // Download or store this image in your application.
  }
} else if (task.status === "failed") {
  throw new Error(task.failed_reason || "Image generation failed.");
}
// If queued or generating, poll again after at least 5 seconds.

Kueri tugas

GET https://api.seevio.ai/v1/tasks/{taskId}

Ganti ID contoh dengan taskId yang dikembalikan oleh pembuatan. Kueri hanya mengembalikan tugas milik pengguna dari kunci API tersebut; ID yang tidak dapat diakses atau tidak dikenal akan mengembalikan HTTP 404.

Lakukan polling setiap 10–20 detik sebagai permulaan, kurangi frekuensi pada HTTP 429, dan hentikan saat status telah selesai atau gagal. Gunakan webhook untuk produksi. Setiap contoh kode di bawah ini melakukan satu kueri.

curl --fail-with-body https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
  -H "Authorization: Bearer $SEEVIO_API_KEY"
StatusNilai yang diizinkan dan persyaratan
queuedDiterima dan menunggu pengiriman.
generatingPembuatan sedang berlangsung.
completedSelesai dengan sukses. Unduh data.results sebelum kedaluwarsa.
failedGagal total. Periksa failed_reason dan billing_status.
BidangTipeNilai yang diizinkan dan persyaratan
idstringPengidentifikasi tugas. Ini adalah taskId dari respons pembuatan.
created_atnumberWaktu pembuatan tugas dalam detik Unix.
modelstringID model publik yang digunakan untuk tugas ini.
billing_statusstringreserved, charged, refunded, atau refund_failed.
creditsnumberRespons pembuatan dan tugas yang tertunda menampilkan kredit yang dicadangkan. Setelah selesai, credits adalah biaya sebenarnya; kredit cadangan yang tidak terpakai sudah dikembalikan. Untuk tugas yang gagal, kolom ini tetap menampilkan jumlah awal yang dicadangkan.
failed_reasonstring | nullAlasan kegagalan pada tugas yang gagal; jika tidak, nilainya null. Respons kueri yang gagal mengosongkan data.
failed_codestring | nullKode kesalahan. Lihat failed_reason untuk detail kesalahan.
dataobjectAda pada kueri tugas yang tidak gagal. Berisi detail output dan pemrosesan.
data.resultsstring[]Semua URL gambar hasil output, termasuk gambar dasar untuk pemisahan layer. Kosong sebelum proses selesai dan setelah kedaluwarsa.
data.image_expires_atstring | nullWaktu kedaluwarsa gambar dalam format ISO 8601, atau null jika belum tersedia.
data.processing_timenumber | nullDurasi pemrosesan tugas dalam detik jika tersedia, jika tidak maka bernilai null.

Dalam antrean

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1789171200,
  "model": "seedream-5-0-pro",
  "credits": 8,
  "failed_code": null,
  "status": "queued",
  "billing_status": "reserved",
  "failed_reason": null,
  "data": {
    "results": [],
    "image_expires_at": null,
    "processing_time": null
  }
}

Selesai

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1789171200,
  "model": "seedream-5-0-pro",
  "credits": 8,
  "failed_code": null,
  "status": "completed",
  "billing_status": "charged",
  "failed_reason": null,
  "data": {
    "results": [
      "https://cdn.seevio.ai/api/images/example.png"
    ],
    "image_expires_at": "2026-10-12T00:00:00.000Z",
    "processing_time": 12
  }
}

Gagal

Ketika kueri mengembalikan status=failed, proses pembuatan gambar gagal. Lihat failed_reason untuk mengetahui penyebabnya dan billing_status untuk hasil pengembalian dana. Pada contoh ini, refunded berarti kredit telah dikembalikan. credits tetap menampilkan jumlah awal yang dicadangkan, dan respons tidak menyertakan data.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1789171200,
  "model": "seedream-5-0-pro",
  "credits": 8,
  "failed_code": "400",
  "status": "failed",
  "billing_status": "refunded",
  "failed_reason": "The input or output was flagged as sensitive. Please try again with different inputs."
}

Tautan hasil tersedia selama 30 hari setelah penyimpanan. Setelah masa kedaluwarsa habis, results akan kosong.

Webhook

Atur callback_url dalam permintaan buat untuk menerima POST JSON saat tugas selesai atau gagal. Kembalikan respons 2xx dalam waktu 15 detik. Pengiriman yang gagal akan dicoba kembali; proses pengiriman berulang secara idempoten berdasarkan ID tugas.

Endpoint callback Anda harus menerima permintaan POST dengan body permintaan JSON (Content-Type: application/json).

Buat tugas dengan callback

curl --fail-with-body https://api.seevio.ai/v1/images/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedream-5-0-pro",
  "input": {
    "prompt": "A minimalist ceramic teapot on a stone pedestal, soft studio lighting",
    "aspect_ratio": "1:1",
    "resolution": "2K",
    "output_format": "png",
    "generation_type": "text-to-image"
  },
  "callback_url": "https://example.com/webhooks/seevio"
}'

Panggilan balik (callback) menggunakan struktur respons kueri tugas; notifikasi kegagalan yang dananya dikembalikan juga menyertakan credits_refunded tingkat atas. Gunakan id untuk mengidentifikasi tugas dan status untuk membedakan antara tugas yang selesai dan gagal. Notifikasi dapat terkirim berulang kali: proses secara idempoten berdasarkan id dan status. Panggilan balik tidak ditandatangani; verifikasi tugas menggunakan titik akhir (endpoint) kueri yang terautentikasi. Kegagalan pengiriman notifikasi tidak menyebabkan pengembalian dana untuk tugas yang berhasil.

Tugas selesai: payload callback sukses

created_at adalah waktu pembuatan peristiwa; task_created_at adalah waktu pembuatan tugas, dalam detik Unix. Contoh menampilkan kolom yang disarankan; respons dapat memuat kolom tambahan.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1789171212,
  "model": "seedream-5-0-pro",
  "credits": 8,
  "failed_code": null,
  "status": "completed",
  "billing_status": "charged",
  "failed_reason": null,
  "data": {
    "results": [
      "https://cdn.seevio.ai/api/images/example.png"
    ],
    "image_expires_at": "2026-10-12T00:00:00.000Z",
    "processing_time": 12
  },
  "task_created_at": 1789171200
}

Tugas gagal: payload callback gagal

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1789171212,
  "model": "seedream-5-0-pro",
  "credits": 8,
  "failed_code": "400",
  "status": "failed",
  "billing_status": "refunded",
  "failed_reason": "The input or output was flagged as sensitive. Please try again with different inputs.",
  "task_created_at": 1789171200,
  "credits_refunded": 8
}

Contoh penerima

export async function POST(request: Request) {
  const callbackData = await request.json();

  if (callbackData.status === "completed") {
    const imageUrls = callbackData.data.results;
    // Save the image URLs and mark this task as completed in your application.
    console.log(callbackData.id, imageUrls);
  }

  if (callbackData.status === "failed") {
    const { failed_reason, credits_refunded } = callbackData;
    // Record the failure reason and refunded credits for this task.
    console.error(callbackData.id, failed_reason, credits_refunded);
  }

  return new Response(null, { status: 200 });
}

Contoh Next.js ini membaca body callback JSON dan menangani tugas yang berhasil serta gagal secara langsung. Tambahkan persistensi dan deduplikasi ID tugas untuk aplikasi Anda; antrekan pekerjaan yang lambat sebelum mengonfirmasi callback.

Error

Error HTTP memiliki objek error dengan kode dan pesan. Tugas yang berhasil diterima masih bisa gagal nanti; kueri tugas atau tangani callback kegagalannya.

{
  "error": {
    "code": "invalid_request",
    "message": "input.prompt is required."
  }
}
HTTPKolomTindakan
400invalid_request
Perbaiki JSON, prompt yang hilang, rentang parameter, atau URL media sebelum mencoba lagi.
401invalid_api_key
Periksa Bearer token dan apakah kunci API aktif.
402insufficient_credits
Tambahkan kredit atau kurangi biaya tugas. Respons mungkin menyertakan jumlah yang diperlukan dan yang tersedia.
403forbidden
Periksa batasan tingkat akun yang dijelaskan dalam pesan kesalahan.
404not_found
Periksa ID tugas dan pastikan kunci tersebut milik pengguna tugas.
429rate_limited
Tunggu interval Retry-After sebelum mencoba lagi.
500internal_error
Periksa pesan error dan log API. Coba lagi dengan hati-hati; mengirim ulang permintaan pembuatan dapat membuat tugas berbayar lainnya.

Error menggunakan error.code dan error.message: 400 invalid_request, 401 invalid_api_key, 402 insufficient_credits, 403 forbidden, 404 not_found, 429 rate_limited, 500 internal_error. Error 402 insufficient_credits berarti kredit Anda yang tersedia tidak mencukupi untuk permintaan ini.

Batas frekuensi

Membuat tugas: secara default, setiap kunci API mengizinkan hingga 100 permintaan per menit. Batas frekuensi kustom saat ini belum tersedia.

Kueri tugas: secara default, setiap kunci API mengizinkan hingga 120 permintaan per menit. Permintaan kueri dan permintaan pembuatan tugas dihitung secara terpisah.

Permintaan pembuatan gambar dan video berbagi batas tingkat (rate limit) kunci API yang sama.

HTTP 429 menyertakan Retry-After: 60 untuk pembuatan dan Retry-After: 5 untuk kueri. Gunakan backoff dan hindari polling lebih sering dari yang diperlukan.

HTTP/1.1 429 Too Many Requests
Content-Type: application/json
Retry-After: 60
{
  "error": {
    "code": "rate_limited",
    "message": "Rate limit exceeded."
  }
}