Muse Video é o modelo de vídeo do Meta Superintelligence Labs. No APIMODELS ele é um único id de modelo, muse-video, no endpoint unificado de vídeo: envie só um prompt para texto para vídeo; acrescente uma imagem de primeiro quadro e o clipe começa a partir dela; ou acrescente até quatro imagens de referência e o modelo mantém a pessoa ou o elemento principal sem começar a partir delas. Os clipes têm de 4 a 30 segundos, em 720p, 16:9 (1280×720) ou 9:16 (720×1280), entregues como MP4 H.264 a 24 fps. Durações, tamanhos e entradas não suportados são recusados com 400 antes de a tarefa ser criada; nem toda requisição tem sucesso, e gerações que falham não são cobradas. A cobrança é de $0.037 por segundo solicitado.
Tudo o que o Muse Video aceita e tudo o que não aceita, numa única tabela. Confira antes de integrar o modelo: só 720p, só paisagem ou retrato, e um primeiro quadro ou até quatro imagens de referência, mas não os dois.
| Item | Suportado | Não suportado |
|---|---|---|
| Resolução | Só 720p (resolution: "720p", ou omita) | 1080p, 2K, 4K, 480p |
| Proporção | 16:9 paisagem em 1280×720 (padrão) ou 9:16 retrato em 720×1280 | Quadrado 1:1, 4:3, 3:4, 21:9 e qualquer outra proporção ou tamanho |
| Duração | De 4 a 30 segundos inteiros; 5, 6, 8, 10, 15, 20, 25 e 30 s saem exatos, os demais sobem para o próximo degrau | Menos de 4 s, mais de 30 s, frações como 8.5 |
| Imagens | Uma das duas: 1 primeiro quadro, ou até 4 imagens de referência que mantêm a mesma pessoa ou elemento principal (não as duas coisas); PNG, JPEG ou WebP, até 20 MB cada, como URL pública ou base64 | Um primeiro quadro junto com imagens de referência, mais de 4 imagens de referência, um último quadro |
| Entrada de vídeo e áudio | Nenhuma: imagens são a única entrada de mídia | Vídeo de referência, edição ou extensão de vídeo, entrada de áudio, sincronia labial com o seu próprio áudio |
| Som | Gerado pelo modelo junto com a imagem; generate_audio: true é aceito | Desligar o som (generate_audio: false retorna 400); não há garantia de som em todo clipe |
| Outros controles | Um prompt de até 4000 caracteres em qualquer idioma; descreva os movimentos de câmera no prompt | negative_prompt, seed (os resultados não são repetíveis), parâmetros de controle de câmera |
Valores e campos não suportados retornam 400 antes de a tarefa ser criada e não custam nada; as mensagens exatas estão em Erros, mais abaixo.
O Muse Video não tem sucesso em 100% das vezes. Uma requisição que passa na validação e cria uma tarefa ainda pode falhar:
Uma tarefa que falha termina em state failed com o motivo em data.failMsg, e não é cobrada. Nossos dois pedidos de teste do lançamento devolveram um clipe, mas isso é pouco demais para prometer uma taxa de sucesso, então não publicamos nenhuma. Planeje o fluxo contando com falhas ocasionais: repita os erros temporários, reescreva os prompts recusados e não presuma que a primeira tentativa vai entregar um clipe.
Um único id de modelo e um único endpoint; o modo depende das imagens que você envia. Os três custam o mesmo.
| Modo | O que enviar | O que o modelo faz |
|---|---|---|
| Texto para vídeo | Só prompt | Tudo no clipe vem do prompt. |
| Primeiro quadro (imagem para vídeo) | prompt + 1 imagem em image_url (ou first_frame_url, image, input_reference) | O clipe começa a partir dessa imagem; o prompt diz o que acontece depois. |
| Imagens de referência | prompt + de 1 a 4 imagens em images (ou image_urls, reference_image_urls) | O modelo mantém a pessoa, o elemento principal ou o estilo das imagens, mas o clipe não começa a partir delas; a cena vem do prompt. Bom para um personagem recorrente. |
Um primeiro quadro e imagens de referência não podem ir na mesma requisição; enviar os dois retorna 400. Um array de imagens (images, image_urls ou reference_image_urls) sempre conta como imagens de referência, mesmo com um único item; para enviar um primeiro quadro, use o campo de imagem única image_url.
Todas as requisições levam a chave de API no cabeçalho:
Authorization: Bearer YOUR_API_KEYhttps://api.apimodels.app/v1/video/generations·GET/v1/video/generations?task_id=# Muse Video — text-to-video. model and prompt are required; everything else is optional.
# duration: whole seconds 4-30 (default 5). aspect_ratio: 16:9 (default, 1280x720) or 9:16 (720x1280).
# Billed $0.037 per requested second: this 10 s request is $0.37.
curl -X POST https://api.apimodels.app/v1/video/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "muse-video",
"prompt": "An orange cat stretches on a sunny windowsill, sunlight pours in, the camera slowly pushes in",
"duration": 10,
"aspect_ratio": "16:9"
}'
# Response (async — a task is created):
# { "code": 200, "msg": "success", "data": { "taskId": "clxxx", "state": "pending", "model": "muse-video" } }
# Poll every 10-15 s until completed (result files are kept 30 days)
curl "https://api.apimodels.app/v1/video/generations?task_id=TASK_ID" \
-H "Authorization: Bearer YOUR_API_KEY"
# { "code": 200, "data": { "state": "completed",
# "resultUrls": ["https://r2.apimodels.app/videos/clxxx.mp4"] } }Mesmo id de modelo e mesmo endpoint: acrescente uma imagem de primeiro quadro. Custa o mesmo que texto para vídeo. O exemplo em Node.js usa os nomes de campo no estilo OpenAI seconds, size e input_reference, que também funcionam.
# Muse Video — image-to-video: the same request plus ONE first-frame image.
# PNG, JPEG or WebP, up to 20 MB, as a public URL or a base64 data URI.
# Same price as text-to-video. Use an image with the same orientation as the clip.
curl -X POST https://api.apimodels.app/v1/video/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "muse-video",
"prompt": "She turns toward the window and smiles, the curtains drift in the breeze, slow push-in",
"image_url": "https://example.com/first-frame-portrait.jpg",
"duration": 6,
"aspect_ratio": "9:16"
}'
# first_frame_url, image or input_reference work in place of image_url. Do not put a first frame in image_urls:
# an image array (images, image_urls, reference_image_urls) always means reference images, see the next example.
# Poll the returned taskId exactly as in the text-to-video example.Para manter a mesma pessoa ou o mesmo elemento principal em vários clipes, coloque de 1 a 4 imagens de referência em images (image_urls e reference_image_urls também funcionam). O modelo mantém o rosto e a aparência, mas o clipe não começa a partir de nenhuma delas. Mencione no prompt "a mesma pessoa das imagens de referência" e depois descreva a cena nova. Não acrescente um primeiro quadro na mesma requisição; o preço é o mesmo de texto para vídeo.
# Muse Video — reference images: 1 to 4 images of the same person or subject in "images".
# The model keeps the face and look from them, but the clip does not start from any of them.
# image_urls and reference_image_urls work in place of images. Do not add a first frame to the same request.
# PNG, JPEG or WebP, up to 20 MB each, public URLs or base64 data URIs. Same price as text-to-video.
curl -X POST https://api.apimodels.app/v1/video/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "muse-video",
"prompt": "The same young woman from the reference images walks barefoot along a beach at sunset, smiling back at the camera, handheld vertical shot",
"images": [
"https://example.com/ref-1.jpg",
"https://example.com/ref-2.jpg",
"https://example.com/ref-3.jpg",
"https://example.com/ref-4.jpg"
],
"duration": 5,
"aspect_ratio": "9:16"
}'
# Poll the returned taskId exactly as in the text-to-video example.Uma tarefa passa por pending → processing → completed ou failed. Em completed, data.resultUrls[0] é o MP4; em failed, o motivo está em data.failMsg e nada é cobrado. Clipes de até 10 segundos costumam levar de um a dois minutos, e os de 15 a 30 segundos, de três a sete; nossos pedidos de teste de 4 segundos no lançamento terminaram em cerca de 1.5 minuto. Consultar a cada 10-15 segundos é suficiente.
Para não precisar consultar, passe callback_url na requisição de criação. Quando a tarefa chega a completed ou failed, enviamos um HTTP POST (JSON) para essa URL. Entregas que falham são reenviadas com intervalos crescentes por até 30 minutos, até o seu endpoint responder com 2xx. A URL precisa ser acessível publicamente; localhost e endereços privados retornam 400 na criação. A consulta continua funcionando normalmente.
POST {your callback_url}
Content-Type: application/json
{
"code": 200,
"msg": "success",
"data": {
"taskId": "clxxx...",
"model": "muse-video",
"state": "completed", // or "failed"
"param": "<JSON string>", // your request, JSON.parse once
"resultJson": "<JSON string> | null", // {"resultUrls": ["https://...mp4"]}, JSON.parse once
"failCode": null,
"failMsg": null
}
}| Field | Required | Type | Description |
|---|---|---|---|
| model | Sim | string | muse-video |
| prompt | Sim | string | O que acontece no clipe, até 4000 caracteres, em qualquer idioma. Também é obrigatório em imagem para vídeo. |
| duration | Não | number | string | Segundos inteiros, de 4 a 30, padrão 5; como string ou número. O campo seconds no estilo OpenAI também é aceito. 5, 6, 8, 10, 15, 20, 25 e 30 saem exatos; os outros valores sobem para o próximo degrau (tabela abaixo). |
| aspect_ratio | Não | string | 16:9 (padrão, 1280×720) ou 9:16 (720×1280). Qualquer outra proporção retorna 400. |
| size | Não | string | No lugar de aspect_ratio: "1280x720" ou "720x1280". Se enviar os dois, eles precisam coincidir. |
| resolution | Não | string | Opcional; só "720p" é aceito, qualquer outro valor retorna 400. |
| image_url | Não | string | O primeiro quadro, uma única imagem; o clipe começa a partir dela. URL pública ou data URI em base64, PNG, JPEG ou WebP, até 20 MB. first_frame_url, image e input_reference também funcionam. Não pode ser combinado com images. |
| images | Não | string[] | Imagens de referência, de 1 a 4: o modelo mantém a pessoa, o elemento principal ou o estilo delas, mas o clipe não começa a partir delas, o que serve para um personagem recorrente. Cada uma é uma URL pública ou um data URI em base64, PNG, JPEG ou WebP, até 20 MB. image_urls e reference_image_urls também funcionam; um array com uma única imagem continua sendo imagem de referência, não primeiro quadro. Não pode ser combinado com um primeiro quadro; mais de 4 retorna 400. |
| generate_audio | Não | boolean | Opcional; só true é aceito. O modelo decide se um clipe tem som, então true não garante isso; false retorna 400 (o som não pode ser desligado). |
| callback_url | Não | string | Enviamos a tarefa concluída por POST para esta URL; sem ela, consulte o endpoint GET. |
Não há entrada de último quadro, vídeo de referência nem áudio de referência, nem negative_prompt nem seed: enviar algum deles retorna 400, em vez de ser ignorado em silêncio. Também não há parâmetros de controle de câmera; descreva os movimentos de câmera no prompt.
Pedidos de 5, 6, 8, 10, 15, 20, 25 ou 30 segundos voltam exatamente com essa duração; qualquer outro número inteiro sobe para o próximo degrau, então o clipe nunca é mais curto do que o que você pagou. A cobrança segue os segundos pedidos, não a duração do clipe.
| duration solicitada | Duração do clipe |
|---|---|
| 4 / 5 s | 5 s |
| 6 s | 6 s |
| 7 / 8 s | 8 s |
| 9 / 10 s | 10 s |
| 11–15 s | 15 s |
| 16–20 s | 20 s |
| 21–25 s | 25 s |
| 26–30 s | 30 s |
Um teste com imagens de referência (2026-10-30)
Enviamos quatro fotos de uma mesma mulher jovem (deitada num travesseiro, sorrindo, fazendo um V com os dedos e rindo atrás da mão) com o prompt "The same young woman from the reference images walks barefoot along a beach at sunset, smiling back at the camera, handheld vertical shot", duration 4 e aspect_ratio 9:16. Em 88 segundos voltou um clipe de 5.0 segundos em 720×1280 com faixa de áudio. Ele começava na praia, não em nenhuma das fotos. Ela manteve o mesmo rosto, o mesmo cabelo e uma roupa parecida (a blusinha de alcinha creme virou um vestido branco de alcinha), e o modelo reaproveitou gestos das fotos: o V com os dedos e o riso atrás da mão. Nesses 5 segundos houve vários cortes: close, plano aberto, de costas, o V e outro close. A cobrança foi exatamente a de um pedido de texto para vídeo de 4 segundos. É um único teste, não uma promessa de que todo pedido vai sair igual.
| Segundos solicitados | Duração do clipe | Preço |
|---|---|---|
| Por segundo solicitado | — | $0.037 |
| 4 s | 5 s | $0.148 |
| 5 s (padrão) | 5 s | $0.185 |
| 6 s | 6 s | $0.222 |
| 7 s | 8 s | $0.259 |
| 8 s | 8 s | $0.296 |
| 10 s | 10 s | $0.37 |
| 15 s | 15 s | $0.555 |
| 20 s | 20 s | $0.74 |
| 25 s | 25 s | $0.925 |
| 30 s | 30 s | $1.11 |
A cobrança é pelos segundos solicitados: um pedido de 4 segundos custa $0.148 e devolve um clipe de 5 segundos. O primeiro quadro e as imagens de referência não custam nada a mais: os três modos têm o mesmo preço. Um pedido recusado com 400 não cria tarefa e não custa nada; gerações que falham não são cobradas.
Problemas de parâmetro voltam de forma síncrona como 400 na criação ({"code": 400, "msg": "..."}): nenhuma tarefa é criada e nada é cobrado. Os textos de msg abaixo são a redação atual; o nome do campo entre parênteses é o que você enviou.
| msg | Causa / correção |
|---|---|
prompt is required | O prompt não foi enviado ou só tem espaços. Requisições com primeiro quadro ou imagens de referência também precisam de prompt. |
prompt must be at most 4000 characters | O prompt passa de 4000 caracteres. Encurte-o. |
duration must be a whole number of seconds from 4 to 30 | duration (ou seconds) está fora de 4-30, tem casas decimais ou não é um número. Envie segundos inteiros; uma string como "10" também serve. |
muse-video outputs 720p only (resolution: 720p) | resolution foi enviado como 1080p ou outro valor. Omita o campo ou envie 720p. |
muse-video supports 16:9 (1280x720) or 9:16 (720x1280) only — set aspect_ratio to 16:9 or 9:16 | Foi enviada outra proporção ou tamanho (como 1:1 ou 1920x1080), ou aspect_ratio e size não coincidem. |
muse-video takes either a first frame (image_url) or reference images (images), not both | A requisição trazia um primeiro quadro (image_url, first_frame_url, image ou input_reference) e também imagens de referência (images, image_urls ou reference_image_urls). Escolha um: só o primeiro quadro se o clipe deve começar a partir dessa imagem, ou só as imagens de referência se ele deve manter a pessoa ou o elemento principal. |
muse-video takes at most 4 reference images (images / image_urls) | O array de imagens de referência tem mais de 4. Deixe no máximo 4: as que melhor mostram a pessoa ou o elemento principal. |
muse-video does not support a last frame (last_frame_url) | Foi enviado um campo de último quadro. O Muse Video não aceita último quadro; remova-o. |
muse-video does not accept video or audio input (video_urls) | Foi enviada uma entrada de vídeo ou áudio. O Muse Video aceita um prompt e, opcionalmente, uma imagem de primeiro quadro ou até 4 imagens de referência. |
muse-video does not support negative_prompt — describe what you want in prompt instead | Foi enviado negative_prompt. O Muse Video não tem prompt negativo: remova-o e descreva no prompt o que você quer. |
muse-video does not support seed: results are not repeatable | Foi enviado seed. O Muse Video não tem seed e o mesmo pedido gera um clipe diferente a cada vez; remova-o. |
muse-video cannot turn sound off: the model decides whether a clip has sound | Foi enviado generate_audio: false. O som não pode ser desligado: omita o campo ou envie true, e remova você mesmo a faixa de áudio se precisar de um clipe sem som. |
first-frame image must be PNG, JPEG or WebP; um arquivo acima de 20 MB dá first-frame image is larger than 20 MB. Nenhum dos dois é cobrado.ffprobe -v error -select_streams a -show_entries stream=codec_name -of csv=p=0 clip.mp4: ele imprime aac quando há faixa e nada quando o clipe está sem som.Teste no Playground.
720p only (no 1080p, 2K, 4K or 480p), in 16:9 landscape at 1280×720 or 9:16 portrait at 720×1280 only (no square or other ratios). Length is 4 to 30 whole seconds, exact at 5, 6, 8, 10, 15, 20, 25 and 30 and rounded up otherwise. Images: either one first frame or up to four reference images that keep the same person or subject, not both; PNG, JPEG or WebP up to 20 MB each; no last frame. No video or audio input, no lip sync to your audio, no video editing or extension. Sound comes from the model, is not guaranteed on every clip and cannot be turned off. No negative_prompt, seed or camera-control parameters, and the prompt is up to 4,000 characters. Unsupported fields return a 400 before a task is created. Success is not 100%: the model can refuse content, a generation can hit a temporary error, and a clip with the wrong orientation or length is discarded. Failed tasks are not charged, and we publish no success rate.
$0.037 per requested second: 5 seconds (the default) $0.185, 8 seconds $0.296, 10 seconds $0.37, 15 seconds $0.555, 20 seconds $0.74, 30 seconds $1.11. A first frame or reference images cost nothing extra. Billing follows the seconds you request, so a 4-second request costs $0.148 and returns a 5-second clip. A request rejected with a 400 creates no task, and failed generations are not charged.
Clip lengths come in steps. Requests of 5, 6, 8, 10, 15, 20, 25 or 30 seconds come back exactly that long; any other whole number from 4 to 30 rounds up to the next step (4 → 5 s, 7 → 8 s, 11-14 → 15 s, 26-29 → 30 s), so a clip is never shorter than what you paid for. Request an exact step when the length matters.
720p only, in two shapes: 16:9 at 1280×720 (the default) or 9:16 at 720×1280, set with aspect_ratio or with size 1280x720 / 720x1280. There is no square or 1080p option; asking for one returns a 400 before a task is created. Output is an H.264 MP4 at 24 fps.
Add one first-frame image to the request as image_url (first_frame_url, image and input_reference also work): a public URL or a base64 data URI, PNG, JPEG or WebP, up to 20 MB. The clip starts from that picture and costs the same as text-to-video. Use an image in the same orientation as the clip; there is no last-frame option. Do not put the first frame in an image_urls array: any image array is read as reference images.
Yes, with reference images. Send 1 to 4 images of the person or subject in images (image_urls and reference_image_urls also work), not together with a first frame. The model keeps the face and look but does not start the clip from those pictures; the scene comes from the prompt. In one test on 2026-10-30, four photos of one young woman and a prompt about her walking along a beach at sunset gave a 5.0-second 720×1280 clip with audio in 88 seconds: the same face and hair, a similar outfit, and gestures taken from the photos. That is one test, not a guarantee. Reference images cost nothing extra, and more than 4 return a 400.
Meta describes Muse Video as generating sound together with the picture. In our launch tests the landscape clip carried an AAC audio track and the portrait clip came back silent, so if your pipeline needs audio, check each clip for an audio track. Sound cannot be turned off: generate_audio: false returns a 400.