Remesh API
Reconstrua a malha de um modelo 3D com uma nova topology e contagem de faces, e exporte-a nos formatos que você escolher. O modelo pode vir de outra tarefa do Meshy, como Imagem para 3D ou Texto para 3D, ou de um arquivo de modelo.
Criar uma tarefa de Remesh
Cria uma tarefa de Remesh. A tarefa é executada em segundo plano. Para saber quanto tempo uma tarefa costuma levar, consulte Tempos de processamento.
Para converter o formato de um modelo ou redimensioná-lo, use a API de Converter ou a API de Redimensionar. Os parâmetros obsoletos nesta página ainda funcionam, mas novas integrações devem usar esses endpoints.
Request
# Basic remesh with custom formats and resize
curl https://api.meshy.ai/openapi/v1/remesh \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"input_task_id": "018a210d-8ba4-705c-b111-1f1776f7f578",
"target_formats": ["glb", "fbx"],
"topology": "quad",
"target_polycount": 50000,
"resize_height": 1.0,
"origin_at": "bottom"
}'
# Quad remesh with auto-size
curl https://api.meshy.ai/openapi/v1/remesh \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"input_task_id": "018a210d-8ba4-705c-b111-1f1776f7f578",
"target_formats": ["glb", "fbx"],
"topology": "quad",
"target_polycount": 50000,
"auto_size": true
}'
Response
{
"result": "0193bfc5-ee4f-73f8-8525-44b398884ce9"
}
Parâmetros
- Name
- input_task_id
- Type
- string
- Obrigatório
- Description
Obrigatório, a menos que você envie
model_url. O ID da tarefa cujo modelo você deseja remesh, por exemplo, uma tarefa de Texto para 3D, Imagem para 3D, Retexturizar ou Remesh. A tarefa deve ser uma que você criou com a API e que tenha o statusSUCCEEDED.
- Name
- model_url
- Type
- string
- Obrigatório
- Description
Obrigatório, a menos que você envie
input_task_id. O modelo para remesh, como uma URL pública ou um data URI. Se você enviar ambos, Meshy usainput_task_id.O modelo deve ser um arquivo GLB, glTF, OBJ, FBX ou STL de no máximo 400 MB a partir de uma URL
httpouhttps, ou 100 MB como data URI. Para um data URI, use o MIME typeapplication/octet-stream.Um arquivo acima de 100 MB também deve seguir estas regras:
- Um arquivo GLB, glTF, FBX ou OBJ pode ter no máximo 10.000.000 de faces. Meshy conta faces como triângulos, então um quad conta como 2, e uma malha desenhada mais de uma vez conta uma vez por cópia.
- Um arquivo FBX deve ser FBX binário 7.1 ou mais recente.
- Um arquivo GLB ou glTF não deve usar compressão Draco.
- Name
- target_formats
- Type
- string[]
- padrão ["glb"]
- Description
Os formatos de arquivo a serem gerados.
Valores disponíveis:
glbfbxobjusdzblendstl3mf
- Name
- topology
- Type
- string
- padrão triangle
- Description
O tipo de face do modelo com remesh.
Valores disponíveis:
quad: uma malha predominantemente quadtriangle: uma malha de triângulos decimada
- Name
- target_polycount
- Type
- integer
- padrão 30000
- Description
O número de faces desejado, de
100a300000. O resultado pode diferir do alvo, dependendo da geometria do modelo. Um valor fora do intervalo retorna400.
- Name
- decimation_mode
- Type
- integer
- Description
Contagem de faces adaptativa, por nível. Quando você define isso, Meshy ignora
target_polycount.Valores disponíveis:
1: ultra2: alto3: médio4: baixo
- Name
- resize_height
- Type
- number
- ⚠ obsoleto
- padrão 0
- Description
Use a API de Redimensionar em vez disso. A altura para redimensionar o modelo, em metros. Envie no máximo um entre
resize_height,resize_longest_sideeauto_size.
- Name
- resize_longest_side
- Type
- number
- ⚠ obsoleto
- padrão 0
- Description
Use a API de Redimensionar em vez disso. O comprimento para redimensionar o lado mais longo da caixa delimitadora do modelo, em metros. Envie no máximo um entre
resize_height,resize_longest_sideeauto_size.
- Name
- auto_size
- Type
- boolean
- ⚠ obsoleto
- padrão false
- Description
Use a API de Redimensionar em vez disso. Se deve estimar a altura real do objeto com visão de IA e redimensionar o modelo para ela. Envie no máximo um entre
resize_height,resize_longest_sideeauto_size.
- Name
- origin_at
- Type
- string
- ⚠ obsoleto
- padrão bottom
- Description
Use a API de Redimensionar em vez disso. Onde colocar a origem do modelo,
bottomoucenter. O padrão se aplica quando você enviaresize_height,resize_longest_sideouauto_size. Sem um deles, Meshy move a origem apenas se você enviarorigin_at.
- Name
- convert_format_only
- Type
- boolean
- ⚠ obsoleto
- Description
Use a API de Converter em vez disso. Se deve apenas converter o modelo para
target_formats. Quandotrue, Meshy ignoratopology,target_polycount,decimation_mode,resize_height,resize_longest_sideeauto_size, mas ainda verifica seus valores, então um valor inválido retorna400. Comconvert_format_only: true, umtarget_formatsvazio ounullretorna400.
- Name
- alpha_thumbnail
- Type
- boolean
- padrão false
- Description
Se deve também renderizar uma pré-visualização com fundo transparente (RGBA), retornada em
alpha_thumbnail_urlquando você obtém a tarefa.thumbnail_urlnão muda.
Retornos
O campo result da resposta contém o ID da nova tarefa de Remesh.
Modos de falha
- Name
400 - Bad Request- Description
A requisição não pode ser executada. A mensagem de erro informa qual problema foi encontrado. Por exemplo:
- Parâmetro ausente: Nem
model_urlneminput_task_idforam enviados. - Tarefa de entrada inválida:
input_task_idnão é uma tarefa de API bem-sucedida, ou seu modelo de IA não oferece suporte a remesh. - Formato de modelo inválido: O arquivo em
model_urltem uma extensão não suportada. - URL inacessível: Meshy não consegue baixar o arquivo em
model_url. - Arquivo de modelo muito grande: O arquivo em
model_urltem mais de 400 MB a partir de uma URLhttpouhttps, ou mais de 100 MB como data URI. - Muitas faces: O arquivo em
model_urltem mais de 100 MB e mais de 10.000.000 de faces. Reduza a contagem de faces e envie o arquivo novamente. - FBX ASCII acima de 100 MB: O arquivo em
model_urlé um FBX ASCII acima de 100 MB. Envie-o como FBX binário ou GLB. - Arquivo de modelo ilegível: O arquivo em
model_urltem mais de 100 MB, e Meshy não consegue ler seu cabeçalho. Por exemplo, é um GLB ou glTF comprimido com Draco, ou um FBX binário anterior a 7.1. - Cabeçalho do modelo muito complexo: O arquivo em
model_urltem mais de 100 MB, e seu cabeçalho tem malhas, nós ou registros demais para verificar. Reduza o número de objetos no arquivo e envie-o novamente. - Topologia inválida:
topologynão équadnemtriangle. - Parâmetros mutuamente exclusivos: A requisição tem mais de um entre
auto_size,resize_heighteresize_longest_side. Envie apenas um.
Corrija a requisição e envie-a novamente. Consulte Erros.
- Parâmetro ausente: Nem
- Name
401 - Unauthorized- Description
A chave de API está ausente 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 seu saldo de créditos e tente novamente.
- Plano gratuito: Criar uma tarefa requer um plano pago. Faça upgrade do seu plano nas configurações de assinatura e tente novamente.
- Name
403 - Forbidden- Description
input_task_idé um modelo de baixo-relevo, que este endpoint não consegue fazer remesh. A mensagem éThis model type does not support this operation. Envie um modelo diferente.
- Name
404 - Not Found- Description
input_task_idnão corresponde a nenhuma das suas tarefas. Verifique o ID da tarefa e envie a requisição novamente.
- Name
429 - Too Many Requests- Description
Você excedeu seu limite de taxa. Aguarde e tente novamente. Consulte Limites de taxa.
Obter uma tarefa de Remesh
Retorna uma tarefa de Remesh pelo seu ID.
Request
curl https://api.meshy.ai/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
{
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "remesh",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
"fbx": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.fbx?Expires=***",
"obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***",
"usdz": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.usdz?Expires=***",
"blend": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.blend?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.stl?Expires=***"
},
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000001000,
"task_error": null,
}
Parâmetros
- Name
- id
- Type
- path
- Description
O ID da tarefa retornado na resposta de criação.
Retorna
Excluir uma tarefa de Remesh
Exclui permanentemente uma tarefa de Remesh, incluindo seus modelos e dados. Não é possível desfazer uma exclusão.
Request
curl --request DELETE \
--url https://api.meshy.ai/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f \
-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 ser excluída.
Status da tarefa
Excluir uma tarefa PENDING reembolsa os créditos usados na criação dela.
Uma tarefa IN_PROGRESS não pode ser excluída. A requisição retorna 409 Conflict,
e a tarefa continua em execução. A Meshy não reembolsa uma tarefa que já foi iniciada,
então excluí-la custaria tanto os créditos quanto o resultado. Aguarde até que ela
atinja o status SUCCEEDED, FAILED ou CANCELED e, então, exclua-a.
Excluir uma tarefa em um status final (SUCCEEDED, FAILED ou CANCELED)
não reembolsa seus créditos.
Retornos
200 OK quando a tarefa é excluída, ou 409 Conflict quando a tarefa está
IN_PROGRESS.
Listar tarefas de Remesh
Retorna uma lista das suas tarefas de Remesh.
Request
curl https://api.meshy.ai/openapi/v1/remesh?page_size=10 \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
[
{
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "remesh",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
"fbx": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.fbx?Expires=***",
"obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***",
"usdz": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.usdz?Expires=***",
"blend": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.blend?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.stl?Expires=***"
},
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000001000,
"task_error": null
}
]
Parâmetros
- Name
- page_num
- Type
- integer
- padrão 1
- Description
O número da página a ser retornada.
- Name
- page_size
- Type
- integer
- padrão 10
- Description
O número de tarefas por página, até
100.
- Name
- sort_by
- Type
- string
- Description
A ordem de classificação.
Valores disponíveis:
+created_at: mais antigos primeiro-created_at: mais recentes primeiro
Retornos
Uma lista paginada de objetos de tarefa de Remesh.
Transmitir uma tarefa de Remesh em stream
Transmite as atualizações de uma tarefa de Remesh como Server-Sent Events (SSE).
Request
curl -N https://api.meshy.ai/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f/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": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"progress": 0,
"status": "PENDING"
}
event: message
data: {
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "remesh",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
"fbx": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.fbx?Expires=***",
"obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***",
"usdz": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.usdz?Expires=***",
"blend": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.blend?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.stl?Expires=***"
},
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000001000,
"task_error": null,
}
Parâmetros
- Name
- id
- Type
- path
- Description
O ID da tarefa retornado na resposta de criação.
Retornos
Um stream de objetos de tarefa de Remesh como Server-Sent Events.
Cada evento contém o objeto de tarefa completo, no mesmo formato retornado pelo endpoint Get. Enquanto a tarefa estiver PENDING ou IN_PROGRESS, seus campos de resultado ainda não têm valores.
O objeto de tarefa Remesh
Um objeto de tarefa Remesh descreve um remesh de um modelo 3D. Ele contém o status, o progress e os arquivos do modelo quando a tarefa é concluída com sucesso.
Propriedades
Example Remesh Task Object
{
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "remesh",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
"fbx": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.fbx?Expires=***",
"obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***",
"usdz": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.usdz?Expires=***",
"blend": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.blend?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.stl?Expires=***"
},
"progress": 100,
"status": "SUCCEEDED",
"preceding_tasks": 0,
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000001000,
"task_error": {
"message": ""
},
"consumed_credits": 5
}
- 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 da tarefa, sempre
remesh.
- Name
- model_urls
- Type
- object
- Description
URLs de download para o modelo com remesh, uma por formato de arquivo. Um formato que a tarefa não gerou não possui chave, em vez de uma string vazia.
- Name
glb- Type
- string
- Description
O arquivo GLB.
- Name
fbx- Type
- string
- Description
O arquivo FBX.
- Name
obj- Type
- string
- Description
O arquivo OBJ.
- Name
usdz- Type
- string
- Description
O arquivo USDZ.
- Name
blend- Type
- string
- Description
O arquivo Blender.
- Name
stl- Type
- string
- Description
O arquivo STL.
- Name
3mf- Type
- string
- Description
O arquivo 3MF. Presente apenas quando
target_formatsinclui3mf.
- Name
- thumbnail_url
- Type
- string
- Description
URL de download para uma imagem de pré-visualização do modelo com remesh.
- Name
- alpha_thumbnail_url
- Type
- string
- Description
URL de download para uma versão de
thumbnail_urlcom fundo transparente (RGBA). Presente apenas quando você criou a tarefa comalpha_thumbnail: truee a Meshy renderizou a pré-visualização transparente.
- Name
- progress
- Type
- integer
- Description
Quanto da tarefa foi concluído, como uma porcentagem. É
0até a tarefa começar e100quando é concluída com sucesso.
- Name
- status
- Type
- string
- Description
O status da tarefa, um dos valores
PENDING,IN_PROGRESS,SUCCEEDED, ouFAILED.
- Name
- preceding_tasks
- Type
- integer
- Description
O número de tarefas à frente desta na fila. O valor só é significativo enquanto a tarefa está em
PENDING.
- Name
- created_at
- Type
- timestamp
- Description
Horário em que a tarefa foi criada, em milissegundos Unix.
- Name
- started_at
- Type
- timestamp
- Description
Horário em que a tarefa começou, em milissegundos Unix. É
0até a tarefa começar.
- Name
- finished_at
- Type
- timestamp
- Description
Horário em que a tarefa terminou, em milissegundos Unix. É
0até a tarefa terminar.
- Name
- task_error
- Type
- object
- Description
Os detalhes do erro quando a tarefa falha. Consulte Erros.
- Name
- consumed_credits
- Type
- integer
- Description
O número de créditos que a tarefa utilizou. Presente quando o status é
PENDING,IN_PROGRESS, ouSUCCEEDED. É0para uma tarefaFAILED, porque a Meshy reembolsa os créditos quando uma tarefa falha.