CheaperGen
AlibabaTutoriel

Comment utiliser l’API Wan 3.0

Tutoriel pas à pas sur l’API Wan 3.0 avec Node.js, Python et cURL : envoyer une tâche texte en vidéo, l’interroger ou recevoir un webhook, puis télécharger le video. L’exemple ci-dessous coûte $0,38.

Points de terminaison
3
Texte en vidéo · Image en vidéo · Référence → vidéo
Exemple de requête
$0,38
Texte en vidéo
Langages
3
Node.js · Python · cURL
Générations échouées
$0
remboursées automatiquement
1

Obtenir une clé API

Créez un compte, ajoutez des crédits, puis créez une clé dans Tableau de bord → Clés API. Enregistrez-la sous CHEAPERGEN_API_KEY sur votre serveur. Chaque requête la transmet comme jeton Bearer.

Comment obtenir une clé API Wan 3.0
2

Choisissez un point de terminaison Wan 3.0

Chaque tâche a son propre point de terminaison. Tous acceptent un corps JSON et renvoient une génération que vous pouvez interroger.

Wan 3.0 points de terminaison API, entrées obligatoires et tarifs
TâchePoint de terminaisonObligatoireÀ partir de
Texte en vidéoalibaba/wan-3.0/text-to-videoprompt$0,0379 par seconde
Image en vidéoalibaba/wan-3.0/image-to-videoprompt, image_url$0,0379 par seconde
Référence → vidéoalibaba/wan-3.0/reference-to-videoprompt$0,0379 par seconde
3

Envoyer une tâche texte en vidéo

Ce programme envoie la tâche, interroge son état toutes les 3 secondes jusqu’à sa fin et affiche l’URL video. Remplacez le prompt et les paramètres par les vôtres.

const API = "https://cheapergen.com/api/v1";
const headers = {
  Authorization: `Bearer ${process.env.CHEAPERGEN_API_KEY}`,
  "Content-Type": "application/json",
};

// 1. Submit the job
let job = await fetch(`${API}/run/alibaba/wan-3.0/text-to-video`, {
  method: "POST",
  headers,
  body: JSON.stringify({
    "prompt": "Un vendeur de cuisine de rue à Bangkok fait sauter des nouilles dans un wok en flammes, flou bokeh du marché nocturne, caméra à l’épaule",
    "aspect_ratio": "16:9",
    "resolution": "720p",
    "duration": 5
  }),
}).then((r) => r.json());

// 2. Poll until it finishes (or pass webhook_url and skip polling)
while (job.status === "queued" || job.status === "running") {
  await new Promise((r) => setTimeout(r, 3000));
  job = await fetch(`${API}/generations/${job.id}`, { headers }).then((r) => r.json());
}

console.log(job.status === "succeeded" ? job.output.video.url : job.error);
4

Définissez les paramètres importants

Les paramètres de alibaba/wan-3.0/text-to-video, avec l’incidence de chacun sur le prix.

Paramètres Texte en vidéo de Wan 3.0 et effet sur le prix
ParamètreType · valeur par défautDescriptionEffet sur le prix
aspect_ratiostring (enum) · 16:9Format de l’image de sortie.
16:9 · 9:16 · 1:1 · 4:3 · 3:4
Oui
resolutionstring (enum) · 720pRésolution de sortie. Les résolutions supérieures coûtent plus cher par seconde.
480p · 720p · 1080p
480p: $0,0379 par seconde
720p: $0,0757 par seconde
1080p: $0,1513 par seconde
durationinteger · 5Durée du clip généré en secondes (2–30 s). La facturation se fait à la seconde.Facturé à la seconde
generate_audioboolean · trueGénérez un son synchronisé, une ambiance et des dialogues, sans frais supplémentaires.Aucun
negative_promptstringÉléments à éviter dans le résultat.Aucun
seedintegerRéutilisez le même seed et les mêmes paramètres pour reproduire un résultat. Laissez ce champ vide pour une valeur aléatoire.Aucun

Les autres points de terminaison Wan 3.0 suivent la même structure, avec leurs propres entrées :

POST /api/v1/run/alibaba/wan-3.0/image-to-video

{
  "prompt": "Le vent fait doucement bouger les rideaux ; la caméra recule lentement pour dévoiler la pièce",
  "image_url": "https://cdn.cheapergen.com/samples/portrait.jpg",
  "resolution": "720p",
  "duration": 5
}

POST /api/v1/run/alibaba/wan-3.0/reference-to-video

{
  "prompt": "La femme de @Image1 traverse le café de @Image2 et commande un café, en bougeant comme dans @Video1",
  "reference_image_urls": [
    "https://cdn.cheapergen.com/samples/reference-1.jpg",
    "https://cdn.cheapergen.com/samples/reference-2.jpg"
  ],
  "reference_video_urls": [
    "https://cdn.cheapergen.com/samples/reference-1.mp4"
  ],
  "aspect_ratio": "16:9",
  "resolution": "720p",
  "duration": 5
}
5

Récupérer le résultat

Une tâche passe de queued à running, puis à succeeded, failed ou canceled. Interrogez GET /api/v1/generations/{id}, ou indiquez webhook_url pour que nous vous envoyions le résultat par POST. Téléchargez le résultat et stockez-le vous-même.

200 — terminée
{
  "id": "gen_8c2QmX1nq0k4",
  "object": "generation",
  "model": "alibaba/wan-3.0",
  "endpoint": "alibaba/wan-3.0/text-to-video",
  "mode": "text-to-video",
  "status": "succeeded",
  "input": {
    "prompt": "Un vendeur de cuisine de rue à Bangkok fait sauter des nouilles dans un wok en flammes, flou bokeh du marché nocturne, caméra à l’épaule",
    "aspect_ratio": "16:9",
    "resolution": "720p",
    "duration": 5
  },
  "output": {
    "video": {
      "url": "https://cdn.cheapergen.com/outputs/gen_8c2Q.mp4",
      "content_type": "video/mp4",
      "duration": 5,
      "width": 1280,
      "height": 720
    }
  },
  "error": null,
  "cost": {
    "amount_usd": 0.2255,
    "currency": "usd",
    "estimated": false,
    "official_usd": 0.264,
    "list_price_source": "official",
    "list_price_label": "Official",
    "saved_usd": 0.0385
  },
  "source": "api",
  "created_at": "2026-10-15T09:21:04Z",
  "started_at": "2026-10-15T09:21:06Z",
  "completed_at": "2026-10-15T09:22:31Z"
}
Vérifier les signatures des webhooks
6

Calculer le prix avant le lancement

Le point de terminaison de devis est gratuit et ne nécessite pas de clé. Il renvoie le prix, le prix officiel et votre remise pour exactement les paramètres que vous envoyez.

curl -X POST https://cheapergen.com/api/v1/quote/alibaba/wan-3.0/text-to-video \
  -H "Content-Type: application/json" \
  -d '{"prompt":"Un vendeur de cuisine de rue à Bangkok fait sauter des nouilles dans un wok en flammes, flou bokeh du marché nocturne, caméra à l’épaule","aspect_ratio":"16:9","resolution":"720p","duration":5}'
Erreurs de l’API et marche à suivre
ÉtatCodeSignification
400invalid_requestUn paramètre manque ou dépasse les limites autorisées ; le message indique lequel.
401unauthorizedClé API manquante, mal formée ou révoquée.
402insufficient_balanceCrédits insuffisants pour le prix indiqué ; rechargez votre solde ou activez la recharge automatique.
429rate_limitedTrop de requêtes ou de générations en cours ; attendez un peu avant de réessayer.
502upstream_errorUne erreur s’est produite pendant la génération ; le montant réservé est remboursé et vous pouvez réessayer.
503model_unavailableAucune capacité n’est disponible pour le moment ; réessayez plus tard ou choisissez un autre modèle.
Documentation complète de l’API Wan 3.0

FAQ

Questions sur l’API Wan 3.0

Non. L’API utilise HTTPS et JSON. Les exemples Node.js (fetch) et Python (requests) de cette page sont des programmes complets. Toute langue capable d’envoyer une requête HTTP convient.

Oui. Ajoutez "webhook_url" au corps de la requête ; nous envoyons la génération terminée par POST à cette URL, avec une signature dans l’en-tête CheaperGen-Signature (HMAC-SHA256 de l’horodatage et du corps brut). Vous pouvez aussi interroger GET /api/v1/generations/{id}.

Transmettez des URL publiques dans "image_url", "reference_image_urls", "reference_video_urls", "reference_audio_urls". Les fichiers sans URL publique peuvent d’abord être téléversés avec POST /api/v1/uploads ; l’API renvoie une URL à utiliser dans la requête.

Texte en vidéo est proposé à partir de $0,0379 par seconde ; la requête d’exemple sur cette page coûte $0,38, 24 % sous le prix officiel. Les générations échouées sont automatiquement remboursées.