Mantén la clave API en el servidor
No expongas la clave en el navegador, paquete móvil, prompt, registro o salida del agente. Envía solicitudes desde un backend bajo tu control.
Integraciones
Usa llamadas compatibles con OpenAI para chat y rol, o la API de tareas para imágenes, vídeo y audio. Elige un modelo, guarda la clave en tu servidor y sigue la ruta adecuada para el resultado que buscas.
Elige tu camino
Empieza donde ya trabajas. Todas las vías llegan a los mismos modelos, con los mismos precios.
Primeros pasos en 5 minutos
Crea una tarea, guarda su ID y recoge el archivo terminado. El mismo patrón sirve para todos los modelos de imagen, video y audio.
Comparar tarea, entradas, política, disponibilidad actual y precio.
Reemplaza el ID de modelo y el input del ejemplo por los campos exactos que muestra esa página de modelo. Nunca adivines parámetros mirando otro modelo.
HTTP 202 significa que la tarea se aceptó, no que la generación terminó; el código de negocio del formato de respuesta sigue siendo code: 200. Guarda data.taskId de inmediato; estimatedCost es el importe retenido para esta tarea.
queued y running siguen en ejecución; succeeded, failed y expired son estados finales. Detén las consultas en cualquier estado final en vez de esperar solo el éxito.
curl -X POST https://api.spicyapi.ai/api/v1/jobs/createTask \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-8814-render-1" \
-d '{
"model": "alibaba/z-image-turbo/text-to-image",
"input": { "prompt": "A ceramic teapot on a linen cloth, soft window light" }
}'alibaba/z-image-turbo/text-to-image es un endpoint real de texto a imagen. Para otro modelo multimedia, utiliza su ID exacto y su esquema.
{
"code": 200,
"msg": "success",
"data": {
"taskId": "job_01k...",
"state": "queued"
},
"request_id": "req_01k..."
}Respuesta abreviada de ejemplo. Sustituye los ID y las URL ilustrativas por los valores de tu propia respuesta.
curl 'https://api.spicyapi.ai/api/v1/jobs/recordInfo?taskId=job_01k...' \
-H "Authorization: Bearer $SPICY_API_KEY"{
"code": 200,
"data": {
"taskId": "job_01k...",
"state": "succeeded",
"output": {
"assets": [{
"key": "tasks/.../output.png",
"url": "https://example.com/result.png?signature=FROM_RESPONSE",
"expiresAt": "2026-10-07T12:20:00Z",
"mime": "image/png"
}]
},
"settled": true
}
}Respuesta abreviada de ejemplo. Sustituye los ID y las URL ilustrativas por los valores de tu propia respuesta.
# Copy data.output.assets[0].url from the task response
curl -L -o result.png "URL_FROM_TASK_RESPONSE"Descarga data.output.assets[0].url directamente, sin tu clave API. Las URL suelen durar 20 minutos; vuelve a consultar la tarea para obtener una nueva y copia los archivos que quieras conservar a tu almacenamiento. Si el archivo está pending, consulta de nuevo hasta que la URL esté lista.
Directorio
Elige la herramienta que ya usas. Cada tarjeta abre su guía de configuración.
Seguridad del servidor
Estas tres reglas cubren la filtración de la clave, el cobro duplicado y la pérdida de tareas. Es el mínimo antes de salir a producción.
No expongas la clave en el navegador, paquete móvil, prompt, registro o salida del agente. Envía solicitudes desde un backend bajo tu control.
Envía un Idempotency-Key estable en cada creación de tarea. Si el resultado de red es incierto, reintenta el mismo trabajo con la misma clave para no generar dos tareas facturables.
Guarda el taskId y usa un webhook firmado o comprobaciones limitadas. Una tarea aceptada empieza y no se puede cancelar. Las tareas fallidas o vencidas normalmente no se cobran. Algunos modelos cobran los rechazos de contenido según lo indicado en su página; consulta esas condiciones antes de enviar.
Documentación API