lowpoly será descontinuado a 30/10/2026. Mude de modelo antes destas datas para evitar erros nos pedidos.

API de Animação

Endpoints para descobrir animações disponíveis e aplicá-las a personagens com rig.


POST/openapi/v1/animations

Criar uma Tarefa de Animação

Este endpoint permite criar uma nova tarefa para aplicar uma animação a uma personagem previamente dotada de rig — uma ação predefinida da biblioteca de animações (action_id), várias ações predefinidas combinadas num único ficheiro (action_ids), ou um clip de movimento gerado com a API Text to Motion (motion_task_id). Inclui opções de pós-processamento.

A tarefa é executada em segundo plano. Para saber quanto tempo normalmente demora, consulte Tempos de Processamento.

Parâmetros

  • Name
    rig_task_id
    Type
    string
    Obrigatório
    Description

    O id de uma tarefa de rigging concluída com sucesso (de POST /openapi/v1/rigging). A personagem desta tarefa será animada.

  • Name
    action_id
    Type
    integer
    Description

    O identificador da ação de animação predefinida a aplicar. Consulte a Referência da Biblioteca de Animações para uma lista completa das animações disponíveis. Forneça exatamente um de action_id, action_ids ou motion_task_id.

  • Name
    action_ids
    Type
    array of integers
    Description

    Várias ações de animação predefinidas a aplicar em simultâneo, devolvidas como um único ficheiro contendo um clip de animação por ação — útil para controlar uma personagem a partir de uma máquina de estados num motor de jogo. Forneça entre 1 e 10 valores de action_id da Referência da Biblioteca de Animações; os ids devem ser únicos. Custa 3 créditos por ação. Forneça exatamente um de action_id, action_ids ou motion_task_id.

    Passar um action_ids com um único elemento é equivalente a passar esse valor como action_id.

  • Name
    motion_task_id
    Type
    string
    Description

    O id de uma tarefa de Text to Motion concluída com sucesso a aplicar em vez de uma ação predefinida. O clip gerado é reorientado (retargeted) para a personagem com rig e o clip é capturado num snapshot no momento da criação, pelo que esta tarefa não é afetada caso a tarefa de origem expire ou seja eliminada posteriormente. Os assets da tarefa de origem são mantidos durante 3 dias — aplique o clip antes que expire. Requer um rig bípede. Forneça exatamente um de action_id, action_ids ou motion_task_id.

  • Name
    post_process
    Type
    object
    Description

    Pós-processamento opcional para o resultado da animação. Omita para receber os ficheiros de animação padrão.

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

    O tipo de operação a realizar. Valores disponíveis: change_fps, fbx2usdz, extract_armature.

  • Name
    fps
    Type
    integer
    predefinição 30
    Description

    A taxa de fotogramas pretendida. Aplicável apenas quando operation_type é change_fps. Valores permitidos: 24, 25, 30, 60.

Resultados devolvidos

A propriedade result da resposta contém o id da tarefa de animação recém-criada.

Modos de Falha

  • Name
    400 - Bad Request
    Description

    O pedido não foi aceite. Causas comuns:

    • Parâmetro em falta: rig_task_id está em falta, ou nenhum de action_id, action_ids e motion_task_id foi fornecido.
    • Parâmetros em conflito: foi fornecido mais do que um de action_id, action_ids e motion_task_id — são mutuamente exclusivos.
    • Tarefa de rig inválida: O rig_task_id é inválido ou refere-se a uma tarefa falhada/inexistente.
    • ID de ação inválido: Um action_id — ou uma entrada de action_ids — não corresponde a uma animação válida.
    • Demasiadas ações: action_ids contém mais de 10 ids.
    • Ações duplicadas: action_ids contém o mesmo id mais do que uma vez.
    • Tarefa de movimento não pronta: a tarefa motion_task_id ainda não terminou com SUCCEEDED.
    • Rig não suportado: motion_task_id requer um rig bípede; rigs quadrúpedes são rejeitados.
  • Name
    401 - Unauthorized
    Description

    A autenticação falhou. Verifique a sua chave de API.

  • Name
    402 - Payment Required
    Description

    Créditos insuficientes para realizar esta tarefa.

  • Name
    404 - Not Found
    Description

    A tarefa de rigging especificada por rig_task_id não foi encontrada, a tarefa de movimento especificada por motion_task_id não foi encontrada, ou o clip de movimento expirou (os assets da tarefa de origem são mantidos durante 3 dias).

  • Name
    429 - Too Many Requests
    Description

    Excedeu o seu limite de taxa.

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"
}

GET/openapi/v1/animations/:id

Obter uma Tarefa de Animação

Este endpoint permite obter uma tarefa de animação através de um id de tarefa válido. Consulte O Objeto de Tarefa de Animação para ver quais propriedades estão incluídas.

Parâmetros

  • Name
    id
    Type
    path
    Description

    Identificador único da tarefa de animação a obter.

Devolve

A resposta contém o objeto Tarefa de Animação. Consulte a secção O Objeto de Tarefa de Animação para mais detalhes.

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
}

DELETE/openapi/v1/animations/:id

Eliminar uma Tarefa de Animação

Este endpoint elimina permanentemente uma tarefa de animação, incluindo todos os modelos e dados associados. Esta ação é irreversível.

Parâmetros de Caminho

  • Name
    id
    Type
    path
    Description

    O ID da tarefa de animação a eliminar.

Estado da Tarefa

Uma tarefa que ainda está PENDING é eliminada e os créditos consumidos no momento da criação são reembolsados.

Uma tarefa que já está IN_PROGRESS não pode ser eliminada: o pedido é rejeitado com 409 Conflict e a tarefa continua em execução. Os créditos de uma tarefa que o worker já iniciou não são reembolsáveis, pelo que eliminá-la a meio da execução custar-lhe-ia tanto os créditos como o resultado. Aguarde que esta atinja SUCCEEDED, FAILED ou CANCELED, e depois elimine-a.

Uma tarefa num estado terminal (SUCCEEDED, FAILED ou CANCELED) é eliminada sem reembolso.

Retornos

Retorna 200 OK em caso de sucesso, ou 409 Conflict quando a tarefa está IN_PROGRESS.

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 is left 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."
}

GET/openapi/v1/animations

List Animation Tasks

Devolve uma lista paginada das tarefas de animação do autor da chamada, das mais recentes para as mais antigas. Paginação padrão através de page_num e page_size.

Note que as tarefas criadas através da API são geridas através da API — não aparecem em Os meus assets na aplicação web. Utilize este endpoint para encontrar uma tarefa cujo ID já não tenha.

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

Este endpoint transmite atualizações em tempo real para uma tarefa de Animação utilizando Server-Sent Events (SSE).

Parâmetros

  • Name
    id
    Type
    path
    Description

    Identificador único da tarefa de Animação a transmitir.

Retorna

Retorna um fluxo de Objetos de Tarefa de Animação como Server-Sent Events.

Para tarefas PENDING ou IN_PROGRESS, o fluxo de resposta incluirá apenas os campos progress e status necessários.

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.
// For PENDING or IN_PROGRESS tasks, the response stream will not include all fields.
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, mirroring The Animation Task Object structure
  "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
}

O Objeto Animation Task

O objeto Animation Task representa a unidade de trabalho para aplicar uma animação a uma personagem com rig.

Propriedades

  • Name
    id
    Type
    string
    Description

    Identificador único da tarefa.

  • Name
    type
    Type
    string
    Description

    Tipo da tarefa de Animação. O valor é animate.

  • Name
    status
    Type
    string
    Description

    Estado da tarefa. Valores possíveis: PENDING, IN_PROGRESS, SUCCEEDED, FAILED, CANCELED.

  • Name
    progress
    Type
    integer
    Description

    Progresso da tarefa (0-100).

  • Name
    created_at
    Type
    timestamp
    Description

    Carimbo de data/hora (milissegundos desde a epoch) de quando a tarefa foi criada.

  • Name
    started_at
    Type
    timestamp
    Description

    Carimbo de data/hora (milissegundos desde a epoch) de quando a tarefa começou a ser processada. 0 se ainda não tiver começado.

  • Name
    finished_at
    Type
    timestamp
    Description

    Carimbo de data/hora (milissegundos desde a epoch) de quando a tarefa terminou. 0 se ainda não tiver terminado.

  • Name
    expires_at
    Type
    timestamp
    Description

    Carimbo de data/hora (milissegundos desde a epoch) de quando os assets resultantes da tarefa expiram.

  • Name
    task_error
    Type
    object
    Description

    Detalhes do erro para tarefas falhadas. Consulte Erros para a referência completa do objeto task_error.

  • Name
    consumed_credits
    Type
    integer
    Description

    O número de créditos consumidos por esta tarefa. Presente quando o estado da tarefa é PENDING, IN_PROGRESS, ou SUCCEEDED. Retorna 0 para tarefas FAILED (os créditos são reembolsados em caso de falha).

  • Name
    result
    Type
    object
    Description

    Contém os URLs de animação de saída se a tarefa tiver SUCCEEDED.

    • Name
      animation_glb_url
      Type
      string
      Description
      URL transferível para a animação no formato GLB. Para uma tarefa criada com action_ids, este único ficheiro contém cada ação solicitada como um clip separado.
    • Name
      animation_fbx_url
      Type
      string
      Description
      URL transferível para a animação no formato FBX. Para uma tarefa criada com action_ids, este único ficheiro contém cada ação solicitada como um clip separado.
    • Name
      processed_usdz_url
      Type
      string
      Description
      URL transferível para a animação processada no formato USDZ.
    • Name
      processed_armature_fbx_url
      Type
      string
      Description
      URL transferível para a armature processada no formato FBX.
    • Name
      processed_animation_fps_fbx_url
      Type
      string
      Description
      URL transferível para a animação com FPS alterados no formato FBX (por exemplo, se a operação change_fps tiver sido utilizada).
  • Name
    preceding_tasks
    Type
    integer
    Description

    A contagem de tarefas precedentes na fila. Apenas relevante se o estado for PENDING.

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
}

GET/openapi/v1/animations/library

Listar Animações

Devolve todas as animações da biblioteca, ordenadas por action_id. A resposta é uma lista completa em vez de uma página, pelo que uma única chamada é suficiente para preencher um seletor de ações. Os filtros restringem o resultado; omita-os todos para obter tudo.

Para navegar pelo mesmo catálogo visualmente, com uma pré-visualização animada de cada ação, consulte a referência da Biblioteca de animações.

Este endpoint é gratuito — não consome créditos.

Parâmetros

  • Name
    search
    Type
    string
    Description

    Correspondência de subcadeia sem distinção entre maiúsculas e minúsculas em name ou key. A correspondência é literal, pelo que % e _ são carateres comuns e não caracteres universais (wildcards).

  • Name
    category
    Type
    string
    Description

    Correspondência exata em category.

    Valores disponíveis:

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

    Correspondência exata em sub_category. Aceite isoladamente — os nomes de sub-categoria não são únicos entre categorias (Transitioning aparece tanto em Fighting como em DailyActions), pelo que, sem uma category, o filtro corresponde a essa sub-categoria onde quer que apareça.

  • Name
    action_ids
    Type
    string
    Description

    Lista separada por vírgulas de valores action_id a devolver, para resolver ids específicos em vez de navegar. Aceita no máximo 200 ids. Os ids que nenhuma animação possui estão simplesmente ausentes da resposta, pelo que também pode usar isto para verificar se os ids que tem armazenados ainda estão disponíveis.

Combinação de filtros

Os filtros são aplicados em conjunto — cada um restringe ainda mais o resultado, pelo que uma animação só é devolvida se satisfizer todos eles. Dentro de um único filtro, vários valores correspondem a qualquer um deles: search corresponde a name ou key, e action_ids corresponde a qualquer id da lista.

Isto significa que uma combinação sem sobreposição devolve uma lista vazia em vez de um erro. A ação 92 é "Double Combo Attack", uma animação Fighting:

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

Para obter animações específicas independentemente da sua categoria, passe action_ids isoladamente.

Devolve

Devolve uma lista de Objetos de Animação.

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"
  }
]

O Objeto Animação

  • Name
    action_id
    Type
    integer
    Description

    O valor a passar como action_id ao criar uma tarefa de animação. Único e estável, mas não contíguo — as animações descontinuadas deixam lacunas na numeração, pelo que nunca deve assumir que um intervalo de ids é válido.

  • Name
    name
    Type
    string
    Description

    Rótulo legível por humanos, para apresentação. Não é único: algumas animações partilham um nome com uma variante diferente, pelo que deve usar action_id ou key como identidade.

  • Name
    key
    Type
    string
    Description

    Slug único e estável para a animação. Utilize-o quando precisar de um identificador não numérico para indexar o seu próprio armazenamento.

  • Name
    category
    Type
    string
    Description

    Agrupamento de nível superior, por exemplo Fighting.

  • Name
    sub_category
    Type
    string
    Description

    Agrupamento dentro da categoria, por exemplo AttackingwithWeapon.

  • Name
    preview_url
    Type
    string
    Description

    URL de um GIF animado com a pré-visualização da ação, adequado para ser apresentado diretamente no seu próprio seletor.

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"
}