API Stock vs. WaveSpeedAI
Alternativa ao WaveSpeedAI
API Stock é uma alternativa ao WaveSpeedAI para imagens e vídeos com saldo pré-pago único. Compare modelos compartilhados e a troca de endpoints por modelo pela nossa API de tarefas.
Comparação entre API Stock e WaveSpeedAI
Quando escolher API Stock
Escolha API Stock se um endpoint de mídia único importa mais que rotas por modelo e opções síncronas do WaveSpeedAI.
Quando continuar com WaveSpeedAI
Continue com WaveSpeedAI se depender de um endpoint especializado ou fluxo síncrono. Confira modelos e parâmetros antes de migrar cada rota.
Documentação API do WaveSpeedAIRole horizontalmente para ver todas as colunas.
| Detalhe de integração | WaveSpeedAI | API Stock |
|---|---|---|
| Solicitação | POST /api/v3/bytedance/seedream-v4.5 | POST /api/v1/generation/create |
| Autenticação | Authorization: Bearer | Authorization: Bearer |
| Identificador do modelo | bytedance/seedream-v4.5 | seedream-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: WaveSpeedAI 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.
| Modelo | API Stock | WaveSpeedAI | Diferença do nosso preço |
|---|---|---|---|
| Seedream 4.52K · por imagem · texto para imagem | API Stock$0.036 | WaveSpeedAI$0.04 | 10% menor |
| Nano Bananapor imagem · texto para imagem | API Stock$0.015 | WaveSpeedAI$0.038 | 60.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
- WaveSpeedAI
- $40
Nano Banana
1.000 imagens na configuração indicada
- API Stock
- $15
- WaveSpeedAI
- $38
Totais ilustrativos das linhas acima, sem descontos por volume, assinaturas ou opções pagas. Não garantem latência nem resultados idênticos.
Migração do WaveSpeedAI
Substitua o endpoint /api/v3 por /api/v1/generation/create com o id público no JSON. Adapte size aos campos documentados size e resolution e troque a consulta de previsões pela de tarefas.
1
Crie uma conta, recarregue o saldo e gere uma chave API.
2
Envie POST /api/v1/generation/create com o id público e os parâmetros documentados. Cada tarefa gera uma saída.
3
Leia taskId. Consulte GET /api/v1/task/status/TASK_ID ou informe webhook ao criar a tarefa.
WaveSpeedAI
curl --fail-with-body 'https://api.wavespeed.ai/api/v3/bytedance/seedream-v4.5' \-H "Authorization: Bearer $WAVESPEED_API_KEY" \-H 'Content-Type: application/json' \-d '{"prompt": "A ceramic mug on a wooden table, soft morning light","size": "2048*2048"}'
API Stock
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": "1:1"}'
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.
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": "1:1"}),});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 WaveSpeedAI?
Substitua o endpoint /api/v3 por /api/v1/generation/create com o id público no JSON. Adapte size aos campos documentados size e resolution e troque a consulta de previsões pela de tarefas.
API Stock é sempre mais barato que WaveSpeedAI?
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 WaveSpeedAI?
Continue com WaveSpeedAI se depender de um endpoint especializado ou fluxo síncrono. Confira modelos e parâmetros antes de migrar cada rota.
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.