Wan 3.0 Video

Wan 3.0 Video

Create Wan 3.0 videos from text and optional image, video, or audio references through the SJinn REST API

Tool Overview

Wan 3.0 creates videos from text and optional image, video, and audio references. You can generate 2–30 second videos at 480P, 720P, or 1080P. A request may contain up to 10 images, 5 videos, and 5 audio clips.

Tool Identifier

wan3-video-api

Parameters

All reference values must be public HTTP/HTTPS URLs. Provide a prompt or at least one reference URL.

Optional Parameters

prompt

  • Type: string
  • Default: ""
  • Limit: 20,000 characters
  • Description: Text description of the video. The prompt may be omitted when at least one reference URL is supplied.

duration

  • Type: number
  • Default: 5
  • Supported Values: Any integer from 2 to 30

resolution

  • Type: string
  • Default: "480P"
  • Supported Values: "480P", "720P", "1080P"

aspect_ratio

  • Type: string
  • Default: "adaptive"
  • Supported Values: "adaptive", "16:9", "9:16", "1:1", "4:3", "3:4"

image_urls

  • Type: string[]
  • Default: []
  • Limit: Up to 10 public HTTP/HTTPS URLs

video_urls

  • Type: string[]
  • Default: []
  • Limit: Up to 5 public HTTP/HTTPS URLs
  • Duration: Combined reference-video duration must not exceed 15 seconds

audio_urls

  • Type: string[]
  • Default: []
  • Limit: Up to 5 public HTTP/HTTPS URLs
  • Duration: Combined reference-audio duration must not exceed 15 seconds

Pricing

  • 480P: 70 credits per second
  • 720P: 140 credits per second
  • 1080P: 280 credits per second

The total is ceil((output duration + total input-video duration) × resolution rate). Input-video durations are measured by the server before charging; fractional seconds are preserved and only the final credit total is rounded up. Images and audio references do not add billable duration. If an input video's duration cannot be read, the request fails without charging.

For example, a 5-second output with 3 seconds of input video at 720P costs (5 + 3) × 140 = 1,120 credits.

Request Examples

Prompt Only

curl -X POST https://sjinn.ai/api/un-api/create_tool_task \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "tool_type": "wan3-video-api",
    "input": {
      "prompt": "A cinematic aerial shot above a futuristic coastal city at sunrise",
      "duration": 5,
      "resolution": "720P",
      "aspect_ratio": "16:9"
    }
  }'

Multimodal References

curl -X POST https://sjinn.ai/api/un-api/create_tool_task \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "tool_type": "wan3-video-api",
    "input": {
      "prompt": "Use the character from the image, follow the camera motion in the video, and use the audio as the soundtrack reference.",
      "duration": 10,
      "resolution": "1080P",
      "aspect_ratio": "9:16",
      "image_urls": [
        "https://example.com/character.jpg"
      ],
      "video_urls": [
        "https://example.com/camera-motion.mp4"
      ],
      "audio_urls": [
        "https://example.com/soundtrack.mp3"
      ]
    }
  }'

JavaScript

const response = await fetch('https://sjinn.ai/api/un-api/create_tool_task', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    tool_type: 'wan3-video-api',
    input: {
      prompt: 'A dancer performs under warm theatrical lighting',
      duration: 8,
      resolution: '720P',
      aspect_ratio: '9:16',
      audio_urls: ['https://example.com/music.mp3'],
    },
  }),
});

const result = await response.json();
console.log('Task ID:', result.data.task_id);

Python

import requests

response = requests.post(
    'https://sjinn.ai/api/un-api/create_tool_task',
    headers={
        'Authorization': 'Bearer YOUR_API_KEY',
        'Content-Type': 'application/json',
    },
    json={
        'tool_type': 'wan3-video-api',
        'input': {
            'prompt': 'A dancer performs under warm theatrical lighting',
            'duration': 8,
            'resolution': '720P',
            'aspect_ratio': '9:16',
            'audio_urls': ['https://example.com/music.mp3'],
        },
    },
)

result = response.json()
print('Task ID:', result['data']['task_id'])

Response

The create endpoint returns a pending task ID. Poll query_tool_task_status until the task completes or fails.

{
  "success": true,
  "errorMsg": "",
  "error_code": 0,
  "data": {
    "task_id": "550e8400-e29b-41d4-a716-446655440000"
  }
}

Related Links