Совместимость с OpenAI Videos
Как вызывать видеомодели PopNow в форматах запросов и ответов OpenAI Videos API.
Если ваш код уже работает с OpenAI Videos API, его можно перенаправить на PopNow и сохранить почти всё. Совместимые эндпоинты находятся по адресу https://api.popnow.ai/v1 и используют те же ключи, лимиты, проверку и кредиты, что и нативный API.
| Вызов в стиле OpenAI | Что делает |
|---|---|
POST /v1/videos | Создаёт видеозадачу |
GET /v1/videos/{id} | Читает её состояние |
GET /v1/videos/{id}/content | Перенаправляет (302) на готовый файл |
GET /v1/models | Список доступных моделей в формате OpenAI |
В списке только модели видео, изображений и аудио; чат- и текстовых эндпоинтов в PopNow API нет.
Создание видео
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"
}'Как поля превращаются во входные данные модели:
| Поле OpenAI | Становится |
|---|---|
model | ID видеомодели из /v1/models |
prompt | prompt |
input_reference | image_url / image_urls (HTTPS-ссылка или загрузка popnow://) |
seconds | duration_seconds |
size (ШИРИНАxВЫСОТА) | resolution и/или aspect_ratio, либо width / height, если модель принимает пиксели |
Поле, которое выбранная модель не поддерживает, отклоняется с 400 и никогда не отбрасывается молча. Для настроек, которых нет в формате OpenAI, используйте нативный createTask.
Чтение и скачивание
Состояния соответствуют так: queued → queued, running → in_progress, succeeded → completed, а failed / expired → failed с объектом error. GET /v1/videos/{id}/content отвечает 302 на короткоживущую подписанную ссылку (пусть клиент следует редиректам), 409, пока видео ещё делается, и 404, если генерация не удалась.
Возвращаемые объекты не содержат цен. Стоимость смотрите в нативном recordInfo по тому же ID.
Ошибки
Ошибки приходят в формате OpenAI { "error": { "message", "type", "param", "code" } } с тем же HTTP-статусом, что вернул бы нативный API. Отказ по содержанию — это HTTP 400 с code: "content_rejected", поэтому его легко отличить от ошибки параметра (invalid_request или unsupported_parameter, а param указывает поле).
Чек-лист перед запуском
Что проверить, прежде чем на вашу интеграцию начнут полагаться реальные пользователи: ключи, повторы, вебхуки, хранение, расходы и мониторинг.
ИИ-агенты и MCP
Как уже сейчас пользоваться PopNow API из Claude, ChatGPT, Cursor и других агентов и что добавит MCP-сервер после запуска.

