Gere vídeos, imagens e músicas com seu próprio código
Crie uma chave, envie uma requisição com autenticação Bearer e consulte a tarefa até seu arquivo estar pronto. Mesmos modelos, preços, limites de plano e reembolsos do estúdio NovaMotions AI, com um saldo de créditos compartilhado.
https://novamotions.com/api/v1Início rápido
Três passos do zero até um vídeo finalizado. Toda requisição é HTTPS simples com JSON, então qualquer linguagem ou ferramenta funciona.
- 1
Crie uma chave
Abra a página da API na sua conta e crie uma chave. A chave completa é mostrada uma única vez, então armazene-a em uma variável de ambiente chamada API_KEY.
- 2
Envie uma tarefa
Envie o modelo, um prompt e quaisquer opções. Os créditos são cobrados uma vez, no envio, e a resposta informa quantos foram usados e o saldo restante.
curl -X POST https://novamotions.com/api/v1/videos \ -H "Authorization: Bearer $API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "seedance-2-pro", "prompt": "Um movimento lento de câmera por uma rua neon chuvosa à noite, reflexos no asfalto molhado, cinematográfico", "duration": 5, "resolution": "720p", "aspect_ratio": "16:9" }' - 3
Consulte até estar pronta
Verifique a tarefa a cada poucos segundos. Quando o status for concluído, baixe o arquivo em output_url. Se falhar, os créditos já foram devolvidos ao seu saldo.
TASK_ID=your_task_id while true do TASK=$(curl -s https://novamotions.com/api/v1/tasks/$TASK_ID -H "Authorization: Bearer $API_KEY") STATUS=$(echo "$TASK" | jq -r .status) echo "$STATUS" if [ "$STATUS" = "succeeded" ] || [ "$STATUS" = "failed" ] then echo "$TASK" | jq break fi sleep 5 done
Autenticação
Envie sua chave no cabeçalho Authorization de cada requisição. As chaves começam com nm_live_ e pertencem a uma conta.
Authorization: Bearer nm_live_your_api_key
Content-Type: application/json- URL base
- Todos os endpoints estão sob https://novamotions.com/api/v1 e retornam JSON.
- Mantenha as chaves em segredo
- Chame a API do seu servidor, nunca do navegador ou app móvel. Uma chave revogada para de funcionar imediatamente.
- Um saldo único
- Chamadas à API gastam os créditos do dono da chave, o mesmo saldo usado pelo estúdio. Limites do plano por geração também se aplicam.
- URLs de mídia
- Imagens, vídeos e áudios que você enviar devem ser URLs https públicas que carreguem sem cookies ou login.
Listar modelos
/api/v1/modelsTodos os modelos que a API oferece, com seus modos, durações, resoluções, proporções, suporte a áudio, limites de referência e o menor preço em créditos. Use para criar um seletor de modelos em vez de codificar opções fixas.
Requisição
curl https://novamotions.com/api/v1/models \
-H "Authorization: Bearer $API_KEY"Resposta
{
"object": "list",
"data": [
{
"slug": "seedance-2-pro",
"name": "Seedance 2.0 Pro",
"kind": "video",
"endpoint": "/api/v1/videos",
"available": true,
"modes": [
"text-to-video",
"image-to-video",
"reference-to-video"
],
"durations": [
4,
5,
6,
8,
10,
12,
15
],
"default_duration": 5,
"resolutions": [
"480p",
"720p",
"1080p",
"4K"
],
"aspect_ratios": [
"16:9",
"9:16",
"1:1",
"4:3",
"3:4",
"21:9"
],
"audio": {
"supported": true,
"extra_credits": 20
},
"references": {
"images": 9,
"videos": 3,
"audio": 3,
"end_frame": true
},
"max_count": 4,
"prompt_max_length": 10000,
"from_credits": 35
}
]
}Verificar saldo
/api/v1/balanceOs créditos que o dono da chave pode gastar agora, divididos em grupos com suas datas de expiração, além do plano atual.
Requisição
curl https://novamotions.com/api/v1/balance \
-H "Authorization: Bearer $API_KEY"Resposta
{
"object": "balance",
"balance": 1175,
"never_expiring": 375,
"next_expiry": "2026-11-17T00:00:00.000Z",
"pools": [
{
"source": "subscription",
"remaining": 800,
"granted": 2000,
"expires_at": "2026-11-17T00:00:00.000Z"
},
{
"source": "topup",
"remaining": 375,
"granted": 375,
"expires_at": null
}
],
"plan": {
"name": "Pro",
"status": "active",
"cycle": "monthly",
"renews_or_ends_at": "2026-11-14T00:00:00.000Z"
}
}Criar vídeo
/api/v1/videosTexto para vídeo, imagem para vídeo (um quadro inicial e opcionalmente um quadro final) ou referência para vídeo (imagens, clipes e áudio que guiam o resultado). O modo é escolhido pelos inputs quando omitido.
Parâmetros
modelstringObrigatórioIdentificador do modelo do endpoint de modelos.promptstringObrigatórioO que deve acontecer no clipe. Opcional para imagem-para-vídeo, onde o quadro inicial é o guia.modestringOpcionaltexto-para-vídeo, imagem-para-vídeo ou referência-para-vídeo. Escolhido pelos seus inputs quando omitido.durationintegerOpcionalDuração do clipe em segundos. Deve ser uma das durações do modelo, caso contrário o padrão é usado.resolutionstringOpcionalResolução de saída como 720p ou 1080p, da lista do modelo.aspect_ratiostringOpcional16:9, 9:16, 1:1, 4:3, 3:4 ou 21:9, da lista do modelo. Padrão é 16:9.audiobooleanOpcionalGere uma trilha sonora com diálogo, efeitos e ambiente nos modelos que suportam. Adiciona 20 créditos. Padrão é falso.image_urlstring (URL)OpcionalQuadro inicial para imagem para vídeo.end_image_urlstring (URL)OpcionalQuadro final, em modelos que suportam primeiro e último quadro.reference_image_urlsstring[]OpcionalImagens de referência para referência para vídeo, até o limite do modelo.reference_video_urlsstring[]OpcionalClipes de referência para referência para vídeo, até o limite do modelo.reference_audio_urlsstring[]OpcionalÁudio que guia a trilha sonora, até o limite do modelo.countintegerOpcionalQuantos vídeos criar a partir do mesmo pedido, de 1 a 4. Cada um é uma tarefa separada e cobrada separadamente.seedintegerOpcionalSemente fixa para resultados repetíveis. Cada item extra em um lote recebe a próxima semente.
Requisição
curl -X POST https://novamotions.com/api/v1/videos \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-pro",
"prompt": "Um movimento lento de câmera por uma rua neon chuvosa à noite, reflexos no asfalto molhado, cinematográfico",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "16:9"
}'Resposta
{
"tasks": [
{
"id": "cmtask8k2x0001ab7c9d0e1f2",
"status": "queued",
"credits": 44,
"url": "https://novamotions.com/api/v1/tasks/cmtask8k2x0001ab7c9d0e1f2"
}
],
"credits_charged": 44,
"balance": 1131
}Criar imagens
/api/v1/imagesTexto para imagem, ou editar uma imagem existente com um prompt. Peça até quatro imagens por requisição, cada uma é uma tarefa separada.
Parâmetros
modelstringObrigatórioIdentificador do modelo do endpoint de modelos.promptstringObrigatórioO que a imagem deve mostrar, ou como alterar a imagem que você fornece.modestringOpcionaltexto-para-imagem ou edição de imagem. Escolhido a partir das suas entradas se omitido.resolutionstringOpcional1K, 2K ou 4K, da lista do modelo.aspect_ratiostringOpcionalProporção da imagem da lista do modelo, incluindo Automático em modelos que suportam.image_urlstring (URL)OpcionalA imagem a ser editada. Obrigatório para edição de imagem.reference_image_urlsstring[]OpcionalImagens de referência extras para uma edição, até o limite do modelo.countintegerOpcionalImagens por prompt, de 1 a 4. Cada uma é uma tarefa separada.seedintegerOpcionalSemente fixa para resultados repetíveis. Cada item extra em um lote recebe a próxima semente.
Requisição
curl -X POST https://novamotions.com/api/v1/images \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "Foto de produto em estúdio de uma xícara de cerâmica sobre carvalho, luz suave da janela, profundidade de campo rasa",
"resolution": "1K",
"aspect_ratio": "1:1",
"count": 1
}'Resposta
{
"tasks": [
{
"id": "cmtask8k2x0001ab7c9d0e1f2",
"status": "queued",
"credits": 3,
"url": "https://novamotions.com/api/v1/tasks/cmtask8k2x0001ab7c9d0e1f2"
}
],
"credits_charged": 3,
"balance": 1172
}Criar música
/api/v1/musicUma música completa a partir de uma descrição, com suas próprias letras ou instrumental.
Parâmetros
modelstringObrigatórioIdentificador do modelo do endpoint de modelos.promptstringObrigatórioGênero, humor, instrumentos e ritmo da música.durationintegerOpcionalDuração da música em segundos, das durações do modelo.lyricsstringOpcionalSuas próprias letras. Omitir para deixar o modelo escrevê-las.instrumentalbooleanOpcionalCriar uma música sem vocais. Padrão é falso.
Requisição
curl -X POST https://novamotions.com/api/v1/music \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "ai-music",
"prompt": "Lo-fi hip hop quente com piano suave, estalo de vinil e groove relaxado de madrugada",
"duration": 60,
"instrumental": false
}'Resposta
{
"tasks": [
{
"id": "cmtask8k2x0001ab7c9d0e1f2",
"status": "queued",
"credits": 11,
"url": "https://novamotions.com/api/v1/tasks/cmtask8k2x0001ab7c9d0e1f2"
}
],
"credits_charged": 11,
"balance": 1164
}Obter tarefa
/api/v1/tasks/{id}Consulte uma tarefa pelo seu id. Quando o status for concluído, output_url aponta para o arquivo finalizado. Consultas usam o limite de leitura, então não consomem seu orçamento de envio.
Requisição
curl https://novamotions.com/api/v1/tasks/cmtask8k2x0001ab7c9d0e1f2 \
-H "Authorization: Bearer $API_KEY"Resposta
{
"id": "cmtask8k2x0001ab7c9d0e1f2",
"object": "task",
"kind": "video",
"model": "seedance-2-pro",
"mode": "text-to-video",
"status": "succeeded",
"progress": 100,
"prompt": "Um movimento lento de câmera por uma rua neon chuvosa à noite, reflexos no asfalto molhado, cinematográfico",
"params": {
"duration": 5,
"resolution": "720p",
"aspect_ratio": "16:9",
"audio": false,
"seed": null
},
"output_url": "https://novamotions.com/uploads/videos/2026/10/example.mp4",
"thumbnail_url": "https://novamotions.com/uploads/videos/2026/10/example.jpg",
"width": 1280,
"height": 720,
"duration_seconds": 5,
"credits": 44,
"refunded": false,
"error": null,
"created_at": "2026-10-18T09:30:00.000Z",
"completed_at": "2026-10-18T09:31:12.000Z"
}Listar tarefas
/api/v1/tasksTarefas criadas pela API nos últimos 30 dias, da mais nova para a mais antiga, com o mesmo formato de uma tarefa única. Use next_cursor como cursor para carregar a próxima página.
Parâmetros
limitintegerOpcionalResultados por página, de 1 a 50. Padrão é 20.cursorstringOpcionalO valor next_cursor da página anterior.statusstringOpcionalApenas tarefas com este status: na fila, em execução, concluída ou falhou.
Requisição
curl https://novamotions.com/api/v1/tasks?limit=20 \
-H "Authorization: Bearer $API_KEY"Resposta
{
"object": "list",
"data": [
{
"id": "cmtask8k2x0001ab7c9d0e1f2",
"object": "task",
"kind": "video",
"model": "seedance-2-pro",
"mode": "text-to-video",
"status": "succeeded",
"progress": 100,
"prompt": "Um movimento lento de câmera por uma rua neon chuvosa à noite, reflexos no asfalto molhado, cinematográfico",
"params": {
"duration": 5,
"resolution": "720p",
"aspect_ratio": "16:9",
"audio": false,
"seed": null
},
"output_url": "https://novamotions.com/uploads/videos/2026/10/example.mp4",
"thumbnail_url": "https://novamotions.com/uploads/videos/2026/10/example.jpg",
"width": 1280,
"height": 720,
"duration_seconds": 5,
"credits": 44,
"refunded": false,
"error": null,
"created_at": "2026-10-18T09:30:00.000Z",
"completed_at": "2026-10-18T09:31:12.000Z"
}
],
"next_cursor": null
}Status das tarefas
Uma tarefa passa de na fila para em execução e termina como concluída ou falhou. Pare de consultar em qualquer estado final.
queued- Aceita e aguardando uma vaga para renderização. Continue consultando.
running- Renderizando agora. progresso vai de 0 a 99.
succeeded- Concluído. output_url e thumbnail_url apontam para os arquivos finalizados.
failed- Terminou sem resultado. error explica o motivo e refunded é true, os créditos voltam para seu saldo.
Códigos de erro
Todo erro tem o mesmo formato. Baseie-se no código e mostre a mensagem para o usuário. Uma tarefa aceita pode falhar depois, então verifique seu status ao consultar.
{
"error": {
"code": "insufficient_credits",
"message": "Not enough credits for this request. Top up or renew your plan, then retry.",
"needed": 44,
"balance": 14
}
}- 400
invalid_jsonO corpo não é um objeto JSON. - 401
unauthorizedSem chave Bearer no cabeçalho Authorization. - 401
invalid_api_keyA chave não existe ou está malformada. - 401
key_revokedA chave foi revogada. Crie uma nova. - 402
insufficient_creditsCréditos insuficientes para esta solicitação. A resposta inclui necessário e saldo. - 403
plan_limit_exceededA solicitação ultrapassa o limite por geração do plano. Reduza a duração ou resolução. - 403
account_suspendedA conta que possui a chave está suspensa. - 403
api_disabledA API está desativada no momento. - 404
not_foundA tarefa ou endpoint não existe nesta conta. - 404
model_not_foundNenhum modelo com este identificador. Verifique o endpoint de modelos. - 409
too_many_runningEsta conta já tem 3 tarefas em execução. Aguarde a conclusão de uma. - 422
invalid_requestUm campo está faltando ou tem tipo errado. details lista cada problema. - 422
wrong_endpointO modelo pertence a outro endpoint, por exemplo, um modelo de imagem enviado para vídeos. - 422
invalid_modeO modo não é reconhecido por este endpoint. - 422
mode_not_supportedO modelo não suporta este modo. - 422
prompt_requiredEste modo precisa de um prompt. - 422
image_requiredEste modo precisa de image_url. - 429
rate_limitedMuitas solicitações. Aguarde os segundos indicados em Retry-After e tente novamente. - 500
internal_errorAlgo quebrou do nosso lado. Tente novamente em instantes. - 503
service_busyEstamos com capacidade máxima no momento. Tente novamente em alguns minutos.
Créditos e reembolsos
Cobrado uma vez, ao enviar
Cada tarefa custa o mesmo que as mesmas configurações no estúdio. A resposta do envio retorna credits_charged e seu novo saldo. Áudio em vídeo adiciona 20 créditos.
Tarefas falhadas são reembolsadas integralmente
Se uma tarefa falhar por qualquer motivo, todos os seus créditos retornam para os pools de onde vieram e a tarefa mostra refunded como true. Nada a reclamar.
Limites do plano se aplicam
O limite por geração do seu plano também se aplica às tarefas da API. Créditos que expiram primeiro são usados primeiro, créditos de recarga por último.
Limites de taxa
Os limites contam por chave em um minuto móvel. Se ultrapassar, você recebe HTTP 429 com um cabeçalho Retry-After em segundos. Cada resposta traz os cabeçalhos X-RateLimit para você desacelerar antes disso.
- Enviar
- 30 por minuto
- Criar vídeos, imagens e músicas.
- Ler
- 120 por minuto
- Tarefas, saldo e modelos. Contados separadamente dos envios.
- Execuções simultâneas
- 3
- Tarefas por conta renderizando ao mesmo tempo.
HTTP/1.1 429 Too Many Requests
Retry-After: 42
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 42Modelos
Os modelos que você pode usar hoje com seus slugs e o menor preço. O endpoint de modelos retorna a mesma lista com todas as opções.
- Seedance 2.5
seedance-2-5Vídeo45 créditos - Seedance 2.0 Pro
seedance-2-proVídeo35 créditos - Seedance 2.0 Mini
seedance-2-miniVídeo24 créditos - Wan 3.0
wan-3Vídeo46 créditos - MiniMax H3
minimax-h3Vídeo30 créditos - Kling 3
kling-3Vídeo30 créditos - Seedance 1.5 Pro
seedance-1-5-proVídeo31 créditos - Seedance 1.0
seedance-1Vídeo32 créditos - Kling O3
kling-o3Vídeo46 créditos - Kling 2.6
kling-2-6Vídeo41 créditos - Wan 2.7
wan-2-7Vídeo35 créditos - Wan
wanVídeo32 créditos - Grok
grok-videoVídeo47 créditos - Veo 3
veo-3Vídeo42 créditos - GPT Image 2.5
gpt-image-2-5Imagem4 créditos - GPT Image 2
gpt-image-2Imagem3 créditos - Seedream 5 Pro
seedream-5-proImagem4 créditos - Seedream 5
seedream-5Imagem3 créditos - Nano Banana Pro
nano-banana-proImagem5 créditos - Nano Banana 2
nano-banana-2Imagem3 créditos - Nano Banana 2 Lite
nano-banana-2-liteImagem2 créditos - AI Music
ai-musicMúsica6 créditos
Pronto para criar?
Crie uma chave na sua conta e envie sua primeira solicitação em um minuto.