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 Rigging

Adicione um esqueleto (armature) a um modelo 3D humanoide e associe a malha a este, para que a personagem fique pronta a animar. Para aplicar animações a uma personagem com rigging, consulte a API de Animação.

O rigging funciona bem apenas com personagens humanoides (bípedes) padrão que tenham uma estrutura de membros e corpo claramente definida.


POST/openapi/v1/rigging

Criar uma tarefa de Rigging

Cria uma tarefa de Rigging para um modelo 3D. Quando a tarefa é concluída com sucesso, devolve uma personagem com rig em formatos padrão e, opcionalmente, animações básicas de caminhar e correr.

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

O Rigging não é adequado para estes modelos:

  • Malhas sem textura
  • Assets não humanoides
  • Assets humanoides com uma estrutura de membros e corpo pouco clara

Request

POST
/openapi/v1/rigging
# Rig a model from a URL
curl https://api.meshy.ai/openapi/v1/rigging \
  -X POST \
  -H "Authorization: Bearer ${YOUR_API_KEY}" \
  -H 'Content-Type: application/json' \
  -d '{
    "model_url": "YOUR_MODEL_URL_OR_DATA_URI",
    "height_meters": 1.8
  }'

Response

{
  "result": "018b314a-a1b5-716d-c222-2f1776f7f579"
}

Parâmetros

  • Name
    input_task_id
    Type
    string
    Obrigatório
    Description

    Obrigatório, a menos que envie model_url. O ID da tarefa cujo modelo pretende aplicar rig. O Meshy suporta modelos humanoides com textura.

    O modelo pode ter, no máximo, 380 000 triângulos (um quad conta como 2), e um modelo com mais do que isso devolve 400. Para se manter dentro do limite, execute primeiro a Remesh API com um target_polycount de 300000 ou menos, ou 150000 ou menos com topology: quad.

  • Name
    model_url
    Type
    string
    Obrigatório
    Description

    Obrigatório, a menos que envie input_task_id. O modelo a que aplicar rig, como URL pública ou data URI. Se enviar ambos, o Meshy usa input_task_id.

    O modelo deve ser um ficheiro GLB (.glb) de, no máximo, 400 MB a partir de um URL http ou https, ou 100 MB como data URI. O Rigging suporta modelos humanoides com textura.

    O modelo pode ter, no máximo, 380 000 triângulos (um quad conta como 2), e um modelo com mais do que isso devolve 400. Para se manter dentro do limite, execute primeiro a Remesh API com um target_polycount de 300000 ou menos, ou 150000 ou menos com topology: quad.

    A face da personagem deve apontar para o eixo +Z, a direção frontal padrão do glTF. A estimativa de pose falha para um modelo virado para outro eixo.

    Um ficheiro com mais de 100 MB também deve seguir estas regras:

    • Pode ter, no máximo, 10 000 000 faces. Um ficheiro com mais do que isso devolve 400. O Meshy conta as faces como triângulos, e uma malha desenhada mais do que uma vez conta uma vez por cópia.
    • Não pode usar compressão Draco.
  • Name
    height_meters
    Type
    number
    predefinição 1.7
    Description

    A altura aproximada da personagem, em metros. O Meshy usa-a para dimensionar e aplicar rig ao modelo com maior precisão. Um valor negativo devolve 400.

  • Name
    texture_image_url
    Type
    string
    ⚠ obsoleto
    Description

    Não inclua quando o modelo já tem as suas próprias texturas. Sem este parâmetro, o Meshy usa as texturas incorporadas no ficheiro model_url, ou as texturas da tarefa de entrada. Se o enviar, esta imagem torna-se a única textura do modelo com rig, e o modelo perde os seus mapas PBR.

    A textura de cor base com UV desdobrado do modelo, como URL pública ou data URI. A imagem deve ser um ficheiro PNG de, no máximo, 20 MB. Outro formato de imagem devolve 400.

Devolve

O campo result da resposta contém o ID da nova tarefa de Rigging.

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: Nem model_url nem input_task_id foram enviados.
    • Formato de modelo inválido: O ficheiro model_url tem uma extensão não suportada. Apenas .glb é suportado.
    • URL inacessível: O Meshy não consegue transferir o ficheiro model_url.
    • Ficheiro de modelo demasiado grande: O ficheiro model_url tem mais de 400 MB a partir de um URL http ou https, ou mais de 100 MB como data URI.
    • Demasiadas faces: O ficheiro model_url tem mais de 100 MB e mais de 10 000 000 faces. Reduza o número de faces e volte a enviar o ficheiro.
    • Ficheiro de modelo ilegível: O ficheiro model_url tem mais de 100 MB, e o Meshy não consegue ler o seu cabeçalho. Por exemplo, é um GLB comprimido com Draco.
    • Cabeçalho do modelo demasiado complexo: O ficheiro model_url tem mais de 100 MB, e o seu cabeçalho tem demasiadas malhas, nós ou registos para verificar. Reduza o número de objetos no ficheiro e volte a enviá-lo.
    • Imagem demasiado grande: A imagem texture_image_url tem mais de 20 MB.
    • Formato de textura inválido: A imagem texture_image_url não é um ficheiro PNG.
    • Altura inválida: height_meters é negativo.
    • Tarefa de entrada inválida: input_task_id não corresponde a uma tarefa de API válida.
    • Tarefa de entrada não pronta: A tarefa input_task_id ainda não atingiu o estado SUCCEEDED. Aguarde até ser concluída com sucesso e tente novamente.
    • Limite de faces excedido: O modelo de entrada tem mais de 380 000 triângulos (um quad conta como 2). Execute a Remesh API com um target_polycount de 300000 ou menos, ou 150000 ou menos com topology: quad, antes de aplicar rig ao modelo.

    Corrija o pedido e volte a enviá-lo. 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

    input_task_id é um modelo em baixo-relevo, ao qual este endpoint não consegue aplicar rig. A mensagem é This model type does not support this operation. Envie um modelo diferente.

  • Name
    404 - Not Found
    Description

    O Meshy não consegue encontrar os ficheiros da tarefa input_task_id. Aplica-se uma das seguintes situações:

    • O Meshy eliminou os ficheiros da tarefa após o seu expires_at. Crie a tarefa novamente e envie o ID dessa tarefa.
    • A tarefa não tem nenhum dos ficheiros de que o rigging necessita, como uma imagem de pré-visualização, por exemplo, uma tarefa de Converter. Aplique rig à tarefa de origem, ou envie o modelo como model_url.
  • Name
    422 - Unprocessable Entity
    Description

    A estimativa de pose falhou. O modelo pode não ser uma personagem humanoide válida. Envie um modelo de uma personagem humanoide. Para model_url, verifique também se a personagem está virada para o eixo +Z.

  • Name
    429 - Too Many Requests
    Description

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


GET/openapi/v1/rigging/:id

Obter uma tarefa de Rigging

Devolve uma tarefa de Rigging através do seu ID.

Request

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

Response

{
  "id": "018b314a-a1b5-716d-c222-2f1776f7f579",
  "type": "rig",
  "status": "SUCCEEDED",
  "created_at": 1747032400453,
  "progress": 100,
  "started_at": 1747032401314,
  "finished_at": 1747032418417,
  "expires_at": 1747291618417,
  "task_error": null,
  "consumed_credits": 5,
  "result": {
    "rigged_character_fbx_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Character_output.fbx?Expires=...",
    "rigged_character_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Character_output.glb?Expires=...",
    "basic_animations": {
      "walking_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Walking_withSkin.glb?Expires=...",
      "walking_fbx_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Walking_withSkin.fbx?Expires=...",
      "walking_armature_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Walking_withSkin_armature.glb?Expires=...",
      "running_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Running_withSkin.glb?Expires=...",
      "running_fbx_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Running_withSkin.fbx?Expires=...",
      "running_armature_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Running_withSkin_armature.glb?Expires=..."
    }
  }
}

Parâmetros

  • Name
    id
    Type
    path
    Description

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

Devolve

O objeto de tarefa de Rigging.


DELETE/openapi/v1/rigging/:id

Eliminar uma tarefa de Rigging

Elimina permanentemente uma tarefa de Rigging, incluindo os seus modelos e dados. Não é possível desfazer uma eliminação.

Request

DELETE
/openapi/v1/rigging/018b314a-a1b5-716d-c222-2f1776f7f579
curl --request DELETE \
  --url https://api.meshy.ai/openapi/v1/rigging/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 eliminar.

Estado da tarefa

Eliminar uma tarefa PENDING reembolsa os créditos utilizados quando a criou.

Uma tarefa IN_PROGRESS não pode ser eliminada. O pedido devolve 409 Conflict, e a tarefa continua a ser executada. A 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 até que atinja o estado SUCCEEDED, FAILED ou CANCELED, e só 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/rigging

Listar tarefas de Rigging

Devolve uma lista paginada das suas tarefas de Rigging, da mais recente para a mais antiga. Para percorrer a lista, use page_num e page_size.

As tarefas que cria através da API permanecem na API e não aparecem em My Assets na aplicação web. Para encontrar uma tarefa cujo ID já não tem, use este endpoint.

Request

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

GET/openapi/v1/rigging/:id/stream

Transmitir em stream uma tarefa de Rigging

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

Request

GET
/openapi/v1/rigging/018b314a-a1b5-716d-c222-2f1776f7f579/stream
curl -N https://api.meshy.ai/openapi/v1/rigging/018b314a-a1b5-716d-c222-2f1776f7f579/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": "018b314a-a1b5-716d-c222-2f1776f7f579",
  "progress": 0,
  "status": "PENDING"
}

event: message
data: {
  "id": "018b314a-a1b5-716d-c222-2f1776f7f579",
  "progress": 50,
  "status": "IN_PROGRESS"
}

event: message
data: { // Example of a SUCCEEDED task event, with the same fields as the Rigging task object
  "id": "018b314a-a1b5-716d-c222-2f1776f7f579",
  "type": "rig",
  "status": "SUCCEEDED",
  "created_at": 1747032400453,
  "progress": 100,
  "started_at": 1747032401314,
  "finished_at": 1747032418417,
  "expires_at": 1747291618417,
  "task_error": null,
  "consumed_credits": 5,
  "result": {
    "rigged_character_fbx_url": "https://assets.meshy.ai/.../Character_output.fbx?...",
    "rigged_character_glb_url": "https://assets.meshy.ai/.../Character_output.glb?...",
    "basic_animations": {
      "walking_glb_url": "https://assets.meshy.ai/.../Animation_Walking_withSkin.glb?...",
      "walking_fbx_url": "https://assets.meshy.ai/.../Animation_Walking_withSkin.fbx?...",
      "walking_armature_glb_url": "https://assets.meshy.ai/.../Animation_Walking_withSkin_armature.glb?...",
      "running_glb_url": "https://assets.meshy.ai/.../Animation_Running_withSkin.glb?...",
      "running_fbx_url": "https://assets.meshy.ai/.../Animation_Running_withSkin.fbx?...",
      "running_armature_glb_url": "https://assets.meshy.ai/.../Animation_Running_withSkin_armature.glb?..."
    }
  }
}

Parâmetros

  • Name
    id
    Type
    path
    Description

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

Retorna

Um stream de objetos de tarefa de Rigging como Server-Sent Events.

Cada evento contém o objeto de tarefa completo, no mesmo formato devolvido pelo endpoint Get. Enquanto a tarefa estiver PENDING ou IN_PROGRESS, os seus campos de resultado ainda não têm valores.


O objeto de tarefa de Rigging

Um objeto de tarefa de Rigging descreve o rigging de uma personagem. Contém o estado, o progress e os ficheiros de saída quando a tarefa é bem-sucedida.

Propriedades

Example Rigging Task Object

{
  "id": "018b314a-a1b5-716d-c222-2f1776f7f579",
  "type": "rig",
  "status": "SUCCEEDED",
  "created_at": 1747032400453,
  "progress": 100,
  "started_at": 1747032401314,
  "finished_at": 1747032418417,
  "expires_at": 1747291618417,
  "task_error": null,
  "consumed_credits": 5,
  "result": {
    "rigged_character_fbx_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Character_output.fbx?Expires=...",
    "rigged_character_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Character_output.glb?Expires=...",
    "basic_animations": {
      "walking_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Walking_withSkin.glb?Expires=...",
      "walking_fbx_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Walking_withSkin.fbx?Expires=...",
      "walking_armature_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Walking_withSkin_armature.glb?Expires=...",
      "running_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Running_withSkin.glb?Expires=...",
      "running_fbx_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Running_withSkin.fbx?Expires=...",
      "running_armature_glb_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018b314a-a1b5-716d-c222-2f1776f7f579/output/Animation_Running_withSkin_armature.glb?Expires=..."
    }
  }
}
  • 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 rig.

  • 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

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

  • Name
    started_at
    Type
    timestamp
    Description

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

  • Name
    finished_at
    Type
    timestamp
    Description

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

  • Name
    expires_at
    Type
    timestamp
    Description

    Hora em que os ficheiros de resultado da tarefa expiram, em milissegundos Unix. Após esta hora, a Meshy pode eliminar os ficheiros.

  • 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

    Os URLs dos ficheiros de saída. Até a tarefa ser bem-sucedida, cada URL é uma string vazia, e basic_animations é null.

    • Name
      rigged_character_fbx_url
      Type
      string
      Description

      URL de transferência para a personagem com rigging como ficheiro FBX.

    • Name
      rigged_character_glb_url
      Type
      string
      Description

      URL de transferência para a personagem com rigging como ficheiro GLB.

    • Name
      basic_animations
      Type
      object (optional)
      Description

      URLs de transferência para as animações padrão de caminhar e correr.

      • Name
        walking_glb_url
        Type
        string
        Description
        A animação de caminhar com pele, como ficheiro GLB.
      • Name
        walking_fbx_url
        Type
        string
        Description
        A animação de caminhar com pele, como ficheiro FBX.
      • Name
        walking_armature_glb_url
        Type
        string
        Description
        O armature da animação de caminhar, como ficheiro GLB.
      • Name
        running_glb_url
        Type
        string
        Description
        A animação de correr com pele, como ficheiro GLB.
      • Name
        running_fbx_url
        Type
        string
        Description
        A animação de correr com pele, como ficheiro FBX.
      • Name
        running_armature_glb_url
        Type
        string
        Description
        O armature da animação de correr, como ficheiro GLB.
  • 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.