Ir al contenido
Toda la documentación

Referencia

POST /v1/videos

Genera un clip con sonido desde un prompt de texto, en el formato de OpenAI: los métodos videos del SDK funcionan cambiando solo la URL base. Encólalo, consúltalo y descárgalo una vez; después se borra.

Revisado el 6 de noviembre de 2026

Genera un clip

import os
import time
from openai import OpenAI

client = OpenAI(
    base_url="https://nokeep.ai/v1",
    api_key=os.environ["NOKEEP_API_KEY"],
)

clip = client.videos.create(
    model="minimax-h3-max-turbo",
    prompt="Waves breaking on a rocky coast at dusk",
    seconds="5",
    size="1280x720",
)

while clip.status in ("queued", "in_progress"):
    time.sleep(5)
    clip = client.videos.retrieve(clip.id)

if clip.status == "completed":
    client.videos.download_content(clip.id).write_to_file("clip.mp4")

Modelos

ModeloIdeal para480p por segundo768p por segundo1080p por segundo
minimax-h3-max-turboRápido, con sonido. El que conviene probar primero.$0.045$0.07$0.14
minimax-h3-maxMás pasos que Turbo para más detalle fino, con sonido.$0.09$0.14$0.28

Pagas por los segundos que pides. Ambos modelos hacen clips de 5 a 15 segundos con sonido.

Solicitud

CampoRecibeQué hace
modelObligatorioUno de los ids de modelo de arriba.
promptObligatorio, hasta 10,000 caracteresLo que se filma, enviado al modelo tal cual. Si supera el límite se rechaza, nunca se corta.
secondsDe 5 a 15La duración del clip, como número o como texto. El valor por defecto es 5. El 4 de OpenAI se rechaza; 8 y 12 funcionan.
sizeWIDTHxHEIGHTElige la resolución y la forma más cercanas. 1280x720 pasa a 768p en 16:9, y eso es lo que pagas.
resolution480p, 768p o 1080pDefine el precio y gana sobre size. El valor por defecto es 768p.
aspect_ratio16:9, 21:9, 4:3, 1:1, 3:4, 9:16Gana sobre size. El valor por defecto es 16:9.

Envía JSON o el formulario multipart que usan los SDK de OpenAI. Cualquier otro campo, como seed, se descarta y se nombra en x-nokeep-ignored. Un campo que lleva una imagen o un clip, como input_reference, se rechaza con 400 unsupported_input: estos modelos trabajan solo con texto. El SDK de Python de OpenAI muestra un aviso de obsolescencia en sus métodos videos, sobre el servicio de video de OpenAI. No afecta a las llamadas a nosotros, y un verificador de tipos puede marcar el id del modelo.

Las rutas del clip

RutaQué hace
POST /v1/videosEncola un clip y reserva su precio.
GET /v1/videos/{id}Indica en qué etapa está. Consúltalo cada pocos segundos.
GET /v1/videos/{id}/contentEl mp4. Funciona una vez; después el clip se borra del host del modelo. Si la descarga se corta, vuelve a pedirla.
DELETE /v1/videos/{id}Borra un clip terminado sin descargarlo. Un clip que aún se está renderizando responde 409 video_not_ready.
GET /v1/videosLos clips recientes de la cuenta.

El objeto clip

JSON
{
  "id": "video_8f3a…",
  "object": "video",
  "model": "minimax-h3-max-turbo",
  "status": "completed",
  "progress": 100,
  "created_at": 1793960000,
  "completed_at": 1793960030,
  "expires_at": 1794042800,
  "seconds": "5",
  "size": "1366x768",
  "resolution": "768p",
  "aspect_ratio": "16:9",
  "error": null,
  "downloaded": false,
  "expired": false,
  "usage": {
    "nokeep_credits": 350
  }
}
  • status es queued, in_progress, completed o failed.
  • progress es 0 hasta que el clip termina, y luego 100. El modelo no informa nada en medio.
  • size se calcula a partir de la resolución y la forma, así que el archivo puede diferir en unos píxeles.

Lo que pagas

  • El precio completo del clip se reserva al encolarlo, contra tus créditos comprados y el tope diario de la clave.
  • Se cobra cuando el clip termina, lo descargues o no.
  • Un clip que falla no cuesta nada, y su estado lo indica.

Dónde se queda el clip

Un clip terminado espera en el host del modelo, en su nivel privado, hasta 23 horas. Se borra allí después de su única descarga, o cuando lo borras. Nosotros nunca guardamos el archivo, y pasado ese tiempo responde 410 video_gone. Nuestra fila propia sobre un clip guarda su id, clave, modelo, duración, resolución, forma, créditos y horarios, y nunca el prompt. Se borra a las 48 horas.

Contenido, límites y errores

Se mantienen cuatro límites estrictos: contenido sexual con menores, contenido sexual de personas reales, daño masivo y apuntar contra una persona real. Un prompt que cruza uno recibe 422 hard_limit y no cuesta nada. El host de un modelo también puede rechazar una solicitud, lo que es 422 content_refused, también gratis. Ver Límites estrictos.

Una clave puede encolar 20 clips por minuto, dentro de sus 120 solicitudes en total, y tener 10 renderizándose a la vez. Pasado eso, 429 rate_limited. La página de errores lista cada código.

Para probar tu código sin gastar nada, envía sk-nokeep-test como clave. Ejecuta todas las comprobaciones, informa el clip como terminado de inmediato como video_test, y su archivo está vacío.