Skip to main content
POST
/
v1
/
jobs
/
submit
Hailuo 2.3 Fast — Image to Video
curl --request POST \
  --url https://api.muvi.video/v1/jobs/submit \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "model": "<string>",
  "input": {
    "image_url": "<string>",
    "prompt": "<string>",
    "duration": "<string>"
  }
}
'
import requests

url = "https://api.muvi.video/v1/jobs/submit"

payload = {
    "model": "<string>",
    "input": {
        "image_url": "<string>",
        "prompt": "<string>",
        "duration": "<string>"
    }
}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: JSON.stringify({
    model: '<string>',
    input: {image_url: '<string>', prompt: '<string>', duration: '<string>'}
  })
};

fetch('https://api.muvi.video/v1/jobs/submit', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));
{
  "jobId": "<string>",
  "status": "<string>",
  "estimatedCompletionTime": "<string>",
  "costMicroCents": 123
}
Animate a still image with MiniMax Plus Hailuo 2.3 Fast — a 768p image-to-video model optimized for speed with selectable duration.
PropertyValue
ProviderMiniMax Plus
ModelHailuo 2.3 Fast
CapabilityImage to Video
Base Cost25,000 micro-cents/second ($0.025/sec)
Processing Time~120 seconds

Request Body

model
string
required
Model slug. Use minimax-plus/hailuo-2.3-fast/image-to-video for image-to-video generation.
input
object
required
Input parameters for image-to-video generation.
webhookUrl
string
HTTPS URL to receive a webhook notification when the job completes or fails.

Pricing

Base cost: 25,000 micro-cents per second ($0.025/sec)
finalCost = baseCost × duration
FactorOptionMultiplier
Duration66x
1010x
Default cost: 6 seconds = 25,000 × 6 = 150,000 micro-cents ($0.15)

Response

jobId
string
Unique identifier for the submitted job.
status
string
Initial job status. Always "pending" on successful submission.
estimatedCompletionTime
string
ISO 8601 timestamp of the estimated completion time.
costMicroCents
number
The cost of the job in micro-cents.

Code Examples

curl -X POST https://api.muvi.video/v1/jobs/submit \
  -H "Authorization: Bearer $PIXELBYTE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "minimax-plus/hailuo-2.3-fast/image-to-video",
    "input": {
      "image_url": "https://example.com/image.jpg",
      "prompt": "The character waves at the camera and smiles",
      "duration": "6"
    }
  }'
import requests

response = requests.post(
    "https://api.muvi.video/v1/jobs/submit",
    headers={
        "Authorization": "Bearer YOUR_API_KEY",
        "Content-Type": "application/json"
    },
    json={
        "model": "minimax-plus/hailuo-2.3-fast/image-to-video",
        "input": {
            "image_url": "https://example.com/image.jpg",
            "prompt": "The character waves at the camera and smiles",
            "duration": "6"
        }
    }
)

data = response.json()
print(data)
const response = await fetch("https://api.muvi.video/v1/jobs/submit", {
  method: "POST",
  headers: {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    model: "minimax-plus/hailuo-2.3-fast/image-to-video",
    input: {
      image_url: "https://example.com/image.jpg",
      prompt: "The character waves at the camera and smiles",
      duration: "6"
    }
  })
});

const data = await response.json();
console.log(data);