Référence
POST /v1/videos
Créez un clip avec son à partir d’un prompt texte, au format OpenAI : les méthodes videos du SDK fonctionnent en changeant seulement l’URL de base. Mettez-le en file, suivez-le, téléchargez-le une fois, et il est supprimé.
Vérifié le 6 novembre 2026
Créer 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")Modèles
| Modèle | Pour | 480p par seconde | 768p par seconde | 1080p par seconde |
|---|---|---|---|---|
| minimax-h3-max-turbo | Rapide, avec son. Celui par lequel commencer. | 0,045 $ | 0,07 $ | 0,14 $ |
| minimax-h3-max | Plus d’étapes que Turbo pour un détail plus fin, avec son. | 0,09 $ | 0,14 $ | 0,28 $ |
Vous payez les secondes demandées. Les deux modèles font des clips de 5 à 15 secondes avec son.
Requête
| Champ | Valeur attendue | Ce qu’il fait |
|---|---|---|
model | Obligatoire | L’un des identifiants de modèle ci-dessus. |
prompt | Obligatoire, jusqu’à 10 000 caractères | Ce qu’il faut filmer, envoyé au modèle tel quel. Au-delà de la limite, la requête est refusée, jamais tronquée. |
seconds | 5 à 15 | La durée du clip, en nombre ou en chaîne. La valeur par défaut est 5. Le 4 d’OpenAI est refusé ; 8 et 12 fonctionnent. |
size | WIDTHxHEIGHT | Choisit la résolution et le format les plus proches. 1280x720 devient 768p en 16:9, et c’est ce que vous payez. |
resolution | 480p, 768p ou 1080p | Fixe le prix et l’emporte sur size. La valeur par défaut est 768p. |
aspect_ratio | 16:9, 21:9, 4:3, 1:1, 3:4, 9:16 | L’emporte sur size. La valeur par défaut est 16:9. |
Envoyez du JSON ou le formulaire multipart qu’utilisent les SDK d’OpenAI. Tout autre champ, comme seed, est ignoré et nommé dans x-nokeep-ignored. Un champ qui transporte une image ou un clip, comme input_reference, est refusé avec 400 unsupported_input : ces modèles travaillent à partir de texte seulement. Le SDK Python d’OpenAI affiche un avertissement d’obsolescence sur ses méthodes videos, à propos du service vidéo d’OpenAI. Cela n’affecte pas les appels vers nous, et un vérificateur de types peut signaler l’id du modèle.
Les routes du clip
| Route | Ce qu’elle fait |
|---|---|
POST /v1/videos | Met un clip en file et réserve son prix. |
GET /v1/videos/{id} | Indique où il en est. Vérifiez toutes les quelques secondes. |
GET /v1/videos/{id}/content | Le fichier mp4. Il ne fonctionne qu’une fois, puis le clip est supprimé de l’hébergeur du modèle. Si le téléchargement est coupé, redemandez-le. |
DELETE /v1/videos/{id} | Supprime un clip terminé sans le télécharger. Un clip encore en rendu répond 409 video_not_ready. |
GET /v1/videos | Les clips récents du compte. |
L’objet clip
{
"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
}
}statusvautqueued,in_progress,completedoufailed.progressvaut 0 jusqu’à la fin du clip, puis 100. Le modèle n’indique rien entre les deux.sizeest calculé à partir de la résolution et du format, si bien que le fichier peut différer de quelques pixels.
Ce que vous payez
- Le prix total du clip est réservé à sa mise en file, sur vos crédits achetés et dans le plafond quotidien de la clé.
- Il est débité à la fin du clip, que vous le téléchargiez ou non.
- Un clip en échec ne coûte rien, et son statut l’indique.
Où le clip reste
Un clip terminé attend chez l’hébergeur du modèle, sur son niveau privé, jusqu’à 23 heures. Il y est supprimé après son unique téléchargement, ou quand vous le supprimez. Nous ne gardons jamais le fichier, et passé ce délai, la réponse est 410 video_gone. Notre propre ligne sur un clip contient son identifiant, la clé, le modèle, la durée, la résolution, le format, les crédits et les heures, jamais le prompt. Elle est supprimée après 48 heures.
Contenu, limites et erreurs
Quatre limites strictes restent : contenu sexuel impliquant des mineurs, contenu sexuel de personnes réelles, dommages de masse et viser une personne réelle. Un prompt qui en franchit une reçoit 422 hard_limit et ne coûte rien. L’hébergeur d’un modèle peut aussi refuser une requête : c’est 422 content_refused, également gratuit. Voir Limites strictes.
Une clé peut mettre 20 clips par minute en file, dans sa limite de 120 requêtes au total, et en avoir 10 en rendu à la fois. Au-delà, c’est 429 rate_limited. La page des erreurs liste tous les codes.
Pour tester votre code sans rien dépenser, envoyez sk-nokeep-test comme clé. Elle exécute toutes les vérifications, signale le clip terminé immédiatement comme video_test, et son fichier est vide.