New: Nano Banana 2.1Try the model
API Stock

API Stock vs Eachlabs

Alternatif Eachlabs

Bandingkan Eachlabs dan API Stock untuk gambar melalui API: harga model bersama dan perubahan prediksi menjadi tugas dengan polling atau webhook.

Perbandingan API Stock dan Eachlabs

Kapan memilih API Stock

Pilih API Stock jika aplikasi Anda sudah mengatur langkah sendiri dan memerlukan API generasi, bukan platform alur visual.

Kapan tetap menggunakan Eachlabs

Pertahankan Eachlabs untuk alur dan alat di luar satu generasi. Bangun ulang alur bertahap dan periksa setiap model dalam katalog.

Dokumentasi API Eachlabs

Geser secara horizontal untuk membaca semua kolom tabel.

Perubahan API: Eachlabs ke API Stock
Detail integrasiEachlabsAPI Stock
PermintaanPOST /v1/prediction/POST /api/v1/generation/create
AutentikasiAuthorization: BearerAuthorization: Bearer
Id modelbytedance-seedream-v4-5-text-to-image / version: 0.0.1seedream-4-5

Tabel membandingkan model contoh di bawah, bukan semua endpoint. Nama model yang sama tidak menjamin parameter, moderasi atau hasil yang identik.

Perbandingan harga: Eachlabs dan API Stock

Model bersama terpilih dengan satuan penagihan yang sama. Harga kami berasal dari katalog saat ini; harga penyedia disertai tanggal pemeriksaan dan tautan sumber.

Perbandingan harga: Eachlabs dan API Stock
Seedream 4.52K · per gambar · teks ke gambarAPI Stock$0.036Eachlabs$0.0410% lebih rendah
Nano Bananaper gambar · teks ke gambarAPI Stock$0.015Eachlabs$0.0462.5% lebih rendah

Satu gambar dari teks, tanpa gambar referensi. Tarif dasar publik; paket, diskon volume, resolusi lain dan pengeditan dapat mengubah harga akhir.

Biaya beban kerja

Seedream 4.5 · 2K

1.000 gambar dengan konfigurasi di atas

API Stock
$36
Eachlabs
$40

Nano Banana

1.000 gambar dengan konfigurasi di atas

API Stock
$15
Eachlabs
$40

Total ilustratif dari baris di atas, tanpa diskon volume, langganan atau opsi berbayar. Tidak menjamin latensi atau hasil yang sama.

Harga

Migrasi dari Eachlabs

Ganti /v1/prediction dengan /api/v1/generation/create. Petakan id model berversi dan input ke id publik serta parameter terdokumentasi. Ganti webhook_url dengan webhook dan sesuaikan pembacaan hasil.

  1. 1

    Buat akun, isi saldo prabayar dan buat kunci API.

  2. 2

    Kirim POST /api/v1/generation/create dengan id model publik dan parameter terdokumentasi. Setiap tugas membuat satu output.

  3. 3

    Baca taskId. Poll GET /api/v1/task/status/TASK_ID atau isi webhook saat membuat tugas.

Eachlabs

bash
curl --fail-with-body 'https://api.eachlabs.ai/v1/prediction/' \
-H "Authorization: Bearer $EACHLABS_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "bytedance-seedream-v4-5-text-to-image",
"version": "0.0.1",
"input": {
"prompt": "A ceramic mug on a wooden table, soft morning light",
"image_size": "landscape_16_9",
"num_images": 1,
"max_images": 1
}
}'

API Stock

bash
curl --fail-with-body 'https://api.api-stock.com/api/v1/generation/create' \
-H "Authorization: Bearer $API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "seedream-4-5",
"prompt": "A ceramic mug on a wooden table, soft morning light",
"resolution": "2K",
"size": "16:9"
}'
Contoh lengkap: buat tugas dan ambil file

Jalankan di server dengan Node 22+ atau Bun dan API_KEY. Contoh membuat satu tugas berbayar, lalu melakukan polling tanpa membuat ulang. URL bersifat sementara: simpan file di penyimpanan Anda.

javascript
import { writeFile } from "node:fs/promises";
const baseURL = "https://api.api-stock.com/api/v1";
const apiKey = process.env.API_KEY;
if (!apiKey) throw new Error("Set API_KEY on the server");
async function request(path, options = {}) {
const response = await fetch(baseURL + path, {
...options,
headers: {
Authorization: `Bearer ${apiKey}`,
"Content-Type": "application/json",
},
signal: AbortSignal.timeout(30_000),
});
if (!response.ok) throw new Error(await response.text());
return response.json();
}
const { taskId } = await request("/generation/create", {
method: "POST",
body: JSON.stringify({
"model": "seedream-4-5",
"prompt": "A ceramic mug on a wooden table, soft morning light",
"resolution": "2K",
"size": "16:9"
}),
});
if (!taskId) throw new Error("Missing taskId");
const deadline = Date.now() + 10 * 60_000;
let fileUrl;
while (Date.now() < deadline) {
const { data } = await request(`/task/status/${encodeURIComponent(taskId)}`);
if (data.status === "finished") {
fileUrl = data.files?.[0]?.fileUrl;
if (!fileUrl) throw new Error("Task finished without a file");
break;
}
if (data.status === "failed" || data.status === "expired") {
throw new Error(data.errorMessage || data.status);
}
await new Promise((resolve) => setTimeout(resolve, 2000));
}
if (!fileUrl) throw new Error(`Still processing: save taskId ${taskId} and resume polling`);
const file = await fetch(fileUrl, { signal: AbortSignal.timeout(60_000) });
if (!file.ok) throw new Error(`Download failed: ${file.status}`);
const mime = file.headers.get("content-type")?.split(";")[0];
const extension = { "image/png": "png", "image/jpeg": "jpg", "image/webp": "webp" }[mime] || "bin";
await writeFile(`generated-image.${extension}`, new Uint8Array(await file.arrayBuffer()));

Simpan kunci API di server. Uji satu permintaan, parameter, status dan hasil sebelum memindahkan trafik produksi.

Pertanyaan yang sering diajukan

Bagaimana cara bermigrasi dari Eachlabs?

Ganti /v1/prediction dengan /api/v1/generation/create. Petakan id model berversi dan input ke id publik serta parameter terdokumentasi. Ganti webhook_url dengan webhook dan sesuaikan pembacaan hasil.

Apakah API Stock selalu lebih murah dari Eachlabs?

Tidak. Bandingkan model, konfigurasi dan satuan penagihan yang tepat dalam tabel. Harga dapat naik atau turun; periksa kedua katalog sebelum memindahkan trafik.

Bisakah semua alur kerja Eachlabs dipindahkan?

Pertahankan Eachlabs untuk alur dan alat di luar satu generasi. Bangun ulang alur bertahap dan periksa setiap model dalam katalog.

Apa yang terjadi pada permintaan gagal atau belum selesai?

Tugas media dicoba ulang sesuai rute yang dikonfigurasi, dengan penyedia cadangan jika tersedia. Kegagalan akhir generasi dikembalikan dananya. Poll tugas yang berjalan, jangan buat duplikat. URL kedaluwarsa bukan kegagalan generasi.

Bagaimana cara mengisi saldo?

Metode pembayaran, mata uang, dan jumlah minimum isi ulang ditampilkan di akun Anda sebelum pembayaran. Tanpa langganan: penggunaan model dipotong dari saldo prabayar.

Coba permintaan pertama di API Stock

Pilih model, periksa parameter dan harganya, lalu buat kunci API. Uji satu permintaan sebelum memindahkan trafik.