API do Auto Split
Divida um modelo 3D em partes imprimíveis separadamente — automaticamente, pelas partes que você nomear, ou por região de cor — com conectores opcionais; regiões finas deixadas por um corte são sempre reforçadas para que cada parte seja impressa de forma sólida.
Atualmente, o Auto Split oferece suporte apenas a modelos sem textura. Para Imagem para 3D e Multi-imagem para 3D, gere a entrada com should_texture definido como false. Uma entrada com textura é rejeitada com 400. O suporte a texturas está em desenvolvimento.
Criar uma tarefa de Auto Split
Este endpoint cria uma nova tarefa de Auto Split. A tarefa corta o modelo de uma tarefa anterior em partes imprimíveis separadamente e retorna o modelo segmentado, com cada parte como seu próprio objeto no arquivo.
Parâmetros
- Name
- input_task_id
- Type
- string
- Obrigatório
- Description
O ID de uma tarefa bem-sucedida cujo modelo será dividido. Tipos de tarefa suportados: Imagem para 3D, Multi-imagem para 3D, Texto para 3D (pré-visualização), Remesh, Converter e Redimensionar. A tarefa deve ter status
SUCCEEDED, e seu modelo deve ter sido gerado com Meshy 6 ou Meshy 7 (ai_modelmeshy-6,meshy-7, oulatest). Modelos low-poly e Smart Topology (meshy-t2) não são suportados.
- Name
- mode
- Type
- string
- padrão auto
- Description
Como o modelo é dividido em partes.
Valores disponíveis:
auto: A Meshy escolhe os cortes.prompté ignorado.by_parts: Corta ao longo das partes estruturais que você nomear emprompt, como cabeça, braços e tronco.by_color: Corta ao longo das regiões de cor que você nomear emprompt. Requer uma entrada gerada a partir de uma imagem enviada (Imagem para 3D ou Multi-imagem para 3D); outras entradas são rejeitadas com400.
mode = by_parts or by_color- Name
- prompt
- Type
- string
- Obrigatório
- Description
Descreve as partes nas quais dividir, em qualquer idioma. A Meshy lê de 1 a 10 nomes de partes a partir dele, então nomeie as peças em vez de descrever o modelo — por exemplo
split into the figure and the base, ouhead, torso, left arm, right arm, legs. Até 600 caracteres. Dois modos de falha: uma descrição que se lê como uma divisão, mas nomeia menos de duas partes (por exemplosplit into individual parts) é rejeitada com400e nada é cobrado; uma descrição que a Meshy não consegue ler de forma alguma recorre aauto, a tarefa ainda é executada e cobrada, e sua resposta trazprompt_ignored: true.
- Name
- target_formats
- Type
- array
- padrão ["glb"]
- Description
Formatos nos quais exportar o modelo dividido. Cada parte é um objeto separado em todos os formatos.
glbé sempre produzido e retornado emmodel_urls; liste quaisquer outros formatos que desejar além dele.Valores disponíveis:
glb,obj,fbx,usdz,blend,3mf.3mfé gerado para fatiadores: um objeto por parte, cada um em seu próprio slot de filamento, para que o Bambu Studio abra o arquivo como partes coloridas individualmente e selecionáveis separadamente (o arquivo compactado traz uma configuração de projeto do Bambu Studio; outros fatiadores leem apenas a geometria). Assim como os outros formatos de impressão da Meshy, está em milímetros e, como este endpoint não recebe um tamanho de destino, o modelo inteiro é escalado para que seu lado mais longo tenha 150 mm — o mesmo limite usado pelas outras exportações em formato de impressão, escolhido para caber em qualquer mesa de impressão convencional. Comlayout: "on_plate", o limite se aplica à mesa organizada como um todo, para que o arquivo esteja pronto para fatiar; comassembled, as partes ficam onde o modelo de origem as tinha, e você as organiza no fatiador.stlnão é suportado porque o formato não pode carregar partes separadas.
- Name
- layout
- Type
- string
- padrão assembled
- Description
Como as partes são organizadas em cada formato de saída e na miniatura.
Valores disponíveis:
assembled: As partes permanecem onde o modelo de origem as tinha.on_plate: As partes são dispostas de forma plana e espalhadas na mesa de impressão, prontas para fatiar — o mesmo arranjo da visualização On Plate do aplicativo web.
Em ambos os layouts, os arquivos exportados contêm um objeto por parte e nada mais: uma lasca colapsada ou peça pontual remanescente de um corte é removida antes da exportação, então todo objeto encontrado no arquivo é imprimível.
- Name
- connectors
- Type
- boolean
- padrão false
- Description
Adiciona conectores tipo espiga e encaixe em cada corte para que as partes impressas se encaixem.
connectors = true- Name
- connector_type
- Type
- string
- padrão cube
- Description
A forma do conector em cada superfície de corte.
Valores disponíveis:
cube,cylinder.
- Name
- connector_size
- Type
- number
- padrão 0.5
- Description
Tamanho do conector em relação à superfície de corte.
Intervalo válido:
0.1a0.8.
- Name
- connector_height
- Type
- number
- padrão 0.1
- Description
A distância que o conector se estende a partir da superfície de corte, em relação à superfície de corte.
Intervalo válido:
0.1a0.8.
Retornos
A propriedade result da resposta contém o id da tarefa de Auto Split recém-criada.
Modos de falha
- Name
400 - Bad Request- Description
A requisição foi inaceitável. Causas comuns:
- Prompt ausente:
prompté obrigatório quandomodeéby_partsouby_color. - Prompt nomeia menos de duas partes:
by_parts/by_colorprecisa de pelo menos duas peças nomeadas (por exemplohead, torso, base); uma instrução genérica comosplit into individual partsé rejeitada. Nada é cobrado. - Tarefa de entrada não suportada:
input_task_iddeve se referir a uma tarefa bem-sucedida de um tipo suportado, gerada com Meshy 6 ou Meshy 7. - Entrada com textura: O modelo de entrada possui texturas. Por enquanto, apenas modelos sem textura são suportados.
- Sem imagem de referência:
by_colorrequer uma entrada gerada a partir de uma imagem enviada. - Formato não suportado:
target_formatscontémstl. - Conector fora do intervalo:
connector_sizeouconnector_heightestá fora do intervalo de0.1a0.8.
- Prompt ausente:
- Name
401 - Unauthorized- Description
Falha na autenticação. Verifique sua chave de API.
- Name
402 - Payment Required- Description
Créditos insuficientes para realizar esta tarefa.
- Name
404 - Not Found- Description
O
input_task_idnão existe ou não pertence à sua conta.
- Name
429 - Too Many Requests- Description
Você excedeu seu limite de taxa. As requisições
by_partseby_colortambém compartilham um limite de análise de prompt de 12 requisições por minuto por conta.
- Name
503 - Service Unavailable- Description
A divisão baseada em prompt (
by_partseby_color) está temporariamente indisponível. Tente novamente mais tarde ou usemode: "auto", que não é afetado. Nada é cobrado.
Request
# Simple request: let Meshy choose the cuts
curl https://api.meshy.ai/openapi/v1/print/split \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"input_task_id": "018a210d-8ba4-705c-b111-1f1776f7f578"
}'
# Advanced request: name the parts, add connectors, export glb and obj
curl https://api.meshy.ai/openapi/v1/print/split \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"input_task_id": "018a210d-8ba4-705c-b111-1f1776f7f578",
"mode": "by_parts",
"prompt": "split into the figure and the base",
"target_formats": ["glb", "obj"],
"layout": "on_plate",
"connectors": true,
"connector_type": "cylinder",
"connector_size": 0.4
}'
Response
{
"result": "0193bfc5-ee4f-73f8-8525-44b398884ce9"
}
Recuperar uma Tarefa de Auto Split
Este endpoint recupera uma tarefa de Auto Split pelo seu ID.
Parâmetros
- Name
- id
- Type
- path
- Description
O ID da tarefa de Auto Split a ser recuperada.
Retornos
O objeto da Tarefa de Auto Split.
Request
curl https://api.meshy.ai/openapi/v1/print/split/a43b5c6d-7e8f-901a-234b-567c890d1e2f \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
{
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "print-split",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
"obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***"
},
"thumbnail_url": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/preview.png?Expires=***",
"part_count": 4,
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000082000,
"task_error": null,
"consumed_credits": 10
}
Excluir uma Tarefa de Auto Split
Este endpoint exclui permanentemente uma tarefa de Auto Split, 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 Auto Split a ser excluída.
Retornos
Retorna 200 OK em caso de sucesso.
Request
curl --request DELETE \
--url https://api.meshy.ai/openapi/v1/print/split/a43b5c6d-7e8f-901a-234b-567c890d1e2f \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
// Returns 200 Ok on success.
Listar Tarefas de Auto Split
Este endpoint permite recuperar uma lista de tarefas de Auto Split.
Parâmetros
Atributos opcionais
- Name
- page_num
- Type
- integer
- Description
Número da página para paginação. Começa e tem como padrão
1.
- Name
- page_size
- Type
- integer
- Description
Limite de itens por página. O padrão é
10itens. O máximo permitido é100itens; valores maiores são limitados a100.
- Name
- sort_by
- Type
- string
- Description
Campo pelo qual ordenar. Valores disponíveis:
+created_at: Ordena pelo horário de criação em ordem crescente.-created_at: Ordena pelo horário de criação em ordem decrescente.
Retornos
Retorna uma lista paginada de The Auto Split Task Objects.
Request
curl https://api.meshy.ai/openapi/v1/print/split?page_size=10 \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
[
{
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "print-split",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***"
},
"thumbnail_url": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/preview.png?Expires=***",
"part_count": 4,
"progress": 100,
"status": "SUCCEEDED",
"preceding_tasks": 0,
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000082000,
"task_error": null,
"consumed_credits": 10
}
]
Transmitir uma Tarefa de Auto Split
Este endpoint transmite atualizações em tempo real de uma tarefa de Auto Split usando Server-Sent Events (SSE).
Parâmetros
- Name
- id
- Type
- path
- Description
Identificador único da tarefa de Auto Split a ser transmitida.
Retornos
Retorna um stream de The Auto Split Task Objects como Server-Sent Events.
Todo evento message carrega o objeto completo da tarefa, conforme retornado por Retrieve an Auto Split Task, incluindo consumed_credits, os timestamps e prompt_ignored; enquanto a tarefa estiver PENDING ou IN_PROGRESS, os campos que mudam entre os quadros são progress, status, started_at e preceding_tasks, e model_urls, thumbnail_url, part_count e parts aparecem quando ela atinge SUCCEEDED. Um evento error carrega apenas status_code e message, então diferencie pelo nome do evento antes de ler status.
Request
curl -N https://api.meshy.ai/openapi/v1/print/split/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 (other task fields omitted here for brevity;
// each frame is the full task object).
event: message
data: {
"id": "a43b5c6d-7e8f-901a-234b-567c890d1e2f",
"progress": 0,
"status": "PENDING"
}
event: message
data: {
"id": "a43b5c6d-7e8f-901a-234b-567c890d1e2f",
"type": "print-split",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/a43b5c6d-7e8f-901a-234b-567c890d1e2f/output/model.glb?Expires=***"
},
"thumbnail_url": "https://assets.meshy.ai/***/tasks/a43b5c6d-7e8f-901a-234b-567c890d1e2f/output/preview.png?Expires=***",
"part_count": 4,
"progress": 100,
"status": "SUCCEEDED",
"preceding_tasks": 0,
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000082000,
"task_error": null,
"consumed_credits": 10
}
O Objeto de Tarefa Auto Split
Uma tarefa Auto Split contém apenas as propriedades abaixo. Os campos de prompt de geração que outros objetos de tarefa incluem (name, object_prompt, texture_prompt e assim por diante), o model_url único, e texture_urls nunca são preenchidos para uma divisão e não são retornados. As propriedades que são preenchidas conforme a tarefa é executada (thumbnail_url, model_urls, os carimbos de data/hora) estão sempre presentes, vazias até terem um valor, portanto o conjunto de chaves não muda entre PENDING e SUCCEEDED.
- Name
- id
- Type
- string
- Description
Identificador único da tarefa. Embora usemos um UUID k-sortable para ids de tarefas como detalhe de implementação, você não deve fazer nenhuma suposição sobre o formato do id.
- Name
- type
- Type
- string
- Description
Tipo da tarefa. O valor é
print-split.
- Name
- model_urls
- Type
- object
- Description
URLs para download do modelo dividido, uma por formato solicitado. Cada parte é um objeto separado no arquivo. A propriedade de um formato será omitida se o formato não tiver sido solicitado.
- Name
glb- Type
- string
- Description
URL para download do modelo dividido no formato GLB.
- Name
obj- Type
- string
- Description
URL para download do modelo dividido no formato OBJ.
- Name
fbx- Type
- string
- Description
URL para download do modelo dividido no formato FBX.
- Name
usdz- Type
- string
- Description
URL para download do modelo dividido no formato USDZ.
- Name
blend- Type
- string
- Description
URL para download do modelo dividido no formato Blender.
- Name
3mf- Type
- string
- Description
URL para download do modelo dividido no formato 3MF: um objeto por peça, cada uma em seu próprio slot de filamento, em milímetros, escalado de forma que o lado mais longo tenha 150 mm, com uma configuração de projeto do Bambu Studio.
- Name
- thumbnail_url
- Type
- string
- Description
URL para download de uma prévia renderizada do modelo dividido, com cada peça em uma cor distinta, no
layoutsolicitado.
- Name
- prompt_ignored
- Type
- boolean
- Description
truequando opromptde uma solicitaçãoby_partsouby_colornão nomeou nenhuma peça, então o Meshy dividiu o modelo automaticamente — os nomes das peças no resultado são do Meshy, não os seus. Presente a partir dePENDING. Omitido para tarefasautoe sempre que o prompt foi seguido.
- Name
- part_count
- Type
- integer
- Description
Número de peças imprimíveis no modelo dividido — uma por objeto nos arquivos exportados. Fragmentos colapsados que a segmentação não conseguiu transformar em uma peça imprimível são removidos dos arquivos antes da exportação e não são contados.
- Name
- progress
- Type
- integer
- Description
Progresso da tarefa. Se a tarefa ainda não foi iniciada, esta propriedade será
0. Assim que a tarefa for concluída com sucesso, isso se tornará100.
- Name
- status
- Type
- string
- Description
Status da tarefa. Os valores possíveis são um de
PENDING,IN_PROGRESS,SUCCEEDED,FAILED,CANCELED.
- Name
- preceding_tasks
- Type
- integer
- Description
A contagem de tarefas precedentes.
O valor deste campo só é significativo se o status da tarefa for
PENDING.
- Name
- created_at
- Type
- timestamp
- Description
Carimbo de data/hora de quando a tarefa foi criada, em milissegundos.
- Name
- started_at
- Type
- timestamp
- Description
Carimbo de data/hora de quando a tarefa foi iniciada, em milissegundos. Se a tarefa ainda não foi iniciada, esta propriedade será
0.
- Name
- finished_at
- Type
- timestamp
- Description
Carimbo de data/hora de quando a tarefa foi concluída, em milissegundos. Se a tarefa ainda não foi concluída, esta propriedade será
0.
- Name
- task_error
- Type
- object
- Description
Detalhes de erro para tarefas com falha. Veja 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. Sempre presente:
10assim que a tarefa é aceita, e0para tarefasFAILEDporque a cobrança é reembolsada em caso de falha. Excluir uma tarefa enquanto ela ainda estáPENDINGtambém a reembolsa.
The Auto Split Task Object
{
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "print-split",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
"obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***"
},
"thumbnail_url": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/preview.png?Expires=***",
"part_count": 4,
"progress": 100,
"status": "SUCCEEDED",
"preceding_tasks": 0,
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000082000,
"task_error": null,
"consumed_credits": 10
}