Compatibilidad con OpenAI Videos
Llama a los modelos de video de PopNow con los formatos de solicitud y respuesta de la API OpenAI Videos.
Si tu código ya habla la API OpenAI Videos, puedes apuntarlo a PopNow y conservar casi todo. Los endpoints compatibles están en https://api.popnow.ai/v1 y comparten claves, límites, validación y créditos con la API nativa.
| Llamada estilo OpenAI | Qué hace |
|---|---|
POST /v1/videos | Crea una tarea de video |
GET /v1/videos/{id} | Lee su estado |
GET /v1/videos/{id}/content | Redirige (302) al archivo terminado |
GET /v1/models | Lista los modelos disponibles con el formato de lista de OpenAI |
Solo aparecen modelos de video, imagen y audio; los endpoints de chat y texto no forman parte de la API de PopNow.
Crea un video
curl -X POST "https://api.popnow.ai/v1/videos" \
-H "Authorization: Bearer $POPNOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"model": "alibaba/wan-3.0/image-to-video",
"prompt": "Waves roll in slowly, the camera drifts toward the lighthouse",
"input_reference": "https://media.popnow.ai/movie/lighthouse.webp",
"seconds": "5",
"size": "1280x720"
}'Cómo se traducen los campos a la entrada del modelo:
| Campo de OpenAI | Se convierte en |
|---|---|
model | Un ID de modelo de video de /v1/models |
prompt | prompt |
input_reference | image_url / image_urls (una URL HTTPS o una subida popnow://) |
seconds | duration_seconds |
size (ANCHOxALTO) | resolution y/o aspect_ratio, o width / height cuando el modelo usa píxeles |
Un campo que el modelo elegido no admite se rechaza con 400, nunca se descarta en silencio. Para ajustes que el formato de OpenAI no contempla, usa el createTask nativo.
Lee y descarga
Los estados se traducen así: queued → queued, running → in_progress, succeeded → completed, y failed / expired → failed con un objeto error. GET /v1/videos/{id}/content responde 302 hacia un enlace firmado de corta duración —haz que tu cliente siga las redirecciones—, 409 mientras el video se sigue generando y 404 si falló.
Los objetos devueltos nunca incluyen precios. Consulta el coste con el recordInfo nativo usando el mismo ID.
Errores
Los errores usan el formato de OpenAI { "error": { "message", "type", "param", "code" } } con el mismo estado HTTP que devolvería la API nativa. Un rechazo por contenido es un HTTP 400 con code: "content_rejected", para que lo distingas de un error de parámetro (invalid_request o unsupported_parameter, con param indicando el campo).
Lista de comprobación para producción
Qué revisar antes de que usuarios reales dependan de tu integración: claves, reintentos, webhooks, almacenamiento, costes y monitorización.
Agentes de IA y MCP
Usa la API de PopNow hoy mismo desde Claude, ChatGPT, Cursor y otros agentes, y qué añadirá el servidor MCP cuando abra.

