Skip to main content
POST
Cette page concerne les modèles officiels grok-imagine-video et grok-imagine-video-1.5. Ils sont distincts de grok-imagine-1.5-video-ext ; ne mélangez pas noms et paramètres.
N’exposez jamais la clé API dans le navigateur, les variables publiques, LocalStorage, une URL ou les logs. Appelez APIMart via votre backend ou BFF.

Vue d’ensemble

Tous les modes utilisent le même endpoint asynchrone :
Après l’envoi, conservez data[0].task_id, puis interrogez :
N’envoyez pas X-APIMart-Response-Version : il active une réponse HTTP 202. Cette page utilise l’ancien format asynchrone HTTP 200.

Capacités

Le contrat public ne fixe pas de maximum d’images. Conservez un tableau non vide d’URL valides dans l’ordre ; ne réutilisez pas les limites des modèles d’image.

En-têtes

string
requis
Bearer <APIMART_API_KEY>
string
requis
Utilisez toujours application/json.
string
application/json
string
Idempotency-Key est facultatif et fortement recommandé pour les requêtes payantes. Il accepte 1 à 191 caractères ASCII visibles ; UUID recommandé. Un retry réseau réutilise la clé et le corps d’origine. Ne changez pas de clé si le résultat est incertain.Utilisez une nouvelle clé par opération logique. Une relance doit reprendre la clé et le corps d’origine.

Paramètres

Champs communs

string
requis
Nom officiel ; l’édition n’accepte que le modèle de base
  • grok-imagine-video
  • grok-imagine-video-1.5
string
requis
Instruction non vide, 8000 caractères Unicode maximumArray.from(prompt).length
boolean
défaut:false
Indique si le contenu doit être modéré avant l’envoi de la tâche vidéo.
  • true: Utilise omni-moderation-latest pour vérifier le prompt et les images d’entrée
  • false ou omis: Ne lance aucune modération et n’ajoute ni coût ni latence de contrôle (défaut)

Champs de génération

integer
défaut:8
Génération uniquement ; entier 1–15, défaut 8
string
défaut:"480p"
Base : 480p/720p ; 1.5 : 480p/720p/1080p ; défaut 480p
  • grok-imagine-video: 480p, 720p
  • grok-imagine-video-1.5: 480p, 720p, 1080p
string
défaut:"auto"
Génération uniquement ; auto, 1:1, 16:9, 9:16, 4:3, 3:4, 3:2 ou 2:3
  • auto
  • 1:1, 16:9, 9:16
  • 4:3, 3:4, 3:2, 2:3
string[]
Tableau facultatif ; chaque élément est une URL HTTPS publique ; omettre s’il est vide
  • Chaque élément doit être une URL HTTPS publique ; les URL relatives, Data URL et Base64 brut ne sont pas acceptés.
  • N’envoyez pas d’alias comme image, images ou input_reference.
  • L’ordre est conservé ; les URL dupliquées occupent plusieurs entrées et peuvent être facturées plusieurs fois.

Champs d’édition vidéo

object
Vidéo source {url} en HTTPS public ; modèle de base uniquement
L’édition exige model, prompt et video, avec nsfw_check en option. N’envoyez pas duration, resolution, aspect_ratio ou image_urls ; la plateforme détecte la durée.

Types de requête TypeScript

Utilisez une union discriminée pour ne pas envoyer les champs de génération à l’édition.

Exemples

Tâches asynchrones

Création réussie

Une création réussie renvoie HTTP 200. Enregistrez data[0].task_id ; l’envoi ne signifie pas que la vidéo est terminée. Un ID de tâche signifie envoyée, pas terminée.

Interroger la tâche

Interrogez GET /v1/tasks/{task_id} toutes les 3–5 secondes. Après rechargement, reprenez avec l’ID enregistré.

Réponse terminée

result.videos[0].url est un tableau de chaînes, pas une chaîne unique. Validez chaque valeur comme URL HTTPS. Une validation à l’exécution est recommandée :
Utilisez expires_at pour l’expiration. Ne figez pas de durée ; invitez au téléchargement ou à la conservation.

Réponse en échec

La consultation peut renvoyer HTTP 200 avec data.status=failed. Décidez via data.status ; une tâche échouée a cost=0.

Catalogue de prix

Lisez GET /api/pricing/models/all et cherchez l’id dans data.models.video. Les prix sont estimés ; le montant final est data.cost.

Prix de la vidéo produite

  • Les clés tarifaires sont 480P/720P/1080P, les valeurs de requête en minuscules ; normalisez la casse.
  • default est une donnée de compatibilité, pas une résolution sélectionnable.
  • Utilisez directement after_discount sans appliquer une seconde remise.

Prix des médias d’entrée

Le prix vidéo est un objet scalaire. N’exigez pas items, billing_mode ou max_billable_seconds. La version 1.5 n’a pas de prix vidéo entrant.

Formules d’estimation

Les tarifs propres à l’utilisateur et l’arrondi peuvent varier. Le montant final est toujours data.cost.

Règles frontend

Changement de modèle

  • Base affiche 480p/720p ; 1.5 ajoute 1080p.
  • Passer de 1.5 1080p à Base revient à 480p.
  • L’édition fixe grok-imagine-video.

Changement de mode

nsfw_check est facultatif dans tous les modes. Envoyez true si la modération est activée ; sinon omettez-le ou envoyez false. Désactivez le bouton si l’une de ces conditions est vraie :
  • Le mode texte omet image_urls et video.
  • Le mode référence envoie image_urls et omet video.
  • L’édition efface les champs de génération.
  • Désactiver si prompt, durée, résolution ou URL est invalide, pendant l’upload ou en cas de doublon.
  • Prompt ≤8000 Unicode et durée entière 1–15.
  • URL HTTPS publiques uniquement ; omettre image_urls vide.

Erreurs courantes

Liste de contrôle

  • Clé API uniquement dans backend ou BFF.
  • Ne pas mélanger les modèles officiels avec grok-imagine-1.5-video-ext.
  • Prompt ≤8000 Unicode et durée entière 1–15.
  • URL HTTPS publiques uniquement ; omettre image_urls vide.
  • Pour l’édition, envoyez uniquement model/prompt/video avec nsfw_check facultatif et utilisez le modèle de base.
  • Lire data[0].task_id et l’état final via data.status.
  • Lire result.videos[].url[] et respecter expires_at.
  • Afficher le catalogue et utiliser le data.cost final.