Génération vidéo Minimax

Génération vidéo avancée avec compréhension intelligente des scènes et mouvements naturels. Modèles Hailuo et HailuoI2V disponibles pour une qualité supérieure.

✓ Génération HD 1280x720

✓ Vidéos de 5 secondes

✓ Compréhension intelligente des scènes

✓ Support image-en-vidéo

Authentification

Pour accéder à Minimax/Hailuo via l'API Doitong, utilisez votre clé API Doitong. Incluez-la dans la mutation GraphQL ou dans les en-têtes de l'API REST.

Important: Gardez votre clé API Doitong en sécurité et ne l'exposez jamais dans le code côté client. Effectuez toujours vos appels API à partir de votre serveur backend.
// GraphQL Header
{
  "Authorization": "Bearer YOUR_API_KEY"
}

// REST Header
"X-API-Key": "YOUR_API_KEY"

Démarrage rapide

Commencez à utiliser Minimax / Hailuo-02 API en quelques minutes seulement. Suivez ces étapes simples pour générer votre premier text to video.

Étape 1 : Obtenez votre clé API

Inscrivez-vous à un compte Doitong et accédez à votre tableau de bord pour générer une clé API.

Étape 2 : Effectuez votre première requête

Utilisez l'un des exemples de code ci-dessous pour effectuer votre premier appel API.

curl -X POST https://api.doitong.com/graphql \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Idempotency-Key: unique-request-id-123" \
  -d '{
    "query": "mutation Generate($input: GenerateInput!) { generate(input: $input) { id status type provider url metadata creditCost } }",
    "variables": {
      "input": {
        "type": "VIDEO",
        "provider": "minimax",
        "input": {
          "text": "A serene landscape with mountains and a lake at sunset"
        },
        "options": {
          "duration": 5,
          "aspectRatio": "16:9"
        }
      }
    }
  }'
const response = await fetch('https://api.doitong.com/graphql', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_API_KEY',
    'Idempotency-Key': 'unique-request-id-123'
  },
  body: JSON.stringify({
    query: `
      mutation Generate($input: GenerateInput!) {
        generate(input: $input) {
          id
          status
          type
          provider
          url
          metadata
          creditCost
        }
      }
    `,
    variables: {
      input: {
        type: 'VIDEO',
        provider: 'minimax',
        input: {
          text: 'A serene landscape with mountains and a lake at sunset'
        },
        options: {
          duration: 5,
          aspectRatio: '16:9'
        }
      }
    }
  })
});

const data = await response.json();
console.log('Result:', data.data.generate);
import requests
import json

url = "https://api.doitong.com/graphql"
headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer YOUR_API_KEY"
}

query = """
mutation Generate($input: GenerateInput!) {
  generate(input: $input) {
    id
    status
    type
    provider
    url
    metadata
    creditCost
  }
}
"""

variables = {
    "input": {
        "type": "VIDEO",
        "provider": "minimax",
        "input": {
            "text": "A serene landscape with mountains and a lake at sunset"
        },
        "options": {
            "duration": 5,
            "aspectRatio": "16:9"
        }
    }
}

response = requests.post(url, json={
    "query": query,
    "variables": variables
}, headers=headers)

data = response.json()
print("Result:", data["data"]["generate"])
mutation Generate($input: GenerateInput!) {
  generate(input: $input) {
    id
    status
    type
    provider
    url
    metadata
    creditCost
    createdAt
  }
}

# Variables
{
  "input": {
    "type": "VIDEO",
    "provider": "minimax",
    "input": {
      "text": "A serene landscape with mountains and a lake at sunset"
    },
    "options": {
      "duration": 5,
      "aspectRatio": "16:9",
      "version": "hailuo-02",
      "quality": "high"
    }
  }
}

Tarification

Minimax / Hailuo-02 API utilise un modèle de tarification basé sur des crédits. Les crédits sont consommés selon la complexité et la durée du contenu généré.

Fonctionnalité Crédits Description
Mode Standard 100-200 Crédits Vidéo de 5 à 10 secondes en qualité standard
Mode Pro 300-500 Crédits Vidéo de 5 à 10 secondes en qualité professionnelle

Points de terminaison de l'API

Minimax / Hailuo-02 API est accessible via notre point de terminaison GraphQL unifié.

Point de terminaison GraphQL

POST https://api.doitong.com/graphql

Point de terminaison REST

POST https://api.doitong.com/v1/text_to_video

Paramètres

Paramètres disponibles pour les requêtes Minimax / Hailuo-02 API :

Paramètre Type Requis Description
service Chaîne Yes Identifiant du service: "minimax"
prompt Chaîne Yes Description textuelle de ce qu'il faut générer
duration Entier No Durée de la vidéo en secondes (par défaut : 5)
aspectRatio Chaîne No Format d'image : "16:9", "9:16", "1:1" (par défaut : "16:9")
version Chaîne No Model version: "hailuo-02"
webhookUrl Chaîne No URL pour recevoir les notifications de fin de traitement

Format de la réponse

Toutes les réponses de l'API suivent un format cohérent :

Réponse de succès

{
  "data": {
    "generatevideo": {
      "id": "abc123xyz",
      "status": "processing",
      "url": null,
      "webhookUrl": "https://your-webhook.com/callback",
      "createdAt": "2024-01-01T00:00:00Z"
    }
  }
}

Réponse terminée

{
  "data": {
    "generatevideo": {
      "id": "abc123xyz",
      "status": "completed",
      "url": "https://cdn.doitong.com/outputs/abc123xyz.mp4",
      "duration": 5,
      "createdAt": "2024-01-01T00:00:00Z"
    }
  }
}

Gestion des erreurs

L'API utilise des codes d'état HTTP standard et renvoie des messages d'erreur détaillés.

Codes d'erreur courants

Code d'état Type d'erreur Description
400 Bad Request Invalid parameters or malformed request
401 Unauthorized Missing or invalid API key
402 Payment Required Insufficient credits
429 Too Many Requests Rate limit exceeded
500 Internal Server Error Server error, please retry

Format de réponse d'erreur

{
  "errors": [
    {
      "message": "Insufficient credits for this operation",
      "extensions": {
        "code": "INSUFFICIENT_CREDITS",
        "creditsRequired": 100,
        "creditsAvailable": 50
      }
    }
  ]
}

Webhooks

Recevez des notifications en temps réel lorsque la génération de votre text to video est terminée.

Configuration des webhooks

Include a <code>webhookUrl</code> parameter in your request to receive a POST notification when processing is complete.

Charge utile (payload) du webhook

{
  "id": "abc123xyz",
  "status": "completed",
  "url": "https://cdn.doitong.com/outputs/abc123xyz.mp4",
  "service": "minimax",
  "createdAt": "2024-01-01T00:00:00Z",
  "completedAt": "2024-01-01T00:01:00Z",
  "metadata": {
    "duration": 5,
    "width": 1920,
    "height": 1080
  }
}

Sécurité des webhooks

Toutes les requêtes de webhook incluent un en-tête de signature pour vérification :

X-Doitong-Signature: sha256=abc123...

Limites de débit

Pour garantir une utilisation équitable et la stabilité du système, les limites de débit suivantes s'appliquent :

Forfait Requêtes/minute Tâches simultanées Limite quotidienne
Gratuit 10 1 100
Débutant 30 3 1,000
Pro 60 10 10,000
Entreprise Personnalisé Personnalisé Illimité
En-têtes de limite de débit: Consultez les en-têtes de réponse pour connaître l'état actuel de vos limites :
  • X-RateLimit-Limit: Maximum requests per window
  • X-RateLimit-Remaining: Requests remaining
  • X-RateLimit-Reset: Window reset timestamp

Bonnes pratiques

1. Optimisez vos instructions (prompts)

Rédigez des instructions claires et descriptives pour obtenir les meilleurs résultats :

  • Be specific about visual elements, style, and mood
  • Include details about lighting, camera angles, and composition
  • Avoid contradictory or impossible requests

2. Gérez le traitement asynchrone

La génération est asynchrone. Implémentez un système de sondage (polling) ou des webhooks appropriés :

// Polling example
async function pollStatus(jobId) {
  let status = 'processing';
  while (status === 'processing') {
    await sleep(2000); // Wait 2 seconds
    const result = await checkJobStatus(jobId);
    status = result.status;
  }
  return result;
}

3. Récupération après erreur

Implémentez une logique de tentative (retry) avec un repli exponentiel :

async function retryWithBackoff(fn, maxRetries = 3) {
  for (let i = 0; i < maxRetries; i++) {
    try {
      return await fn();
    } catch (error) {
      if (i === maxRetries - 1) throw error;
      await sleep(Math.pow(2, i) * 1000);
    }
  }
}

4. Surveillez l'utilisation des crédits

Suivez votre consommation de crédits pour éviter toute interruption :

  • Check credit balance before large batch operations
  • Set up alerts for low credit thresholds
  • Implement credit-aware request queuing

Prêt à commencer ?

Rejoignez des milliers de développeurs qui utilisent Minimax / Hailuo-02 API pour créer du contenu incroyable

Obtenir une clé API Voir les tarifs