Gere imagem, vídeo e voz
Escolha um modelo, combine o preço, gere a partir de texto ou de imagens e use o resultado no editor ou num post.
Uma rota gera imagem, vídeo ou voz com os modelos de vários fabricantes (Veo, Kling, Seedance, Wan, Nano Banana, GPT Image, vozes da ElevenLabs e outros). Você cria a geração, consulta até ficar pronta e usa o resultado.
Gerar sempre cobra, mesmo em uso liberado. Mostre à pessoa o modelo e o preço e espere o sim antes de chamar POST /generations. Se falhar, os créditos voltam sozinhos.
Escolha o modelo
curl https://api.cut.pro/api/v1/generations/models \
-H "X-Api-Key: $CUTPRO_API_KEY"{
"models": [
{
"id": "google/veo-3.1-lite",
"name": "Veo 3.1 Lite",
"kind": "video",
"modes": ["text", "image", "frames"],
"resolutions": ["720p", "1080p"],
"seconds": [4, 6, 8],
"aspect_ratios": ["16:9", "9:16"],
"audio": "always",
"max_images": 2,
"typical_seconds": 74,
"success_rate": 0.97,
"prices": [{ "mode": "text", "resolution": "720p", "credits": 12, "silent_credits": null }]
}
],
"presets": { "video": [{ "id": "balanced", "model": "google/veo-3.1-lite", "resolution": "720p" }] },
"prompt_max": 4000,
"max_running": 4,
"improve_credits": 1
}Os preços acompanham o custo de cada modelo e mudam sem aviso: leia esta rota logo antes de gerar.
| Campo | Para que serve |
|---|---|
modes | text (só prompt), image (anima uma imagem), frames (do primeiro ao último quadro), references (pega pessoa, produto ou estilo das imagens, ou as edita). |
prices[].credits | Por segundo de vídeo, por imagem ou por 1.000 caracteres de voz. silent_credits é o preço do vídeo sem som. |
audio | always tem som sempre; optional aceita audio: false, em geral mais barato; null é mudo. |
refuses | O que o modelo se recusa a mostrar: real_faces, minors, public_figures. |
typical_seconds, success_rate | Tempo típico e taxa de sucesso das últimas semanas. null até rodarem gerações suficientes. |
presets | O modelo recomendado por tipo e nível (fast, balanced, best). Use quando a pessoa não escolhe. |
max_running | Quantas gerações o workspace roda ao mesmo tempo. |
Envie as imagens, se o modo pedir
curl -X POST https://api.cut.pro/api/v1/generations/images \
-H "X-Api-Key: $CUTPRO_API_KEY" \
-F "image=@produto.jpg"{ "id": "7412960011002233" }mode | image_ids |
|---|---|
text | nenhuma |
image | uma, o primeiro quadro |
frames | duas: primeiro e último quadro |
references | até max_images do modelo |
Uma imagem gerada pela Cut.Pro não precisa de upload: o output.image_id dela vale igual.
Gere
curl -X POST https://api.cut.pro/api/v1/generations \
-H "X-Api-Key: $CUTPRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"kind": "video",
"model": "google/veo-3.1-lite",
"mode": "text",
"resolution": "720p",
"prompt": "um cachorro surfando ao pôr do sol",
"seconds": 8,
"aspect_ratio": "9:16",
"credits": 96
}'{ "id": "7412960099887766", "status": "processing", "credits_charged": 96 }credits é o total que a pessoa aceitou: credits do preço vezes seconds num vídeo (12 × 8 = 96). Se o preço mudou, nada é cobrado e a resposta é 409 PRICE_CHANGED com o novo total em extra.credits. Mostre o novo valor e peça o sim de novo.
- Vídeo:
secondsé obrigatório e tem de ser um dossecondsdo modelo. - Imagem: sem
seconds. - Voz (
kind: "speech",mode: "text"): lê opromptpalavra por palavra navoiceescolhida entre asvoicesdo modelo. Semaspect_ratio. Sai um MP3. Custacreditsvezes os caracteres dopromptdividido por 1.000, arredondado para cima.
Acompanhe
curl https://api.cut.pro/api/v1/generations/7412960099887766 \
-H "X-Api-Key: $CUTPRO_API_KEY"Consulte a cada 10 segundos enquanto status for processing. expected_seconds diz quanto o modelo costuma levar.
ready:output.urlé a prévia (link de 6 horas, MP3 numa voz) eoutput.thumbnail_urla miniatura.failed: o motivo está emerror_codee os créditos já voltaram.
Melhore o prompt
POST /generations/improve reescreve um pedido curto do jeito que o modelo escolhido entende melhor, no idioma do pedido. Não gera nada. Cobra improve_credits e devolve se falhar. Mostre o texto novo à pessoa antes de gerar com ele.
curl -X POST https://api.cut.pro/api/v1/generations/improve \
-H "X-Api-Key: $CUTPRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "model": "google/veo-3.1-lite", "mode": "text", "prompt": "um cachorro surfando ao pôr do sol", "seconds": 8 }'Use o resultado
| Rota | O que faz |
|---|---|
GET /generations/{id}/download | Link para o arquivo em qualidade total, válido por 6 horas. Depois de baixar, não dá mais para pedir os créditos de volta. |
POST /generations/{id}/edit | Abre um vídeo pronto no editor e devolve o edit_id. Use em POST /posts ou POST /renders. Chamar de novo devolve o mesmo. |
GET /generations | Lista as gerações, da mais nova à mais antiga. Filtre com kind. |
DELETE /generations/{id} | Tira da lista e apaga o arquivo da biblioteca. Não vale para uma em processing. |
Avalie ou peça os créditos de volta
Avaliar é grátis e ajuda a escolher modelos:
curl -X POST https://api.cut.pro/api/v1/generations/7412960099887766/feedback \
-H "X-Api-Key: $CUTPRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "vote": "down", "reason": "bad_motion" }'vote é up, down ou null (limpa). Com down, reason é um de prompt_ignored, defects, bad_motion, not_realistic, speech_wrong (palavra, nome ou número dito errado) ou other. Um down cancela os posts desse resultado que ainda estão agendados.
Se o resultado não serve, peça o reembolso com o mesmo reason e uma note curta:
curl -X POST https://api.cut.pro/api/v1/generations/7412960099887766/refund \
-H "X-Api-Key: $CUTPRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "reason": "defects", "note": "As mãos saem deformadas em todos os planos." }'A equipe analisa. refund_status vai de requested para approved ou denied.
O reembolso vale uma vez por geração, só em ready, e nunca depois de baixar ou postar: 409 REFUND_AFTER_DOWNLOAD e 409 REFUND_AFTER_POST.
Erros
| Code | Quando |
|---|---|
INSUFFICIENT_CREDITS | Saldo insuficiente. extra.top_up_url leva à recarga; extra.is_owner diz se quem chamou pode recarregar. |
PRICE_CHANGED | O preço mudou. O novo total está em extra.credits. |
TOO_MANY_RUNNING | O workspace já tem max_running gerações rodando. Espere uma terminar. |
MODEL_UNAVAILABLE, MODE_UNSUPPORTED, RESOLUTION_INVALID, SECONDS_INVALID, RATIO_INVALID, IMAGES_INVALID, VOICE_INVALID | O pedido não bate com o que o modelo aceita. Confira em GET /generations/models. |
IMAGE_NOT_FOUND | Um image_ids não é deste workspace. |
Quando a geração termina em failed, error_code diz por quê: SAFETY_BLOCKED, COPYRIGHT_BLOCKED e REAL_FACES_BLOCKED são recusas do modelo pelo conteúdo (mude o pedido ou o modelo); TIMEOUT e MEDIA_FAILED valem nova tentativa.
Transcreva áudio e vídeo
Suba um áudio ou vídeo, transcreva com tempo por frase e, se quiser, quem está falando. Baixe em JSON, SRT, VTT ou texto.
Crie personas e troque a pessoa do vídeo
Crie uma pessoa realista a partir de características, fotos do rosto ou um personagem pronto, e coloque ela em qualquer vídeo ou foto de produto.