Cut.ProDocs
Guias

Personas IA

Crie uma pessoa realista e coloque ela em qualquer vídeo

Uma persona é uma pessoa realista feita a partir de características (idade, cabelo, roupa, ...) ou de fotos do próprio rosto do usuário. Depois de salva, ela substitui a pessoa de qualquer vídeo da biblioteca, mantendo a cena, a câmera, o movimento e o som.

Fotos e vídeos rodam em segundo plano: você cria e depois consulta. Toda cobrança é estornada sozinha quando uma geração falha.

Personas sempre consomem créditos, mesmo num workspace com uso gratuito. Leia os preços de GET /personas/catalog em vez de fixá-los no código.

GET /personas/catalog lista todas as opções de características, os padrões, os preços e os limites do vídeo de origem.

curl https://api.cut.pro/api/v1/personas/catalog \
  -H "X-Api-Key: $CUTPRO_API_KEY"

Crie a persona

Mande uma opção por característica em chips. A foto começa a ser gerada e a chamada responde 202.

curl -X POST https://api.cut.pro/api/v1/personas \
  -H "X-Api-Key: $CUTPRO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "chips": { "vibe": "natural", "gender": "female", "age": "25_34", "origin": "latin", "skin": "medium", "eyes": "brown", "hair_style": "long_wavy", "hair_color": "brown", "facial_hair": "none", "face": "none", "body": "average", "outfit": "basic", "accessory": "none", "mark": "freckles" } }'

Para manter a identidade de uma pessoa real, envie antes fotos do próprio rosto do usuário (multipart/form-data, o usuário precisa ter 18 anos ou mais) e passe os ids em face_ids. Só as características de face_photo_groups continuam valendo.

curl -X POST https://api.cut.pro/api/v1/personas/faces \
  -H "X-Api-Key: $CUTPRO_API_KEY" \
  -F "photo=@selfie.jpg" \
  -F "own_face_adult=true"

Acompanhe, ajuste e salve

Consulte GET /personas/{id} a cada 5 segundos até image_status ser ready. POST /personas/{id}/regenerate tenta de novo, com novos chips ou com uma note de uma linha, como make the jacket red. Quando a foto estiver boa, salve:

curl -X POST https://api.cut.pro/api/v1/personas/PERSONA_ID/save \
  -H "X-Api-Key: $CUTPRO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "name": "Ana" }'

Personagens prontos

GET /personas/presets lista personagens com a foto já pronta, de esquisitos a criadores do dia a dia. POST /personas/presets/{presetId} transforma um deles numa persona sem custo, pronta para nomear com POST /personas/{id}/save e usar em vídeos. Para marcar favoritos: PUT /personas/presets/{presetId}/favorite com { "favorite": true }.

Versões

Uma persona salva continua podendo ser gerada de novo ou ajustada com POST /personas/{id}/regenerate. Cada foto que termina vira uma versão nova e passa a ser a atual; as anteriores ficam em versions, no GET /personas/{id}. Para voltar a uma delas, sem custo:

curl -X POST https://api.cut.pro/api/v1/personas/PERSONA_ID/versions/VERSION_ID/restore \
  -H "X-Api-Key: $CUTPRO_API_KEY"

Cada vídeo fica ligado à versão de que saiu (version_id). Vídeos novos usam a versão atual, a não ser que você mande version_id em POST /personas/{id}/videos; GET /personas/{id}/videos?version_id=... lista só os vídeos de uma versão. Os vídeos já feitos não mudam.

Para nos dizer o que ficou bom, avalie cada foto com POST /personas/{id}/versions/{versionId}/feedback e cada vídeo com POST /personas/{id}/videos/{videoId}/feedback: { "vote": "up" }, ou { "vote": "down", "reason": "..." } com o motivo. A avaliação é gratuita.

Envie o vídeo e veja o preço

POST /personas/sources/upload devolve um media_id e uma URL assinada. Faça o PUT dos bytes nela, chame POST /personas/sources/upload/complete e depois peça o preço. Um vídeo que já está na biblioteca dispensa o envio.

quality escolhe a qualidade: standard (padrão) segue as características da persona e é a mais barata, até 15 segundos em MP4; high também segue as fotos da persona, deixa o rosto mais fiel e aceita até 30 segundos, por um preço maior. Para uma persona feita com fotos do rosto, prefira high. replace diz o que muda na pessoa principal do vídeo: head troca só a cabeça e o cabelo e mantém o corpo e a roupa, person (padrão) troca a pessoa inteira. Os preços e limites de cada qualidade estão em GET /personas/catalog.

curl "https://api.cut.pro/api/v1/personas/swap/quote?media_id=MEDIA_ID&quality=standard&replace=head" \
  -H "X-Api-Key: $CUTPRO_API_KEY"
Resposta
{ "media_id": "7412908365112823", "quality": "standard", "replace": "head", "seconds": 8.4, "credits": 81 }

Comece o vídeo

type é o tipo de vídeo, e swap é o que existe hoje. Mande os credits que vieram do preço, com a mesma quality e o mesmo replace. Se o servidor medir um preço diferente, ele responde 409 PRICE_CHANGED com o valor certo em extra, e nada é cobrado.

curl -X POST https://api.cut.pro/api/v1/personas/PERSONA_ID/videos \
  -H "X-Api-Key: $CUTPRO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "type": "swap", "media_id": "7412908365112823", "quality": "standard", "replace": "head", "credits": 81 }'

Consulte GET /personas/{id}/videos/{videoId} a cada 10 segundos. Quando status for ready, download_url tem o MP4 e o edit_id vai direto para POST /renders ou POST /posts.

Créditos insuficientes

Toda chamada que cobra pode responder 402 INSUFFICIENT_CREDITS. extra.credits_needed diz quanto falta, extra.top_up_url é a página onde se compram créditos, e extra.is_owner diz se o usuário da chave pode comprar para este workspace ou precisa pedir ao dono.

Nesta página