alibaba/wan-3.0-prime/reference-to-videoÀ partir de 46 crédits pour un clip de 5 secondes· Références vers vidéo

Le reference-to-video Wan 3.0 Prime garde un visage, une tenue, un lieu ou une voix cohérents sur un clip avec jusqu’à 10 images, 5 vidéos et 5 fichiers audio. Il renvoie 2 à 30 secondes de 480p à 1080p, références vidéo et audio limitées à 15 secondes.

Appelez-le avec le nom de modèle alibaba/wan-3.0-prime/reference-to-video sur POST /jobs/createTask, à partir de 46 crédits pour un clip de 5 secondes (0,46 $US). Les nouveaux comptes reçoivent 30 crédits gratuits pour l’essayer d’abord dans le Playground.

  • Créer une vidéo
  • Image vers vidéo
  • Références vers vidéo
  • Prolonger une vidéo
  • Jusqu’à 1080p
  • Clips de 2 à 30 s
  • Son inclus
  • Image de début et de fin
  • Jusqu’à 10 images de référence
  • 5 formats d’image
Nom du modèlealibaba/wan-3.0-prime/reference-to-video
EndpointPOST https://api.popnow.ai/api/v1/jobs/createTask
# 1. Create the task. Keep the Idempotency-Key if you retry after a network error.
export IDEMPOTENCY_KEY="$(uuidgen)"
curl -X POST https://api.popnow.ai/api/v1/jobs/createTask \
  -H "Authorization: Bearer $POPNOW_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $IDEMPOTENCY_KEY" \
  -d '{
  "model": "alibaba/wan-3.0-prime/reference-to-video",
  "input": {
    "prompt": "A slow aerial shot drifting over a misty pine forest at sunrise",
    "reference_image_urls": [
      "https://media.popnow.ai/influencer/examples/ava.webp"
    ],
    "aspect_ratio": "16:9",
    "resolution": "720p",
    "duration_seconds": 5
  }
}'

# 2. Copy data.taskId from the response, then poll until state is succeeded, failed, canceled or expired.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.popnow.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
  -H "Authorization: Bearer $POPNOW_API_KEY"

L’input est construit à partir du schéma ci-dessous : il passe la validation tel quel. Remplacez le prompt et les liens par les vôtres.

Prix

OptionCrédits par seconde≈ USD
resolution 480p9,180,092 $US
resolution 720p18,90,19 $US
resolution 1080p37,80,38 $US

1 crédit = 0,01 $ · Toutes les options et leur prix : GET /models/alibaba/wan-3.0-prime/reference-to-video

Chaque tâche est arrondie au crédit entier supérieur : une exécution au palier le plus bas coûte donc 46 crédits pour un clip de 5 secondes (0,46 $US).

Limites

Durée du clip
2–30 s
Résolutions
480p · 720p · 1080p
Formats d’image
16:9 · 9:16 · 1:1 · 4:3 · 3:4 · adaptive
Audio de référence
5
Images de référence
10
Vidéos de référence
5
Durée maximale du clip d’entrée
15 s

Paramètres

Ces champs viennent du schéma avec lequel nous vérifions chaque requête. Les champs qui n’y figurent pas sont refusés.

Certains champs dépendent les uns des autres (par exemple, au moins une référence). Le schéma brut en bas de page donne les règles exactes.

  • promptstringFacultatif

    Describe the subject, action, camera, light, pacing, and boundaries for the shot.

    Plage
    1 – … chars
  • reference_image_urlsarray<string>Parfois obligatoire

    Des images des personnes, tenues ou lieux que le résultat doit conserver.

    Plage
    1 – 10 items · image/jpeg, image/png, image/webp, image/gif
  • reference_video_urlsarray<string>Parfois obligatoireModifie le prix

    Des clips dont le mouvement, la caméra ou le style doivent être suivis.

    Plage
    1 – 5 items · video/mp4, video/webm, video/quicktime
  • reference_audio_urlsarray<string>Parfois obligatoire

    Un son à reproduire : une voix, une musique ou un rythme.

    Plage
    1 – 5 items · audio/mpeg, audio/wav
  • reference_file_urlstringParfois obligatoire

    One reference document (PDF, DOCX, TXT, MD and similar) that the model reads for characters, wardrobe, setting and action.

    Plage
    application/pdf, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document, application/vnd.ms-excel +8
  • reference_link_urlstringParfois obligatoire

    One public web page the model reads for reference. It must open without a login.

  • aspect_ratiostringFacultatif

    La forme du cadre : large, carrée ou verticale.

    Par défaut
    "16:9"
    Valeurs acceptées
    "16:9""9:16""1:1""4:3""3:4""adaptive"
  • enable_thinkingbooleanFacultatif

    Let the model reason about the brief and the reference material before generating. Helps with complex references; slower. Switches on by itself when a reference file or link is given.

    Par défaut
    false
  • resolutionstringFacultatifModifie le prix

    Taille de sortie. Plus c’est grand, plus c’est net et plus c’est cher.

    Par défaut
    "720p"
    Valeurs acceptées
    "480p""720p""1080p"
  • duration_secondsintegerFacultatifModifie le prix

    La durée du clip. Facturée à la seconde.

    Par défaut
    5
    Valeurs acceptées
    -123456789101112131415161718192021222324252627282930
  • generate_audiobooleanFacultatif

    Ajoute un son assorti à l’image : voix, ambiance et effets.

    Par défaut
    true
  • enable_prompt_expansionbooleanFacultatif

    Laisse le modèle enrichir un prompt court.

  • seedintegerFacultatif

    Le même nombre donne un résultat reproductible.

    Plage
    0 – 2147483647
Schéma JSON brut
{
  "additionalProperties": false,
  "anyOf": [
    {
      "required": [
        "reference_image_urls"
      ]
    },
    {
      "required": [
        "reference_video_urls"
      ]
    },
    {
      "required": [
        "reference_audio_urls"
      ]
    },
    {
      "required": [
        "reference_file_url"
      ]
    },
    {
      "required": [
        "reference_link_url"
      ]
    }
  ],
  "properties": {
    "aspect_ratio": {
      "default": "16:9",
      "description": "Output aspect ratio; adaptive follows the input media and the intent.",
      "enum": [
        "16:9",
        "9:16",
        "1:1",
        "4:3",
        "3:4",
        "adaptive"
      ],
      "type": "string"
    },
    "duration_seconds": {
      "default": 5,
      "description": "Requested output length in seconds. Pass -1 for smart duration: the model picks the length from the prompt and any input media instead of a fixed number. With reference videos, their total length plus the output length must not exceed 30 seconds, and the reference video seconds are billed together with the output seconds.",
      "enum": [
        -1,
        2,
        3,
        4,
        5,
        6,
        7,
        8,
        9,
        10,
        11,
        12,
        13,
        14,
        15,
        16,
        17,
        18,
        19,
        20,
        21,
        22,
        23,
        24,
        25,
        26,
        27,
        28,
        29,
        30
      ],
      "type": "integer"
    },
    "enable_prompt_expansion": {
      "description": "Allow the service to expand the submitted creative brief before generation.",
      "type": "boolean"
    },
    "enable_thinking": {
      "default": false,
      "description": "Let the model reason about the brief and the reference material before generating. Helps with complex references; slower. Switches on by itself when a reference file or link is given.",
      "type": "boolean"
    },
    "generate_audio": {
      "default": true,
      "description": "Request generated audio with the video.",
      "type": "boolean"
    },
    "prompt": {
      "description": "Describe the subject, action, camera, light, pacing, and boundaries for the shot.",
      "minLength": 1,
      "type": "string"
    },
    "reference_audio_urls": {
      "description": "Reference audio, up to 5 items and 15 seconds in total.",
      "items": {
        "contentMediaType": [
          "audio/mpeg",
          "audio/wav"
        ],
        "type": "string"
      },
      "maxItems": 5,
      "minItems": 1,
      "type": "array"
    },
    "reference_file_url": {
      "contentMediaType": [
        "application/pdf",
        "application/msword",
        "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
        "application/vnd.ms-excel",
        "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
        "application/vnd.ms-powerpoint",
        "application/vnd.openxmlformats-officedocument.presentationml.presentation",
        "application/vnd.apple.keynote",
        "application/vnd.apple.pages",
        "application/vnd.apple.numbers",
        "text/plain",
        "text/markdown"
      ],
      "description": "One reference document (PDF, DOCX, TXT, MD and similar) that the model reads for characters, wardrobe, setting and action.",
      "format": "uri",
      "type": "string"
    },
    "reference_image_urls": {
      "description": "Reference images, up to 10 items.",
      "items": {
        "contentMediaType": [
          "image/jpeg",
          "image/png",
          "image/webp",
          "image/gif"
        ],
        "type": "string"
      },
      "maxItems": 10,
      "minItems": 1,
      "type": "array"
    },
    "reference_link_url": {
      "description": "One public web page the model reads for reference. It must open without a login.",
      "format": "uri",
      "type": "string"
    },
    "reference_video_urls": {
      "description": "Reference videos, up to 5 items and 15 seconds in total.",
      "items": {
        "contentMediaType": [
          "video/mp4",
          "video/webm",
          "video/quicktime"
        ],
        "type": "string"
      },
      "maxItems": 5,
      "minItems": 1,
      "type": "array"
    },
    "resolution": {
      "default": "720p",
      "description": "Output resolution.",
      "enum": [
        "480p",
        "720p",
        "1080p"
      ],
      "type": "string"
    },
    "seed": {
      "description": "Random seed. Keep it fixed only for controlled comparisons, not as a frame-identical guarantee.",
      "maximum": 2147483647,
      "minimum": 0,
      "type": "integer"
    }
  },
  "type": "object"
}

Un vrai résultat de Wan 3.0 Prime

PromptTake the camera behaviour from Video 1 — a slow handheld orbit — and apply it to the woman in Image 1, standing in an empty studio. Keep her face and outfit from Image 1. Soft top light, quiet room.
La même requête via l’API
{
  "model": "alibaba/wan-3.0-prime/reference-to-video",
  "input": {
    "prompt": "Take the camera behaviour from Video 1 — a slow handheld orbit — and apply it to the woman in Image 1, standing in an empty studio. Keep her face and outfit from Image 1. Soft top light, quiet room.",
    "reference_image_urls": [
      "https://media.popnow.ai/influencer/examples/ava.webp"
    ],
    "aspect_ratio": "16:9",
    "resolution": "720p",
    "duration_seconds": 5
  }
}

Ce résultat part d’un fichier envoyé : mettez votre propre lien à la place du lien d’exemple.

Réponses, interrogation et callbacks

Tous les modèles fonctionnent de la même façon : créez une tâche, puis interrogez-la ou attendez le callback.

Connaître le prix d’abord

cURL
curl -X POST https://api.popnow.ai/api/v1/jobs/quote \
  -H "Authorization: Bearer $POPNOW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "alibaba/wan-3.0-prime/reference-to-video",
  "input": {
    "prompt": "A slow aerial shot drifting over a misty pine forest at sunrise",
    "reference_image_urls": [
      "https://media.popnow.ai/influencer/examples/ava.webp"
    ],
    "aspect_ratio": "16:9",
    "resolution": "720p",
    "duration_seconds": 5
  }
}'

Même corps que createTask. Renvoie le débit attendu et le débit maximal possible, sans rien lancer.

Acceptée

HTTP
HTTP/1.1 202 Accepted

{
  "code": 200,
  "msg": "success",
  "data": {
    "taskId": "task_01k3m8x9q2z4v7n5p6r8s0t1w3",
    "state": "queued"
  },
  "request_id": "req_example_create"
}

HTTP 202 signifie que la tâche est acceptée et que les crédits sont réservés, pas encore débités. Le débit final ne dépasse jamais la réservation.

Vérifier l’état

cURL
curl "https://api.popnow.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
  -H "Authorization: Bearer $POPNOW_API_KEY"

Interrogez toutes les quelques secondes en espaçant progressivement, et arrêtez dès que state vaut succeeded, failed, canceled ou expired.

Tâche terminée

JSON
{
  "code": 200,
  "msg": "success",
  "data": {
    "taskId": "task_01k3m8x9q2z4v7n5p6r8s0t1w3",
    "model": "alibaba/wan-3.0-prime/reference-to-video",
    "state": "succeeded",
    "output": {
      "assets": [
        {
          "url": "https://cdn.popnow.ai/tasks/task_01k3m8x9q2z4v7n5p6r8s0t1w3/output.mp4?signature=FROM_RESPONSE",
          "expiresAt": "2026-10-17T12:20:00Z",
          "mime": "video/mp4",
          "width": 1280,
          "height": 720,
          "durationSeconds": 5
        }
      ]
    },
    "settled": true
  },
  "request_id": "req_example_record"
}

Téléchargez depuis l’url avant expiresAt. Besoin d’un nouveau lien plus tard ? Demandez-le à POST /common/download-url.

Vérifier un callback

Node.js
import { createHash, createHmac, timingSafeEqual } from "node:crypto";
import express from "express";

const app = express();
// express.raw keeps the exact bytes that were signed; express.json would not match.
app.post("/hooks/popnow", express.raw({ type: "application/json" }), (req, res) => {
  const timestamp = req.header("X-Webhook-Timestamp");
  const signature = req.header("X-Webhook-Signature") ?? "";
  const body = JSON.parse(req.body.toString("utf8"));
  const taskId = body.data?.taskId ?? body.task_id;
  const digest = createHash("sha256").update(req.body).digest("hex");
  const expected = createHmac("sha256", process.env.POPNOW_WEBHOOK_SECRET)
    .update(`${taskId}.${timestamp}.${digest}`)
    .digest("base64");
  const ok = expected.length === signature.length && timingSafeEqual(Buffer.from(expected), Buffer.from(signature));
  // Check the signature first, then reject anything older than five minutes.
  if (!ok || Math.abs(Date.now() / 1000 - Number(timestamp)) > 300) return res.status(401).end();
  res.status(200).end(); // answer fast, then fetch the task and store its files
});

Avec une callBackUrl, nous vous envoyons la tâche terminée. Vérifiez la signature sur le corps brut avant de lui faire confiance.

Envoyer un fichier local

cURL
curl -X POST https://api.popnow.ai/api/v1/common/upload-url \
  -H "Authorization: Bearer $POPNOW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"contentType": "image/png", "bytes": 482113}'

# PUT the file bytes to data.uploadUrl with every header in data.headers, then commit it:
curl -X POST https://api.popnow.ai/api/v1/files/$FILE_ID/commit \
  -H "Authorization: Bearer $POPNOW_API_KEY"
# The commit returns a popnow://f/... reference. Put it in any image, video or
# audio field of the task input instead of a public https URL.

Les liens https publics fonctionnent tels quels. Les fichiers locaux passent d’abord par upload-url et commit.