API Stock vs. WaveSpeedAI
Alternativa a WaveSpeedAI
API Stock es una alternativa a WaveSpeedAI para imágenes y vídeo con un saldo prepago. Compara modelos compartidos y el cambio de endpoints por modelo a nuestra API de tareas.
Comparación de API Stock y WaveSpeedAI
Cuándo elegir API Stock
Elige API Stock si un único endpoint multimedia importa más que las rutas por modelo y las opciones síncronas de WaveSpeedAI.
Cuándo seguir con WaveSpeedAI
Mantén WaveSpeedAI si dependes de un endpoint especializado o un flujo síncrono. Revisa modelos y parámetros antes de migrar cada ruta.
Documentación API de WaveSpeedAIDesplaza horizontalmente para ver todas las columnas.
| Detalle de integración | WaveSpeedAI | API Stock |
|---|---|---|
| Solicitud | POST /api/v3/bytedance/seedream-v4.5 | POST /api/v1/generation/create |
| Autenticación | Authorization: Bearer | Authorization: Bearer |
| Identificador del modelo | bytedance/seedream-v4.5 | seedream-4-5 |
Se compara el modelo del ejemplo, no todos los endpoints del proveedor. Un mismo nombre no garantiza parámetros, moderación ni resultados idénticos.
Comparación de precios: WaveSpeedAI y API Stock
Modelos compartidos seleccionados con las mismas unidades de facturación. Nuestros precios proceden del catálogo actual; los del proveedor incluyen fecha de consulta y enlaces a sus fuentes.
| Modelo | API Stock | WaveSpeedAI | Diferencia de nuestro precio |
|---|---|---|---|
| Seedream 4.52K · por imagen · texto a imagen | API Stock$0.036 | WaveSpeedAI$0.04 | 10% menos |
| Nano Bananapor imagen · texto a imagen | API Stock$0.015 | WaveSpeedAI$0.038 | 60.5% menos |
Una imagen a partir de texto, sin referencias. Tarifas públicas base; planes, descuentos por volumen, otras resoluciones y ediciones pueden cambiar el precio final.
Coste de una carga de trabajo
Seedream 4.5 · 2K
1.000 imágenes con la configuración indicada
- API Stock
- $36
- WaveSpeedAI
- $40
Nano Banana
1.000 imágenes con la configuración indicada
- API Stock
- $15
- WaveSpeedAI
- $38
Totales ilustrativos a partir de las filas anteriores, sin descuentos por volumen, suscripciones ni opciones de pago. No garantizan latencia ni resultados idénticos.
Migrar desde WaveSpeedAI
Sustituye el endpoint /api/v3 por /api/v1/generation/create con el id público en el JSON. Adapta size a los campos documentados size y resolution y cambia el sondeo de predicciones al de tareas.
1
Crea una cuenta, recarga el saldo y genera una clave API.
2
Envía POST /api/v1/generation/create con el id público y los parámetros documentados. Cada tarea genera un resultado.
3
Lee taskId. Consulta GET /api/v1/task/status/TASK_ID o indica webhook al crear la tarea.
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"}'
Ejemplo completo: crear tarea y obtener archivo
Ejecuta en el servidor con Node 22+ o Bun y API_KEY. Se crea una sola tarea de pago y se consulta sin recrearla. Las URL son temporales: guarda el archivo en tu almacenamiento.
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()));
Guarda las claves API en el servidor. Prueba una solicitud, sus parámetros, estados y resultado antes de trasladar el tráfico de producción.
Preguntas frecuentes
¿Cómo migro desde WaveSpeedAI?
Sustituye el endpoint /api/v3 por /api/v1/generation/create con el id público en el JSON. Adapta size a los campos documentados size y resolution y cambia el sondeo de predicciones al de tareas.
¿API Stock siempre es más barato que WaveSpeedAI?
No. Compara el modelo, la configuración y la unidad de facturación exactos de la tabla. Los precios pueden subir o bajar; consulta ambos catálogos antes de migrar.
¿Puedo trasladar cualquier flujo de WaveSpeedAI?
Mantén WaveSpeedAI si dependes de un endpoint especializado o un flujo síncrono. Revisa modelos y parámetros antes de migrar cada ruta.
¿Qué pasa con solicitudes fallidas o incompletas?
Las tareas multimedia se reintentan según las rutas configuradas, con reserva cuando esté disponible. Un fallo definitivo de generación se reembolsa. Consulta la tarea en curso en lugar de duplicarla. Una URL caducada no significa una generación fallida.
¿Cómo añado saldo?
Los métodos de pago disponibles, las monedas y los importes mínimos de recarga se muestran en tu cuenta antes de pagar. No hay suscripción: el uso de los modelos se descuenta del saldo prepago.
Prueba tu primera solicitud en API Stock
Elige un modelo, revisa sus parámetros y precio y crea una clave API. Prueba una solicitud antes de trasladar el tráfico.