lowpoly será descontinuado em 30 de out. de 2026. Troque de modelo antes dessas datas para evitar erros nas solicitações. Ver todas as descontinuações

API de Animação

Aplique Animações a personagens com rig e liste as Animações que você pode aplicar.


POST/openapi/v1/animations

Criar uma tarefa de Animação

Cria uma tarefa de Animação, que aplica uma animação a um personagem que você rigou anteriormente. A animação pode ser uma das seguintes:

  • Uma ação predefinida da biblioteca de animações (action_id)
  • Várias ações predefinidas mescladas em um único arquivo (action_ids)
  • Um clipe de movimento gerado com a API Text to Motion (motion_task_id)

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 only
curl https://api.meshy.ai/openapi/v1/animations \
  -X POST \
  -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 action
curl https://api.meshy.ai/openapi/v1/animations \
  -X POST \
  -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 action
curl https://api.meshy.ai/openapi/v1/animations \
  -X POST \
  -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 FPS
curl https://api.meshy.ai/openapi/v1/animations \
  -X POST \
  -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_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.

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.


GET/openapi/v1/animations/:id

Obter uma tarefa de Animação

Retorna uma tarefa de Animação pelo seu ID.

Request

GET
/openapi/v1/animations/018c425b-b2c6-727e-d333-3c1887i9h791
curl https://api.meshy.ai/openapi/v1/animations/018c425b-b2c6-727e-d333-3c1887i9h791 \
  -H "Authorization: Bearer ${YOUR_API_KEY}"

Response

{
  "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/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018c425b-b2c6-727e-d333-3c1887i9h791/output/Animation_Reaping_Swing_withSkin.glb?Expires=...",
    "animation_fbx_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018c425b-b2c6-727e-d333-3c1887i9h791/output/Animation_Reaping_Swing_withSkin.fbx?Expires=...",
    "processed_usdz_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018c425b-b2c6-727e-d333-3c1887i9h791/output/processed.usdz?Expires=...",
    "processed_armature_fbx_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018c425b-b2c6-727e-d333-3c1887i9h791/output/processed_armature.fbx?Expires=...",
    "processed_animation_fps_fbx_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018c425b-b2c6-727e-d333-3c1887i9h791/output/processed_60fps.fbx?Expires=..."
  },
  "preceding_tasks": 0
}

Parâmetros

  • Name
    id
    Type
    path
    Description

    O ID da tarefa obtido na resposta de criação.

Retornos

O objeto de tarefa de Animação.


DELETE/openapi/v1/animations/:id

Excluir uma tarefa de Animação

Exclui permanentemente uma tarefa de Animação, incluindo seus modelos e dados. Você não pode desfazer uma exclusão.

Request

DELETE
/openapi/v1/animations/018b314a-a1b5-716d-c222-2f1776f7f579
curl --request DELETE \
  --url https://api.meshy.ai/openapi/v1/animations/018b314a-a1b5-716d-c222-2f1776f7f579 \
  -H "Authorization: Bearer ${YOUR_API_KEY}"

Response

// 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.


GET/openapi/v1/animations

Listar tarefas de Animação

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.

Request

GET
/openapi/v1/animations
curl "https://api.meshy.ai/openapi/v1/animations?page_num=1&page_size=20" \
-H "Authorization: Bearer ${YOUR_API_KEY}"

GET/openapi/v1/animations/:id/stream

Fazer streaming de uma tarefa de Animação

Transmite as atualizações de uma tarefa de Animação como Server-Sent Events (SSE).

Request

GET
/openapi/v1/animations/018c425b-b2c6-727e-d333-3c1887i9h791/stream
curl -N https://api.meshy.ai/openapi/v1/animations/018c425b-b2c6-727e-d333-3c1887i9h791/stream \
-H "Authorization: Bearer ${YOUR_API_KEY}"

Response Stream

// Error event example
event: error
data: {
  "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: message
data: {
  "id": "018c425b-b2c6-727e-d333-3c1887i9h791",
  "progress": 0,
  "status": "PENDING"
}

event: message
data: {
  "id": "018c425b-b2c6-727e-d333-3c1887i9h791",
  "progress": 50,
  "status": "IN_PROGRESS"
}

event: message
data: { // 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
}

Parâmetros

  • Name
    id
    Type
    path
    Description

    O ID da tarefa retornado na resposta de criação.

Retornos

Um stream de objetos de tarefa de Animação como Server-Sent Events.

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.


O objeto de tarefa de Animação

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.

Propriedades

Example 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
}
  • Name
    id
    Type
    string
    Description

    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.


GET/openapi/v1/animations/library

Listar animações

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.

Para navegar pela mesma lista com uma prévia animada de cada ação, consulte a referência da Biblioteca de animações.

Esta requisição não consome créditos.

Request

GET
/openapi/v1/animations/library
curl "https://api.meshy.ai/openapi/v1/animations/library?category=Fighting" \
-H "Authorization: Bearer ${YOUR_API_KEY}"

Response

[
  {
    "action_id": 4,
    "name": "Attack",
    "key": "Attack",
    "category": "Fighting",
    "sub_category": "AttackingwithWeapon",
    "preview_url": "https://cdn.meshy.ai/webapp-assets/feature-demo/animation/preview/biped/Attack.gif"
  },
  {
    "action_id": 92,
    "name": "Double Combo Attack",
    "key": "Double_Combo_Attack",
    "category": "Fighting",
    "sub_category": "AttackingwithWeapon",
    "preview_url": "https://cdn.meshy.ai/webapp-assets/feature-demo/animation/preview/biped/Double_Combo_Attack.gif"
  }
]

Parâmetros

  • Name
    search
    Type
    string
    Description

    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.

Retornos

Uma lista de objetos de animação.


The animation object

Um objeto de animação descreve uma animação na biblioteca.

Example Animation Object

{
  "action_id": 92,
  "name": "Double Combo Attack",
  "key": "Double_Combo_Attack",
  "category": "Fighting",
  "sub_category": "AttackingwithWeapon",
  "preview_url": "https://cdn.meshy.ai/webapp-assets/feature-demo/animation/preview/biped/Double_Combo_Attack.gif"
}
  • Name
    action_id
    Type
    integer
    Description

    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.