Você também pode pós-processar a saída. A tarefa é executada em segundo plano. Para saber quanto tempo uma tarefa geralmente leva, consulte Tempos de processamento.
Request
POST
/openapi/v1/animations
# Animate a rigged model with required params onlycurlhttps://api.meshy.ai/openapi/v1/animations \-XPOST \-H"Authorization: Bearer ${YOUR_API_KEY}" \-H'Content-Type: application/json' \-d'{ "rig_task_id": "018b314a-a1b5-716d-c222-2f1776f7f579", "action_id": 92 }'# Apply several preset actions and get one file with one clip per actioncurlhttps://api.meshy.ai/openapi/v1/animations \-XPOST \-H"Authorization: Bearer ${YOUR_API_KEY}" \-H'Content-Type: application/json' \-d'{ "rig_task_id": "018b314a-a1b5-716d-c222-2f1776f7f579", "action_ids": [10, 25, 92] }'# Apply a generated Text to Motion clip instead of a preset actioncurlhttps://api.meshy.ai/openapi/v1/animations \-XPOST \-H"Authorization: Bearer ${YOUR_API_KEY}" \-H'Content-Type: application/json' \-d'{ "rig_task_id": "018b314a-a1b5-716d-c222-2f1776f7f579", "motion_task_id": "018c425b-b2c6-727e-d333-3c1887i9h791" }'# With post-processing to change FPScurlhttps://api.meshy.ai/openapi/v1/animations \-XPOST \-H"Authorization: Bearer ${YOUR_API_KEY}" \-H'Content-Type: application/json' \-d'{ "rig_task_id": "018b314a-a1b5-716d-c222-2f1776f7f579", "action_id": 92, "post_process": { "operation_type": "change_fps", "fps": 24 } }'
Response
{"result":"018c425b-b2c6-727e-d333-3c1887i9h791"}
Parâmetros
Name
rig_task_id
Type
string
Obrigatório
Description
O ID da tarefa de Rigging cujo personagem será animado, obtido em POST /openapi/v1/rigging. A tarefa deve ter o status SUCCEEDED.
Envie exatamente um dos parâmetros action_id, action_ids e motion_task_id.
Name
action_id
Type
integer
Obrigatório
Description
Obrigatório, a menos que você envie action_ids ou motion_task_id. O ID da animação predefinida a ser aplicada. Para a lista completa de animações, consulte a referência da Biblioteca de animações ou Listar animações.
Name
action_ids
Type
array of integers
Obrigatório
Description
Obrigatório, a menos que você envie action_id ou motion_task_id. Os IDs de 1 a 10 animações predefinidas a serem aplicadas de uma vez, sem repetições. Mais de 10 IDs, ou um ID repetido, retorna 400. Para os IDs, consulte a referência da Biblioteca de animações.
A Meshy retorna um arquivo com um clipe de animação por ação, o que se adequa a uma máquina de estados em um motor de jogo. A Meshy cobra por cada ação na lista. Consulte Preços.
Uma lista com um único ID funciona da mesma forma que enviar esse ID como action_id.
Name
motion_task_id
Type
string
Obrigatório
Description
Obrigatório, a menos que você envie action_id ou action_ids. O ID de uma tarefa Text to Motion cujo clipe será aplicado em vez de uma ação predefinida. A tarefa deve ter o status SUCCEEDED, e o rig deve ser bípede.
A Meshy retarget (reaplica) o clipe sobre o personagem rigado. Ela copia o clipe ao criar esta tarefa, então esta tarefa não é afetada se a tarefa de Text to Motion expirar depois ou se você excluí-la. A Meshy mantém os arquivos da tarefa de Text to Motion por 3 dias, então aplique o clipe antes desse prazo.
Name
post_process
Type
object
Description
Pós-processamento para a saída da animação. Omita para obter os arquivos de animação padrão.
Com motion_task_id, o retarget pode produzir uma animação apenas em GLB. Se você enviar post_process e nenhum arquivo FBX estiver disponível, a tarefa falha com um task_error, e a Meshy reembolsa seus créditos. Sem post_process, a tarefa é bem-sucedida, e animation_fbx_url fica vazio.
Aplica-se somente quando post_process is set
Name
operation_type
Type
string
Description
A operação a ser executada. Sem ela, a Meshy não cria nenhum arquivo extra. Um valor fora da lista a seguir retorna 400.
Valores disponíveis:
change_fps: altera a taxa de quadros para fps
fbx2usdz: converte a animação para USDZ
extract_armature: extrai o armature como um arquivo FBX
Name
fps
Type
integer
padrão 30
Description
A taxa de quadros para a qual alterar, uma de 24, 25, 30 ou 60. Aplica-se apenas quando operation_type é change_fps. Qualquer outro valor retorna 400.
Com action_ids, a tarefa retorna um arquivo mesclado em vez de um arquivo por ação. animation_glb_url e animation_fbx_url apontam, cada um, para um único arquivo que contém todas as ações solicitadas como clipes separados. Nesse arquivo:
Ordem dos clipes: a ordem do array action_ids, e não a ordem numérica dos IDs.
Nomes dos clipes: o nome da animação na biblioteca. Esses nomes correspondem aos nomes que você obtém ao exportar todas as animações de um personagem como um único arquivo pelo aplicativo web da Meshy. Se dois IDs solicitados tiverem o mesmo nome de clipe, a Meshy adiciona o action_id ao mais recente para manter os nomes únicos.
Pós-processamento: a Meshy o aplica ao arquivo mesclado, não a cada clipe individualmente.
Retornos
O campo result da resposta contém o ID da nova tarefa de Animação.
Modos de falha
Name
400 - Bad Request
Description
A requisição não pode ser executada. A mensagem de erro indica qual problema foi encontrado. Por exemplo:
Parâmetro ausente: rig_task_id está ausente, ou nenhum dos parâmetros action_id, action_ids e motion_task_id foi enviado.
Parâmetros conflitantes: A requisição tem mais de um dos parâmetros action_id, action_ids e motion_task_id. Envie apenas um.
Tarefa de rig inválida: rig_task_id não é um ID de tarefa válido, não é uma tarefa de Rigging, ou aponta para uma tarefa que não foi bem-sucedida.
ID de ação inválido: Um action_id, ou uma entrada em action_ids, não é uma animação válida.
Ações em excesso: action_ids tem mais de 10 IDs.
Ações duplicadas: action_ids tem o mesmo ID mais de uma vez.
Tarefa de movimento não pronta: A tarefa de motion_task_id ainda não atingiu o status SUCCEEDED.
Rig não suportado: motion_task_id requer um rig bípede, e a Meshy rejeita um rig quadrúpede.
Corrija a requisição e envie-a novamente. Consulte Erros.
Name
401 - Unauthorized
Description
A chave de API está ausente ou é inválida. Verifique o cabeçalho Authorization.
Name
402 - Payment Required
Description
Por exemplo:
Créditos insuficientes: A conta não tem créditos suficientes para esta tarefa, ou a conta atingiu um limite de crédito. Verifique seu saldo de créditos e tente novamente.
Plano gratuito: Criar uma tarefa requer um plano pago. Atualize seu plano nas configurações de assinatura e tente novamente.
Name
403 - Forbidden
Description
A tarefa referenciada por rig_task_id é um modelo de baixo-relevo, que este endpoint não pode animar. A mensagem é This model type does not support this operation. Rig um modelo diferente.
Name
404 - Not Found
Description
A Meshy não consegue encontrar uma tarefa ou arquivo que a requisição precisa. Um destes se aplica:
A Meshy não consegue encontrar a tarefa rig_task_id entre suas tarefas. Verifique o ID.
A Meshy excluiu os arquivos da tarefa rig_task_id após seu expires_at. Rig o personagem novamente.
A Meshy não consegue encontrar a tarefa motion_task_id. Verifique o ID.
O clipe de movimento expirou, pois a Meshy mantém os arquivos de uma tarefa de Text to Motion por 3 dias. Crie outra tarefa de Text to Motion.
Name
429 - Too Many Requests
Description
Você excedeu seu limite de taxa. Aguarde e tente novamente. Consulte Limites de taxa.
// 200 OK on success, with an empty body.//// 409 Conflict when the task is IN_PROGRESS. The task keeps running:{"message":"Task is IN_PROGRESS and cannot be deleted. Credits for a task the worker has already started are not refundable; wait for it to reach SUCCEEDED, FAILED or CANCELED, then delete it."}
Parâmetros de caminho
Name
id
Type
path
Description
O ID da tarefa a ser excluída.
Status da tarefa
Excluir uma tarefa PENDING reembolsa os créditos usados na criação dela.
Uma tarefa IN_PROGRESS não pode ser excluída. A requisição retorna 409 Conflict,
e a tarefa continua em execução. Meshy não reembolsa uma tarefa que já foi iniciada,
então excluí-la custaria tanto os créditos quanto o resultado. Aguarde até que ela
alcance SUCCEEDED, FAILED ou CANCELED, e então a exclua.
Excluir uma tarefa em um status final (SUCCEEDED, FAILED ou CANCELED)
não reembolsa seus créditos.
Retornos
200 OK quando a tarefa é excluída, ou 409 Conflict quando a tarefa está
IN_PROGRESS.
Retorna uma lista paginada das suas tarefas de Animação, da mais recente para a mais antiga. Para navegar pela lista, use page_num e page_size.
Tarefas que você cria por meio da API não aparecem em My Assets no aplicativo web, então você as gerencia pela API. Para encontrar uma tarefa cujo ID você não tem mais, use este endpoint.
// Error event exampleevent: errordata: {"status_code": 404,"message": "Task not found"}// Message event examples illustrate task progress.// These examples are shortened. Each event holds the full task object.event: messagedata: {"id": "018c425b-b2c6-727e-d333-3c1887i9h791","progress": 0,"status": "PENDING"}event: messagedata: {"id": "018c425b-b2c6-727e-d333-3c1887i9h791","progress": 50,"status": "IN_PROGRESS"}event: messagedata: { // Example of a SUCCEEDED task stream item, with the same structure as the Animation task object"id": "018c425b-b2c6-727e-d333-3c1887i9h791","type": "animate","status": "SUCCEEDED","created_at": 1747032440896,"progress": 100,"started_at": 1747032441210,"finished_at": 1747032457530,"expires_at": 1747291657530,"task_error": {"message":"" },"consumed_credits": 3,"result": {"animation_glb_url":"https://assets.meshy.ai/.../Animation_Reaping_Swing_withSkin.glb?...","animation_fbx_url":"https://assets.meshy.ai/.../Animation_Reaping_Swing_withSkin.fbx?...","processed_usdz_url":"https://assets.meshy.ai/.../processed.usdz?...","processed_armature_fbx_url":"https://assets.meshy.ai/.../processed_armature.fbx?...","processed_animation_fps_fbx_url":"https://assets.meshy.ai/.../processed_60fps.fbx?..." },"preceding_tasks": 0}
Cada evento contém o objeto de tarefa completo, no mesmo formato retornado pelo endpoint Get. Enquanto a tarefa está PENDING ou IN_PROGRESS, seus campos de resultado ainda não têm valores.
Um objeto de tarefa de Animação descreve uma animação aplicada a um personagem com rig. Ele contém o status, o progress e os arquivos de animação quando a tarefa é bem-sucedida.
O ID da tarefa. Trate-o como uma string opaca e não dependa do seu formato.
Name
type
Type
string
Description
O tipo da tarefa, sempre animate.
Name
status
Type
string
Description
O status da tarefa, um dos seguintes: PENDING, IN_PROGRESS, SUCCEEDED, FAILED ou CANCELED.
Name
progress
Type
integer
Description
Quanto da tarefa foi concluído, em porcentagem. É 0 até a tarefa começar e 100 quando ela é bem-sucedida.
Name
created_at
Type
timestamp
Description
Horário em que a tarefa foi criada, em milissegundos Unix.
Name
started_at
Type
timestamp
Description
Horário em que a tarefa começou, em milissegundos Unix. É 0 até a tarefa começar.
Name
finished_at
Type
timestamp
Description
Horário em que a tarefa terminou, em milissegundos Unix. É 0 até a tarefa terminar.
Name
expires_at
Type
timestamp
Description
Horário em que os arquivos de resultado da tarefa expiram, em milissegundos Unix.
Name
task_error
Type
object
Description
Os detalhes do erro quando a tarefa falha. Veja Erros.
Name
consumed_credits
Type
integer
Description
O número de créditos que a tarefa usou. Presente quando o status é PENDING, IN_PROGRESS ou SUCCEEDED. É 0 para uma tarefa FAILED, porque a Meshy reembolsa os créditos quando uma tarefa falha.
Name
result
Type
object
Description
URLs de download para os arquivos de animação, quando a tarefa tem o status SUCCEEDED.
Name
animation_glb_url
Type
string
Description
A animação como um arquivo GLB. Para uma tarefa criada com action_ids, esse único arquivo contém cada ação solicitada como um clipe separado.
Name
animation_fbx_url
Type
string
Description
A animação como um arquivo FBX. Para uma tarefa criada com action_ids, esse único arquivo contém cada ação solicitada como um clipe separado.
Name
processed_usdz_url
Type
string
Description
A animação processada como um arquivo USDZ.
Name
processed_armature_fbx_url
Type
string
Description
O armature processado como um arquivo FBX.
Name
processed_animation_fps_fbx_url
Type
string
Description
A animação na taxa de quadros alterada, como um arquivo FBX, por exemplo quando você usou a operação change_fps.
Name
preceding_tasks
Type
integer
Description
O número de tarefas à frente desta na fila. O valor só é significativo enquanto a tarefa está PENDING.
Retorna todas as animações da biblioteca, ordenadas por action_id. A resposta é a lista completa, sem paginação, então uma única chamada pode preencher um seletor de ações. Os filtros restringem o resultado. Para obter todas as animações, basta omiti-los.
Texto a ser pesquisado. Meshy retorna as animações cujo name ou key contém esse texto, ignorando maiúsculas/minúsculas. Meshy compara o texto literalmente, então % e _ não são caracteres curinga.
Name
category
Type
string
Description
A categoria a ser listada, como correspondência exata. Uma categoria desconhecida retorna uma lista vazia.
Valores disponíveis:
WalkAndRun
BodyMovements
DailyActions
Fighting
Dancing
Name
sub_category
Type
string
Description
A subcategoria a ser listada, como correspondência exata. Você pode enviá-la sem category. Os nomes de subcategoria não são únicos entre categorias. Por exemplo, Transitioning existe tanto em Fighting quanto em DailyActions. Então, sem category, o filtro corresponde à subcategoria em todas as categorias.
Name
action_ids
Type
string
Description
As animações a serem retornadas, como até 200 valores action_id separados por vírgula. Use isso para buscar IDs específicos em vez de navegar pela lista. Mais de 200 IDs retorna 400.
A resposta omite um ID que não corresponde a nenhuma animação. Então você também pode usar esse filtro para verificar se os IDs que você armazenou ainda estão disponíveis.
Combinando filtros
Meshy aplica os filtros em conjunto. Cada um restringe o resultado, então Meshy só retorna uma animação se ela corresponder a todos eles. Dentro de um único filtro, qualquer um de seus valores pode corresponder. Por exemplo, search corresponde a name ou key, e action_ids corresponde a qualquer ID da lista.
Então, uma combinação sem sobreposição retorna um array vazio, não um erro. A ação 92 é "Double Combo Attack", uma animação de Fighting. Por exemplo:
?action_ids=92&category=Fighting retorna a ação 92.
?action_ids=92&category=Dancing retorna [], porque não é uma animação de Dancing.
?action_ids=92&search=walk retorna [], porque seu nome não corresponde a walk.
Para obter animações específicas em qualquer categoria, envie action_ids sozinho.
Criar uma tarefa de Animação aceita todo action_id que este endpoint retorna, e este endpoint retorna todo ID que a criação aceita. Nenhum dos dois inclui animações desativadas. Se você fizer cache da biblioteca, atualize-a de tempos em tempos, para que um ID desativado não permaneça no seu seletor.
O valor a ser enviado como action_id ao criar uma tarefa de Animação. É único e estável, mas não contíguo. Animações descontinuadas deixam lacunas na numeração, então não presuma que todo ID em um intervalo seja válido.
Name
name
Type
string
Description
O nome de exibição da animação. Não é único, pois algumas animações compartilham o nome com outra variante. Para identificar uma animação, use action_id ou key.
Name
key
Type
string
Description
Um slug único e estável para a animação. Use-o quando precisar de um ID não numérico para indexar seu próprio armazenamento.
Name
category
Type
string
Description
O grupo de nível superior, por exemplo Fighting.
Name
sub_category
Type
string
Description
O grupo dentro da categoria, por exemplo AttackingwithWeapon.
Name
preview_url
Type
string
Description
URL de um GIF animado de pré-visualização da ação. Você pode exibi-lo diretamente em seu próprio seletor.