New: Nano Banana 2.1Try the model
API Stock

API Stock vs. Eachlabs

Alternativa ao Eachlabs

Compare Eachlabs e API Stock para imagens via API: preços compartilhados e conversão de previsões em tarefas com consulta de status ou webhook.

Comparação entre API Stock e Eachlabs

Quando escolher API Stock

Escolha API Stock se seu aplicativo já coordena as etapas e precisa de uma API de geração em vez de uma plataforma visual.

Quando continuar com Eachlabs

Mantenha Eachlabs para fluxos e ferramentas além de uma geração individual. Reconstrua os processos de várias etapas e confira cada modelo no catálogo.

Documentação API do Eachlabs

Role horizontalmente para ver todas as colunas.

Mudanças da API: de Eachlabs para API Stock
Detalhe de integraçãoEachlabsAPI Stock
SolicitaçãoPOST /v1/prediction/POST /api/v1/generation/create
AutenticaçãoAuthorization: BearerAuthorization: Bearer
Identificador do modelobytedance-seedream-v4-5-text-to-image / version: 0.0.1seedream-4-5

O modelo do exemplo é comparado, não todos os endpoints do provedor. Nomes iguais não garantem parâmetros, moderação ou resultados idênticos.

Comparação de preços: Eachlabs e API Stock

Modelos compartilhados selecionados com as mesmas unidades de cobrança. Nossos preços vêm do catálogo atual; os preços do provedor incluem a data de consulta e links para as fontes.

Comparação de preços: Eachlabs e API Stock
Seedream 4.52K · por imagem · texto para imagemAPI Stock$0.036Eachlabs$0.0410% menor
Nano Bananapor imagem · texto para imagemAPI Stock$0.015Eachlabs$0.0462.5% menor

Uma imagem a partir de texto, sem referências. Tarifas públicas básicas; planos, descontos por volume, outras resoluções e edições podem mudar o preço final.

Custo de uma carga de trabalho

Seedream 4.5 · 2K

1.000 imagens na configuração indicada

API Stock
$36
Eachlabs
$40

Nano Banana

1.000 imagens na configuração indicada

API Stock
$15
Eachlabs
$40

Totais ilustrativos das linhas acima, sem descontos por volume, assinaturas ou opções pagas. Não garantem latência nem resultados idênticos.

Preços

Migração do Eachlabs

Substitua /v1/prediction por /api/v1/generation/create. Converta o identificador versionado e input em id público e parâmetros documentados. Troque webhook_url por webhook e adapte a leitura do resultado.

  1. 1

    Crie uma conta, recarregue o saldo e gere uma chave API.

  2. 2

    Envie POST /api/v1/generation/create com o id público e os parâmetros documentados. Cada tarefa gera uma saída.

  3. 3

    Leia taskId. Consulte GET /api/v1/task/status/TASK_ID ou informe webhook ao criar a tarefa.

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"
}'
Exemplo completo: criar tarefa e obter arquivo

Execute no servidor com Node 22+ ou Bun e API_KEY. Uma única tarefa paga é criada e consultada sem recriação. As URLs são temporárias: salve o arquivo no seu armazenamento.

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()));

Mantenha as chaves API no servidor. Teste uma solicitação com parâmetros, status e resultado antes de transferir o tráfego de produção.

Perguntas frequentes

Como migrar do Eachlabs?

Substitua /v1/prediction por /api/v1/generation/create. Converta o identificador versionado e input em id público e parâmetros documentados. Troque webhook_url por webhook e adapte a leitura do resultado.

API Stock é sempre mais barato que Eachlabs?

Não. Compare o modelo, a configuração e a unidade de cobrança exatos na tabela. Os preços podem subir ou cair; confira ambos os catálogos antes de migrar.

Posso transferir qualquer fluxo do Eachlabs?

Mantenha Eachlabs para fluxos e ferramentas além de uma geração individual. Reconstrua os processos de várias etapas e confira cada modelo no catálogo.

O que acontece com solicitações falhas ou incompletas?

Tarefas de mídia são repetidas pelas rotas configuradas, usando reserva quando disponível. Falhas definitivas de geração são reembolsadas. Consulte a tarefa em andamento em vez de duplicá-la. Uma URL expirada não significa falha na geração.

Como adiciono saldo?

Os métodos de pagamento disponíveis, as moedas e os valores mínimos de recarga são exibidos na sua conta antes do pagamento. Não há assinatura: o uso dos modelos é descontado do saldo pré-pago.

Teste sua primeira solicitação em API Stock

Escolha um modelo, confira os parâmetros e o preço e crie uma chave API. Teste uma solicitação antes de transferir o tráfego.