curl --request POST \
--url https://api.goenhance.ai/api/v1/videos/generations \
--header 'Content-Type: application/json' \
--data '
{
"model": "muse-video",
"prompt": "The fox from the reference image slowly raises its head as wind moves its fur, gentle camera push-in, soft forest ambience",
"image_urls": [
"https://your-cdn.com/fox.png"
],
"ratio": "16:9"
}
'import requests
url = "https://api.goenhance.ai/api/v1/videos/generations"
payload = {
"model": "muse-video",
"prompt": "The fox from the reference image slowly raises its head as wind moves its fur, gentle camera push-in, soft forest ambience",
"image_urls": ["https://your-cdn.com/fox.png"],
"ratio": "16:9"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'muse-video',
prompt: 'The fox from the reference image slowly raises its head as wind moves its fur, gentle camera push-in, soft forest ambience',
image_urls: ['https://your-cdn.com/fox.png'],
ratio: '16:9'
})
};
fetch('https://api.goenhance.ai/api/v1/videos/generations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.goenhance.ai/api/v1/videos/generations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => 'muse-video',
'prompt' => 'The fox from the reference image slowly raises its head as wind moves its fur, gentle camera push-in, soft forest ambience',
'image_urls' => [
'https://your-cdn.com/fox.png'
],
'ratio' => '16:9'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.goenhance.ai/api/v1/videos/generations"
payload := strings.NewReader("{\n \"model\": \"muse-video\",\n \"prompt\": \"The fox from the reference image slowly raises its head as wind moves its fur, gentle camera push-in, soft forest ambience\",\n \"image_urls\": [\n \"https://your-cdn.com/fox.png\"\n ],\n \"ratio\": \"16:9\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.goenhance.ai/api/v1/videos/generations")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"muse-video\",\n \"prompt\": \"The fox from the reference image slowly raises its head as wind moves its fur, gentle camera push-in, soft forest ambience\",\n \"image_urls\": [\n \"https://your-cdn.com/fox.png\"\n ],\n \"ratio\": \"16:9\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.goenhance.ai/api/v1/videos/generations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"muse-video\",\n \"prompt\": \"The fox from the reference image slowly raises its head as wind moves its fur, gentle camera push-in, soft forest ambience\",\n \"image_urls\": [\n \"https://your-cdn.com/fox.png\"\n ],\n \"ratio\": \"16:9\"\n}"
response = http.request(request)
puts response.read_body{
"code": 0,
"msg": "Success",
"data": {
"img_uuid": "c12b656c-747a-44fd-9c80-add79b0c52d5",
"cost": 5.82
}
}Muse Video
Muse Video, Meta’s video model. Generates one 10-second 720p clip from a prompt alone, or guided by up to 9 reference images in image_urls. Reference images steer the subject, style and scene; they are not used as an exact first frame, so this is not image-to-video.
Audio — every video comes with native sound. It is always on and cannot be turned off.
Pricing — 1.56 tokens ($0.0312) per video, flat. Reference images are not charged.
Returns an img_uuid; poll GET /api/v1/jobs/detail (or use custom_callback_url) to get the generated video. The delivered clip is about 10 seconds; read the exact length from the file.
Not accepted by this model (rejected before any tokens are charged): duration other than 10, resolution other than 720p, turning sound off (generate_audio: false), negative_prompt, seed, first / last frames (image_url / image_end_url), and reference videos or audio.
curl --request POST \
--url https://api.goenhance.ai/api/v1/videos/generations \
--header 'Content-Type: application/json' \
--data '
{
"model": "muse-video",
"prompt": "The fox from the reference image slowly raises its head as wind moves its fur, gentle camera push-in, soft forest ambience",
"image_urls": [
"https://your-cdn.com/fox.png"
],
"ratio": "16:9"
}
'import requests
url = "https://api.goenhance.ai/api/v1/videos/generations"
payload = {
"model": "muse-video",
"prompt": "The fox from the reference image slowly raises its head as wind moves its fur, gentle camera push-in, soft forest ambience",
"image_urls": ["https://your-cdn.com/fox.png"],
"ratio": "16:9"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'muse-video',
prompt: 'The fox from the reference image slowly raises its head as wind moves its fur, gentle camera push-in, soft forest ambience',
image_urls: ['https://your-cdn.com/fox.png'],
ratio: '16:9'
})
};
fetch('https://api.goenhance.ai/api/v1/videos/generations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.goenhance.ai/api/v1/videos/generations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => 'muse-video',
'prompt' => 'The fox from the reference image slowly raises its head as wind moves its fur, gentle camera push-in, soft forest ambience',
'image_urls' => [
'https://your-cdn.com/fox.png'
],
'ratio' => '16:9'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.goenhance.ai/api/v1/videos/generations"
payload := strings.NewReader("{\n \"model\": \"muse-video\",\n \"prompt\": \"The fox from the reference image slowly raises its head as wind moves its fur, gentle camera push-in, soft forest ambience\",\n \"image_urls\": [\n \"https://your-cdn.com/fox.png\"\n ],\n \"ratio\": \"16:9\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.goenhance.ai/api/v1/videos/generations")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"muse-video\",\n \"prompt\": \"The fox from the reference image slowly raises its head as wind moves its fur, gentle camera push-in, soft forest ambience\",\n \"image_urls\": [\n \"https://your-cdn.com/fox.png\"\n ],\n \"ratio\": \"16:9\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.goenhance.ai/api/v1/videos/generations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"muse-video\",\n \"prompt\": \"The fox from the reference image slowly raises its head as wind moves its fur, gentle camera push-in, soft forest ambience\",\n \"image_urls\": [\n \"https://your-cdn.com/fox.png\"\n ],\n \"ratio\": \"16:9\"\n}"
response = http.request(request)
puts response.read_body{
"code": 0,
"msg": "Success",
"data": {
"img_uuid": "c12b656c-747a-44fd-9c80-add79b0c52d5",
"cost": 5.82
}
}Headers
Body
Muse Video text-to-video and reference-image video.
Pricing — 1.56 tokens ($0.0312) per 10-second 720p video.
Model name. Must be muse-video on this page.
muse-video Text prompt describing the scene, motion, camera and sound. Required, also when reference images are given. Chinese and English are supported.
4000Optional reference image URLs, up to 9, in the order you refer to them in the prompt. JPG, PNG or WebP, publicly reachable, up to 30MB each. Large images are downscaled automatically.
9Aspect ratio. auto means 16:9 for text-to-video, and follows the reference images when image_urls is given. aspect_ratio is accepted as an alias.
auto, 16:9, 9:16, 1:1, 4:3, 3:4, 3:2, 2:3 Fixed at 10 seconds. Optional.
10 Fixed at 720p. Optional.
720p Optional. A publicly accessible HTTPS URL. When the task status changes (processing / success / failed), GoEnhance sends a POST request to this URL. The request body is identical to the response of GET /api/v1/jobs/detail. If your server does not respond with HTTP 200, the notification is retried up to 3 times, with a 3-second timeout per attempt.
"https://your-server.com/goenhance/callback"
