lowpoly será descontinuado a 30/10/2026. Mude de modelo antes destas datas para evitar erros nos pedidos. Ver todas as descontinuações

API de Animação

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


POST/openapi/v1/animations

Criar uma tarefa de Animação

Cria uma tarefa de Animação, que aplica uma animação a uma personagem que tenha sido previamente rigged. A animação pode ser uma das seguintes:

  • Uma ação predefinida da biblioteca de animações (action_id)
  • Várias ações predefinidas combinadas num único ficheiro (action_ids)
  • Um clip de movimento gerado com a API Text to Motion (motion_task_id)

Também pode processar o resultado posteriormente. A tarefa é executada em segundo plano. Para saber quanto tempo demora normalmente uma tarefa, 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 cuja personagem deve ser animada, obtido através de POST /openapi/v1/rigging. A tarefa tem de ter o estado 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, exceto se enviar action_id ou motion_task_id. Os IDs de 1 a 10 ações predefinidas a aplicar de uma só vez, sem repetições. Mais de 10 IDs, ou um ID repetido, devolve 400. Para os IDs, consulte a referência da Biblioteca de animações.

    A Meshy devolve um ficheiro com um clip de animação por ação, o que é adequado para uma state machine num 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, exceto se enviar action_id ou action_ids. O ID de uma tarefa Text to Motion cujo clip deve ser aplicado em vez de uma ação predefinida. A tarefa tem de ter o estado SUCCEEDED, e o rig tem de ser bípede.

    A Meshy faz o retarget do clip para a personagem com rig. Copia o clip quando esta tarefa é criada, por isso esta tarefa não é afetada caso a tarefa de Text to Motion expire mais tarde ou a elimine. A Meshy mantém os ficheiros da tarefa de Text to Motion durante 3 dias, por isso aplique o clip antes de esse prazo terminar.

  • Name
    post_process
    Type
    object
    Description

    Pós-processamento para o resultado da animação. Omita este parâmetro para obter os ficheiros de animação padrão.

    Com motion_task_id, o retarget pode produzir uma animação apenas em GLB. Se enviar post_process e não estiver disponível nenhum ficheiro FBX, a tarefa falha com um task_error, e a Meshy reembolsa os seus créditos. Sem post_process, a tarefa é concluída com sucesso, e animation_fbx_url fica vazio.

Aplica-se apenas quando post_process is set
  • Name
    operation_type
    Type
    string
    Description

    A operação a executar. Sem este parâmetro, a Meshy não cria nenhum ficheiro adicional. Um valor fora da lista seguinte devolve 400.

    Valores disponíveis:

    • change_fps: altera a taxa de frames para fps
    • fbx2usdz: converte a animação para USDZ
    • extract_armature: extrai o armature como um ficheiro FBX
  • Name
    fps
    Type
    integer
    predefinição 30
    Description

    A taxa de frames para a qual alterar, uma de 24, 25, 30 ou 60. Aplica-se apenas quando operation_type é change_fps. Qualquer outro valor devolve 400.

Resultados devolvidos

O campo result da resposta contém o ID da nova tarefa de Animação.

Modos de falha

  • Name
    400 - Bad Request
    Description

    O pedido não pode ser executado. A mensagem de erro indica qual o problema encontrado. Por exemplo:

    • Parâmetro em falta: rig_task_id está em falta, ou nenhum dos parâmetros action_id, action_ids e motion_task_id foi enviado.
    • Parâmetros em conflito: O pedido tem mais do que 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 concluída com sucesso.
    • ID de ação inválido: Um action_id, ou uma entrada em action_ids, não é uma animação válida.
    • Demasiadas ações: action_ids tem mais de 10 IDs.
    • Ações duplicadas: action_ids tem o mesmo ID mais do que uma vez.
    • Tarefa de movimento não pronta: A tarefa motion_task_id ainda não atingiu o estado SUCCEEDED.
    • Rig não suportado: motion_task_id requer um rig bípede, e a Meshy rejeita um rig quadrúpede.

    Corrija o pedido e envie-o novamente. Consulte Erros.

  • Name
    401 - Unauthorized
    Description

    A chave de API está em falta 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éditos. Verifique o seu saldo de créditos e tente novamente.
    • Plano gratuito: Criar uma tarefa requer um plano pago. Atualize o seu plano nas definições de subscrição e tente novamente.
  • Name
    403 - Forbidden
    Description

    A tarefa rig_task_id é um modelo em baixo-relevo, que este endpoint não consegue animar. A mensagem é This model type does not support this operation. Faça rig de um modelo diferente.

  • Name
    404 - Not Found
    Description

    A Meshy não consegue encontrar uma tarefa ou ficheiro de que o pedido necessita. Aplica-se uma das seguintes situações:

    • A Meshy não consegue encontrar a tarefa rig_task_id entre as suas tarefas. Verifique o ID.
    • A Meshy eliminou os ficheiros da tarefa rig_task_id após o respetivo expires_at. Faça rig da personagem novamente.
    • A Meshy não consegue encontrar a tarefa motion_task_id. Verifique o ID.
    • O clip de movimento expirou, porque a Meshy mantém os ficheiros de uma tarefa de Text to Motion durante 3 dias. Crie outra tarefa de Text to Motion.
  • Name
    429 - Too Many Requests
    Description

    Excedeu o seu limite de taxa. Aguarde e tente novamente. Consulte Limites de taxa.


GET/openapi/v1/animations/:id

Obter uma tarefa de Animação

Devolve uma tarefa de Animação através do 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": null,
  "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=..."
  }
}

Parâmetros

  • Name
    id
    Type
    path
    Description

    O ID da tarefa proveniente da resposta de criação.

Devolve

O objeto de tarefa de Animação.


DELETE/openapi/v1/animations/:id

Eliminar uma tarefa de Animação

Elimina permanentemente uma tarefa de Animação, incluindo os seus modelos e dados. Não é possível anular uma eliminaçã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 do caminho

  • Name
    id
    Type
    path
    Description

    O ID da tarefa a eliminar.

Estado da tarefa

Eliminar uma tarefa PENDING reembolsa os créditos utilizados na sua criação.

Uma tarefa IN_PROGRESS não pode ser eliminada. O pedido devolve 409 Conflict, e a tarefa continua em execução. O Meshy não reembolsa uma tarefa que já foi iniciada, pelo que eliminá-la custar-lhe-ia tanto os créditos como o resultado. Aguarde que atinja o estado SUCCEEDED, FAILED ou CANCELED e depois elimine-a.

Eliminar uma tarefa num estado final (SUCCEEDED, FAILED ou CANCELED) não reembolsa os seus créditos.

Devolve

200 OK quando a tarefa é eliminada, ou 409 Conflict quando a tarefa está IN_PROGRESS.


GET/openapi/v1/animations

Listar tarefas de Animação

Devolve uma lista paginada das suas tarefas de Animação, da mais recente para a mais antiga. Para percorrer a lista, utilize page_num e page_size.

As tarefas que cria através da API não aparecem em My Assets na aplicação web, pelo que as gere através da API. Para encontrar uma tarefa cujo ID já não tem, utilize 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

Transmitir uma tarefa de Animação em stream

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": null,
  "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?..."
  }
}

Parâmetros

  • Name
    id
    Type
    path
    Description

    O ID da tarefa proveniente da resposta de criação.

Devolve

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

Cada evento contém o objeto de tarefa completo, na mesma forma que o endpoint Get devolve. Enquanto a tarefa está PENDING ou IN_PROGRESS, os seus campos de resultado ainda não têm valores.


O objeto de tarefa Animation

Um objeto de tarefa Animation descreve uma animação aplicada a uma personagem com rig. Contém o estado, o progress e os ficheiros 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": null,
  "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?..."
  }
}
  • 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 de tarefa, sempre animate.

  • Name
    status
    Type
    string
    Description

    O estado da tarefa, um de PENDING, IN_PROGRESS, SUCCEEDED, FAILED, ou CANCELED.

  • Name
    progress
    Type
    integer
    Description

    Quanto da tarefa está concluído, em percentagem. É 0 até a tarefa começar e 100 quando é bem-sucedida.

  • Name
    created_at
    Type
    timestamp
    Description

    Momento em que a tarefa foi criada, em milissegundos Unix.

  • Name
    started_at
    Type
    timestamp
    Description

    Momento em que a tarefa começou, em milissegundos Unix. É 0 até a tarefa começar.

  • Name
    finished_at
    Type
    timestamp
    Description

    Momento em que a tarefa terminou, em milissegundos Unix. É 0 até a tarefa terminar.

  • Name
    expires_at
    Type
    timestamp
    Description

    Momento em que os ficheiros de resultado da tarefa expiram, em milissegundos Unix.

  • Name
    task_error
    Type
    object
    Description

    Os detalhes do erro quando a tarefa falha. É null a menos que o estado seja FAILED. Consulte Erros.

  • Name
    consumed_credits
    Type
    integer
    Description

    O número de créditos que a tarefa utilizou. Presente quando o estado é 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 transferência para os ficheiros de animação, quando a tarefa tem o estado SUCCEEDED.

    • Name
      animation_glb_url
      Type
      string
      Description
      A animação como um ficheiro GLB. Para uma tarefa criada com action_ids, este único ficheiro contém todas as ações pedidas como clipes separados.
    • Name
      animation_fbx_url
      Type
      string
      Description
      A animação como um ficheiro FBX. Para uma tarefa criada com action_ids, este único ficheiro contém todas as ações pedidas como clipes separados.
    • Name
      processed_usdz_url
      Type
      string
      Description
      A animação processada como um ficheiro USDZ.
    • Name
      processed_armature_fbx_url
      Type
      string
      Description
      O armature processado como um ficheiro FBX.
    • Name
      processed_animation_fps_fbx_url
      Type
      string
      Description
      A animação com a taxa de fotogramas alterada, como um ficheiro FBX, por exemplo quando utilizou 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. O campo é omitido quando o valor é 0.


GET/openapi/v1/animations/library

List animations

Devolve todas as animações na biblioteca, ordenadas por action_id. A resposta é a lista completa, sem paginação, pelo que uma única chamada pode preencher um seletor de ações. Os filtros restringem o resultado. Para obter todas as animações, omita-os todos.

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

Este pedido não custa 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 pesquisar. O Meshy devolve as animações cujo name ou key contém este texto, ignorando maiúsculas/minúsculas. O Meshy compara o texto literalmente, pelo que % e _ não são caracteres universais.

  • Name
    category
    Type
    string
    Description

    A categoria a listar, como correspondência exata. Uma categoria desconhecida devolve uma lista vazia.

    Valores disponíveis:

    • WalkAndRun
    • BodyMovements
    • DailyActions
    • Fighting
    • Dancing
  • Name
    sub_category
    Type
    string
    Description

    A subcategoria a listar, como correspondência exata. Pode enviá-la sem category. Os nomes de subcategoria não são únicos entre categorias. Por exemplo, Transitioning está presente tanto em Fighting como em DailyActions. Assim, sem category, o filtro corresponde à subcategoria em todas as categorias.

  • Name
    action_ids
    Type
    string
    Description

    As animações a devolver, até 200 valores de action_id separados por vírgulas. Utilize-o para procurar IDs específicos em vez de navegar. Mais de 200 IDs devolve 400.

    A resposta omite um ID que nenhuma animação possui. Pode também usar este filtro para verificar se os IDs que armazenou ainda estão disponíveis.

Combinar filtros

O Meshy aplica os filtros em conjunto. Cada um restringe o resultado, pelo que o Meshy só devolve uma animação se esta corresponder a todos eles. Dentro de um único filtro, qualquer um dos seus valores pode corresponder. Por exemplo, search corresponde a name ou key, e action_ids corresponde a qualquer ID na lista.

Assim, uma combinação sem sobreposição devolve um array vazio, não um erro. A ação 92 é "Double Combo Attack", uma animação Fighting. Por exemplo:

  • ?action_ids=92&category=Fighting devolve a ação 92.
  • ?action_ids=92&category=Dancing devolve [], porque não é uma animação Dancing.
  • ?action_ids=92&search=walk devolve [], porque o seu nome não corresponde a walk.

Para obter animações específicas em qualquer categoria, envie action_ids sozinho.

Devolve

Uma lista de objetos de animação.


O objeto animação

Um objeto 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 enviar como action_id quando cria uma tarefa de Animação. É único e estável, mas não contíguo. As animações retiradas deixam lacunas na numeração, por isso não assuma que todos os IDs num intervalo são válidos.

  • Name
    name
    Type
    string
    Description

    O nome de exibição da animação. Não é único, porque algumas animações partilham 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 o 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 uma pré-visualização em GIF animado da ação. Pode mostrá-lo diretamente no seu próprio seletor.