meshy-5 será descontinuado em 10 de out. de 2026. lowpoly será descontinuado em 30 de out. de 2026. Troque de modelo antes dessas datas para evitar erros nas solicitações.

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 redirecionar para personagens com rig em seu próprio pipeline ou ferramentas DCC.

A saída é um clipe de movimento independente: ele não requer, nem está vinculado a, um modelo de personagem. Para fazer o rig de um personagem primeiro, consulte a API de Rigging. Para aplicar um clipe gerado ao seu personagem com rig, passe o id da tarefa como motion_task_id para a API de Animação — aplique-o dentro da janela de 3 dias de retenção de recursos.


POST/openapi/v1/text-to-motion

Create a Text to Motion Task

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

Uma tarefa com mode prime custa 10 créditos e é gerada com nosso modelo de movimento de mais alta qualidade. Uma tarefa com mode swift custa 3 créditos e é gerada 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 mode de geração de movimento. Valores disponíveis: prime, swift. prime produz a mais alta qualidade e gera saída em FBX; swift é mais rápido e barato e gera saída em 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 recém-criada de Text to Motion.

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.
    • Mode inválido: mode não é prime nem swift.
    • Duração inválida: duration está ausente, fora do intervalo 2–10, ou não está em um passo de 0.5 segundo.
  • Name
    401 - Unauthorized
    Description

    A autenticação falhou. 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 moderation de conteúdo.

  • Name
    429 - Too Many Requests
    Description

    Você excedeu seu limite de taxa.

Request

POST
/openapi/v1/text-to-motion
# Generate a motion clip with required params only
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
  }'

# Generate a fast, economical clip with Swift mode
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 recuperar uma tarefa de Texto para Movimento a partir de um id de tarefa válido. Consulte O Objeto de Tarefa de Texto para Movimento para ver quais propriedades estão incluídas.

Parâmetros

  • Name
    id
    Type
    path
    Description

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

Retorno

A resposta contém o objeto Text to Motion Task. Consulte a seção O Objeto de 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 Text to Motion

Retorna uma lista paginada das tarefas de Text to Motion do solicitante, das mais recentes para as mais antigas. Paginação padrão via page_num e page_size.

A resposta é um array de objetos de Tarefa de Text to Motion.

Observe que as tarefas criadas através da API são gerenciadas através da API — elas não aparecem em Meus Assets no aplicativo web. Use este endpoint para localizar 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

Fazer streaming de uma tarefa de Text to Motion

Este endpoint transmite atualizações em tempo real de uma tarefa de Text to Motion usando Server-Sent Events (SSE).

Parâmetros

  • Name
    id
    Type
    path
    Description

    Identificador único da tarefa de Text to Motion a ser transmitida.

Retornos

Retorna um stream de Objetos de Tarefa Text to Motion como Server-Sent Events.

Todo evento message carrega o objeto de tarefa completo. Enquanto a tarefa estiver PENDING ou IN_PROGRESS, os campos de result ainda estarão vazios ("" / 0) e finished_at / expires_at serã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

// Error event example
event: error
data: {
  "status_code": 404,
  "message": "Task not found"
}

// Message events carry the full task object at every stage; the result
// fields stay empty until the task succeeds.
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: { // Example of a SUCCEEDED task stream item, mirroring The Text to Motion Task Object structure
  "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 Text to Motion

Este endpoint exclui permanentemente uma tarefa de Text to Motion, 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 Text to Motion a ser excluída.

Status da Tarefa

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

Uma tarefa que já está IN_PROGRESS não pode ser excluída: a solicitação é rejeitada 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, então excluí-la no meio da execução custaria tanto os créditos quanto o resultado. Aguarde até que ela atinja SUCCEEDED, FAILED ou CANCELED, e então a exclua.

Uma tarefa em um estado final (SUCCEEDED, FAILED ou CANCELED) é excluída sem reembolso.

Retornos

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

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

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

O Objeto Task de Texto para Movimento

O objeto Task 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 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 não tiver iniciado.

  • Name
    finished_at
    Type
    timestamp
    Description

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

  • Name
    expires_at
    Type
    timestamp
    Description

    Carimbo de data/hora (milissegundos desde a epoch) de quando os assets resultantes da tarefa expiram. 0 até que a tarefa termine. O clipe gerado é retido 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. Significativo 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 mode prime, 3 para o mode swift. Retorna 0 para tarefas FAILED (os 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 tenha FAILED. Consulte Erros para a referência completa do objeto task_error.

  • Name
    result
    Type
    object
    Description

    Contém o clipe de movimento gerado assim que a tarefa atinge SUCCEEDED; até lá, os campos estão presentes, mas vazios ("" / 0).

    • Name
      motion_url
      Type
      string
      Description
      URL para download do clipe de movimento gerado. A URL é ressignada 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 mode prime, bvh para o mode swift.
    • Name
      duration_ms
      Type
      integer
      Description
      Duração do clipe gerado em milissegundos.
    • Name
      mode
      Type
      string
      Description
      O mode com o qual o clipe foi gerado: prime ou swift.

Example Text to Motion Task Object

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