Skip to main content
POST
/
v1
/
jobs
/
submit
Hailuo 2.3 Standard — 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 Standard — a 768p image-to-video model with selectable duration and balanced quality/cost.
PropertyValue
ProviderMiniMax Plus
ModelHailuo 2.3 Standard
CapabilityImage to Video
Base Cost35,000 micro-cents/second ($0.035/sec)
Processing Time~180 seconds

Request Body

model
string
required
Model slug. Use minimax-plus/hailuo-2.3-standard/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: 35,000 micro-cents per second ($0.035/sec)
finalCost = baseCost × duration
FactorOptionMultiplier
Duration66x
1010x
Default cost: 6 seconds = 35,000 × 6 = 210,000 micro-cents ($0.21)

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-standard/image-to-video",
    "input": {
      "image_url": "https://example.com/image.jpg",
      "prompt": "The waves crash gently against the shore as the sun sets",
      "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-standard/image-to-video",
        "input": {
            "image_url": "https://example.com/image.jpg",
            "prompt": "The waves crash gently against the shore as the sun sets",
            "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-standard/image-to-video",
    input: {
      image_url: "https://example.com/image.jpg",
      prompt: "The waves crash gently against the shore as the sun sets",
      duration: "6"
    }
  })
});

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