API de Texto para Movimento

Gere clipes de movimento de personagens a partir de descrições em linguagem natural. Descreva uma ação — "um personagem acenando", "um zumbi cambaleando para frente" — e receba um clipe de movimento bruto que você pode reajustar para personagens rigged em seu próprio pipeline ou ferramentas DCC.

A saída é um clipe de movimento autônomo: não requer, e não está anexado a, um modelo de personagem. Para rigar um personagem primeiro, veja a API de Rigging.


POST/openapi/v1/text-to-motion

Criar uma Tarefa de Texto para Movimento

Este endpoint cria uma nova tarefa para gerar um clipe de movimento a partir de um prompt de texto.

Uma tarefa com mode prime custa 10 créditos e gera com nosso modelo de movimento de mais alta qualidade. Uma tarefa com mode swift custa 3 créditos e gera mais rapidamente com nosso modelo de movimento econômico.

Parâmetros

  • Name
    prompt
    Type
    string
    Obrigatório
    Description

    Uma descrição em linguagem natural do movimento a ser gerado. Máximo de 400 caracteres.

  • Name
    mode
    Type
    string
    padrão prime
    Description

    O modo de geração de movimento. Valores disponíveis: prime, swift. prime produz a mais alta qualidade e gera FBX; swift é mais rápido e barato e gera BVH.

  • Name
    duration
    Type
    number
    Obrigatório
    Description

    A duração alvo do clipe de movimento em segundos. Entre 2 e 10, em passos de 0.5 (por exemplo, 2, 2.5, 3, … 10).

Retornos

A propriedade result da resposta contém o id da tarefa da recém-criada Tarefa de Texto para Movimento.

Modos de Falha

  • Name
    400 - Bad Request
    Description

    A solicitação foi inaceitável. Causas comuns:

    • Prompt ausente ou vazio: prompt está ausente, em branco ou tem mais de 400 caracteres.
    • Modo inválido: mode não é prime ou swift.
    • Duração inválida: duration está ausente, fora de 210, ou não está em um passo de 0.5 segundos.
  • Name
    401 - Unauthorized
    Description

    Falha na autenticação. Por favor, verifique sua chave de API.

  • Name
    402 - Payment Required
    Description

    Créditos insuficientes para realizar esta tarefa.

  • Name
    403 - Forbidden
    Description

    O prompt foi sinalizado pela moderação de conteúdo.

  • Name
    429 - Too Many Requests
    Description

    Você excedeu seu limite de taxa.

Request

POST
/openapi/v1/text-to-motion
# Gerar um clipe de movimento com parâmetros obrigatórios apenas
curl https://api.meshy.ai/openapi/v1/text-to-motion \
  -X POST \
  -H "Authorization: Bearer ${YOUR_API_KEY}" \
  -H 'Content-Type: application/json' \
  -d '{
    "prompt": "a character waving",
    "duration": 3
  }'

# Gerar um clipe rápido e econômico com o modo Swift
curl https://api.meshy.ai/openapi/v1/text-to-motion \
  -X POST \
  -H "Authorization: Bearer ${YOUR_API_KEY}" \
  -H 'Content-Type: application/json' \
  -d '{
    "prompt": "a character waving",
    "mode": "swift",
    "duration": 4.5
  }'

Response

{
  "result": "018c425b-b2c6-727e-d333-3c1887i9h791"
}

GET/openapi/v1/text-to-motion/:id

Recuperar uma Tarefa de Texto para Movimento

Este endpoint permite que você recupere uma tarefa de Texto para Movimento dado um id de tarefa válido. Consulte O Objeto Tarefa de Texto para Movimento para ver quais propriedades estão incluídas.

Parâmetros

  • Name
    id
    Type
    path
    Description

    Identificador único para a tarefa de Texto para Movimento a ser recuperada.

Retorna

A resposta contém o objeto Tarefa de Texto para Movimento. Verifique a seção O Objeto Tarefa de Texto para Movimento para mais detalhes.

Request

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

Response

{
  "id": "018c425b-b2c6-727e-d333-3c1887i9h791",
  "type": "text-to-motion",
  "status": "SUCCEEDED",
  "progress": 100,
  "created_at": 1787314497437,
  "started_at": 1787314498012,
  "finished_at": 1787314505881,
  "expires_at": 1787573705881,
  "task_error": null,
  "result": {
    "motion_url": "https://assets.meshy.ai/0630d47c-84b8-4d37-bc02-69e45d9272c1/tasks/018c425b-b2c6-727e-d333-3c1887i9h791/output/clip.fbx?Expires=...",
    "motion_format": "fbx",
    "duration_ms": 3000,
    "mode": "prime"
  },
  "consumed_credits": 10
}

GET/openapi/v1/text-to-motion

Listar Tarefas de Texto para Movimento

Retorna uma lista paginada das tarefas de Texto para Movimento do chamador, da mais recente para a mais antiga. Paginação padrão via page_num e page_size.

A resposta é um array de objetos de Tarefa de Texto para Movimento.

Note que tarefas criadas através da API são gerenciadas através da API — elas não aparecem em Meus Assets do aplicativo web. Use este endpoint para encontrar uma tarefa cujo ID você não tem mais.

Request

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

Response

[
  {
    "id": "018c425b-b2c6-727e-d333-3c1887i9h791",
    "type": "text-to-motion",
    "status": "SUCCEEDED",
    "...": "..."
  }
]

GET/openapi/v1/text-to-motion/:id/stream

Transmitir uma Tarefa de Texto para Movimento

Este endpoint transmite atualizações em tempo real para uma tarefa de Texto para Movimento usando Server-Sent Events (SSE).

Parâmetros

  • Name
    id
    Type
    path
    Description

    Identificador único para a tarefa de Texto para Movimento a ser transmitida.

Retornos

Retorna um fluxo de Os Objetos de Tarefa de Texto para Movimento como Server-Sent Events.

Cada evento message carrega o objeto completo da tarefa. Enquanto a tarefa está PENDING ou IN_PROGRESS, os campos result ainda estão vazios ("" / 0) e finished_at / expires_at são 0; observe status e progress.

Request

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

Response Stream

// Exemplo de evento de erro
event: error
data: {
  "status_code": 404,
  "message": "Tarefa não encontrada"
}

// Os eventos de mensagem carregam o objeto completo da tarefa em cada estágio; os campos de resultado permanecem vazios até que a tarefa seja concluída.
event: message
data: {
  "id": "018c425b-b2c6-727e-d333-3c1887i9h791",
  "type": "text-to-motion",
  "status": "IN_PROGRESS",
  "progress": 50,
  "created_at": 1787314497437,
  "started_at": 1787314498012,
  "finished_at": 0,
  "expires_at": 0,
  "task_error": null,
  "result": {
    "motion_url": "",
    "motion_format": "",
    "duration_ms": 0,
    "mode": ""
  },
  "consumed_credits": 10
}

event: message
data: { // Exemplo de um item de stream de tarefa SUCCEEDED, espelhando a estrutura do Objeto de Tarefa de Texto para Movimento
  "id": "018c425b-b2c6-727e-d333-3c1887i9h791",
  "type": "text-to-motion",
  "status": "SUCCEEDED",
  "progress": 100,
  "created_at": 1787314497437,
  "started_at": 1787314498012,
  "finished_at": 1787314505881,
  "expires_at": 1787573705881,
  "task_error": null,
  "result": {
    "motion_url": "https://assets.meshy.ai/.../output/clip.fbx?Expires=...",
    "motion_format": "fbx",
    "duration_ms": 3000,
    "mode": "prime"
  },
  "consumed_credits": 10
}

DELETE/openapi/v1/text-to-motion/:id

Excluir uma Tarefa de Texto para Movimento

Este endpoint exclui permanentemente uma tarefa de Texto para Movimento, incluindo o clipe de movimento gerado. Esta ação é irreversível.

Parâmetros de Caminho

  • Name
    id
    Type
    path
    Description

    O ID da tarefa de Texto para Movimento a ser excluída.

Retornos

Retorna 200 OK em caso de sucesso.

Request

DELETE
/openapi/v1/text-to-motion/018c425b-b2c6-727e-d333-3c1887i9h791
curl --request DELETE \
  --url https://api.meshy.ai/openapi/v1/text-to-motion/018c425b-b2c6-727e-d333-3c1887i9h791 \
  -H "Authorization: Bearer ${YOUR_API_KEY}"

Response

// Retorna 200 Ok em caso de sucesso.

O Objeto de Tarefa de Texto para Movimento

O objeto de tarefa de Texto para Movimento representa a unidade de trabalho para gerar um clipe de movimento a partir de um prompt de texto.

Propriedades

  • Name
    id
    Type
    string
    Description

    Identificador único para a tarefa.

  • Name
    type
    Type
    string
    Description

    Tipo da tarefa. O valor é text-to-motion.

  • Name
    status
    Type
    string
    Description

    Status 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 época) quando a tarefa foi criada.

  • Name
    started_at
    Type
    timestamp
    Description

    Carimbo de data/hora (milissegundos desde a época) quando a tarefa começou a processar. 0 se não começou.

  • Name
    finished_at
    Type
    timestamp
    Description

    Carimbo de data/hora (milissegundos desde a época) quando a tarefa foi concluída. 0 se não foi concluída.

  • Name
    expires_at
    Type
    timestamp
    Description

    Carimbo de data/hora (milissegundos desde a época) quando os ativos de resultado da tarefa expiram. 0 até que a tarefa termine. O clipe gerado é mantido por 3 dias após a conclusão da tarefa; faça o download antes que expire.

  • Name
    preceding_tasks
    Type
    integer
    Description

    A contagem de tarefas precedentes na fila. Relevante apenas se o status for PENDING; omitido quando zero.

  • Name
    consumed_credits
    Type
    integer
    Description

    O número de créditos consumidos por esta tarefa. 10 para o modo prime, 3 para o modo swift. Retorna 0 para tarefas FAILED (créditos são reembolsados em caso de falha).

  • Name
    task_error
    Type
    object
    Description

    Detalhes do erro para tarefas com falha; null a menos que a tarefa FAILED. Veja Erros para a referência completa do objeto task_error.

  • Name
    result
    Type
    object
    Description

    Contém o clipe de movimento gerado quando a tarefa SUCCEEDED; até então, os campos estão presentes mas vazios ("" / 0).

    • Name
      motion_url
      Type
      string
      Description
      URL para download do clipe de movimento gerado. O URL é re-assinado a cada leitura e expira com a janela de retenção da tarefa.
    • Name
      motion_format
      Type
      string
      Description
      Formato do arquivo do clipe: fbx para o modo prime, bvh para o modo swift.
    • Name
      duration_ms
      Type
      integer
      Description
      Duração do clipe gerado em milissegundos.
    • Name
      mode
      Type
      string
      Description
      O modo com o qual o clipe foi gerado: prime ou swift.

Exemplo de Objeto de Tarefa de Texto para Movimento

{
  "id": "018c425b-b2c6-727e-d333-3c1887i9h791",
  "type": "text-to-motion",
  "status": "SUCCEEDED",
  "progress": 100,
  "created_at": 1787314497437,
  "started_at": 1787314498012,
  "finished_at": 1787314505881,
  "expires_at": 1787573705881,
  "task_error": null,
  "result": {
    "motion_url": "https://assets.meshy.ai/.../output/clip.fbx?Expires=...",
    "motion_format": "fbx",
    "duration_ms": 3000,
    "mode": "prime"
  },
  "consumed_credits": 10
}