API de Auto Split
Divida um modelo 3D em peças imprimíveis separadamente — automaticamente, pelas peças que indicar, ou por região de cor — com conectores opcionais; as regiões finas deixadas por um corte são sempre reforçadas para que cada peça seja impressa de forma sólida.
O resultado da divisão não preserva a textura de entrada. O Auto Split aceita entradas com textura, pelo que não é necessário regenerar o modelo com should_texture: false. Reconstrói as peças cortadas e atribui a cada uma uma cor de vértice plana; nenhum mapa de textura de entrada é transportado para qualquer formato exportado.
Create an Auto Split Task
Este endpoint cria uma nova tarefa de Auto Split. A tarefa corta o modelo de uma tarefa anterior em partes imprimíveis separadamente e devolve o modelo segmentado, com cada parte como o seu próprio objeto no ficheiro.
A tarefa é executada em segundo plano. Para saber quanto tempo demora habitualmente, consulte Tempos de Processamento.
Parâmetros
- Name
- input_task_id
- Type
- string
- Obrigatório
- Description
O ID de uma tarefa bem-sucedida cujo modelo se pretende dividir. 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 o estado
SUCCEEDED, e o seu modelo deve ter sido gerado com Meshy 6 ou Meshy 7 (ai_modelmeshy-6,meshy-7,meshy-7.1, oulatest). Modelos low-poly e Smart Topology (meshy-t2,meshy-t2.5) não são suportados. Um modelo com textura é aceite, mas a sua textura não é transportada para o resultado.
- Name
- mode
- Type
- string
- predefiniçã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 nomear emprompt, como cabeça, braços e tronco.by_color: corta ao longo das regiões de cor que nomear emprompt. Requer uma entrada gerada a partir de uma imagem carregada (Imagem para 3D ou Multi-imagem para 3D); outras entradas são rejeitadas com400. Os limites das regiões de cor provêm da imagem de origem, não da textura do modelo de entrada. Para Multi-imagem para 3D, o Auto Split usa a primeira imagem de origem.
mode = by_parts or by_color- Name
- prompt
- Type
- string
- Obrigatório
- Description
Descreve as partes a dividir, em qualquer idioma. A Meshy lê entre 1 e 10 nomes de partes a partir do texto, por isso 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. Nomear uma única parte é aceitável: tudo o que não nomear torna-se uma parte restante, pelo quethe headdivide o modelo em cabeça e resto, tal como na aplicação web. Até 600 caracteres. Uma descrição que peça para não haver qualquer divisão, ou que nomeie mais de 10 partes, é rejeitada com400e nada é cobrado. Se a Meshy não conseguir ler nenhum nome de parte a partir da descrição, divide o modelo ao longo das partes que identifica na imagem de referência do modelo, no mode escolhido: a tarefa é mesmo assim executada e cobrada, e incluiprompt_ignored: true. Se o modelo não tiver imagem de referência, ou se a Meshy encontrar menos de duas partes na mesma, esse pedido é rejeitado com400e nada é cobrado.
- Name
- target_formats
- Type
- array
- predefinição ["glb"]
- Description
Formatos em que o modelo dividido é exportado. Os formatos que suportam objetos de cena (
glb,obj,fbx,usdz,blend,3mf) transportam cada parte como um objeto separado;stlnão tem noção de objetos separados, pelo que funde todas as partes num único sólido organizado porlayout(peça3mfpara partes selecionáveis separadamente num software de corte).glbé sempre produzido e devolvido emmodel_urls; indique quaisquer outros formatos que pretenda adicionalmente.Valores disponíveis:
glb,obj,fbx,stl,usdz,blend,3mf.
- Name
- layout
- Type
- string
- predefiniçã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 colocadas na horizontal e espalhadas na placa de construção, prontas a cortar — a mesma organização da vista On Plate da aplicação web.
Em ambos os layouts, um fragmento colapsado ou peça semelhante a um ponto resultante de um corte é removido antes da exportação, pelo que cada parte obtida é imprimível. Os formatos que suportam objetos de cena contêm um objeto por parte;
stlfunde-os num único sólido.
- Name
- connectors
- Type
- boolean
- predefinição false
- Description
Adiciona conectores de tipo macho-fêmea em cada corte, para que as partes impressas encaixem entre si.
connectors = true- Name
- connector_type
- Type
- string
- predefinição cube
- Description
A forma do conector em cada superfície de corte.
Valores disponíveis:
cube,cylinder.
- Name
- connector_size
- Type
- number
- predefinição 0.5
- Description
Tamanho do conector relativo à superfície de corte.
Intervalo válido:
0.1a0.8.
- Name
- connector_height
- Type
- number
- predefinição 0.1
- Description
A distância a que o conector se estende da superfície de corte, relativamente à superfície de corte.
Intervalo válido:
0.1a0.8.
Devolve
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
O pedido foi considerado inaceitável. Causas comuns:
- Prompt em falta:
prompté obrigatório quandomodeéby_partsouby_color. - O prompt não descreve nenhuma divisão, ou descreve demasiadas partes:
by_parts/by_coloraceita entre 1 e 10 peças nomeadas. Uma descrição que peça para manter o modelo numa só peça, ou que nomeie mais de 10 partes, é rejeitada. Nada é cobrado. - Tarefa de entrada não suportada:
input_task_iddeve referir-se a uma tarefa bem-sucedida de um tipo suportado, gerada com Meshy 6 ou Meshy 7. - Sem imagem de referência:
by_colorrequer uma entrada gerada a partir de uma imagem carregada. - Conector fora do intervalo:
connector_sizeouconnector_heightestá fora do intervalo0.1a0.8.
- Prompt em falta:
- Name
401 - Unauthorized- Description
A autenticação falhou. Por favor, verifique a 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
Excedeu o seu limite de taxa. Os pedidos
by_partseby_colorpartilham também um limite de análise de prompt de 12 pedidos 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 utilizemode: "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"
}
Obter uma tarefa de Auto Split
Este endpoint obtém uma tarefa de Auto Split através do seu ID.
Parâmetros
- Name
- id
- Type
- path
- Description
O ID da tarefa de Auto Split a obter.
Retorno
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
}
Eliminar uma Tarefa de Auto Split
Este endpoint elimina 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 eliminar.
Estado da Tarefa
Uma tarefa que ainda está PENDING é eliminada e os créditos consumidos no
momento da criação são reembolsados.
Uma tarefa que já está IN_PROGRESS não pode ser eliminada: o pedido é
rejeitado com 409 Conflict e a tarefa continua em execução. Os créditos de
uma tarefa que o worker já começou a processar não são reembolsáveis, pelo
que eliminá-la a meio da execução faria com que perdesse tanto os créditos
como o resultado. Aguarde até que atinja o estado SUCCEEDED, FAILED ou
CANCELED, e só depois a elimine.
Uma tarefa num estado terminal (SUCCEEDED, FAILED ou CANCELED) é
eliminada sem reembolso.
Retorna
Retorna 200 OK em caso de sucesso, ou 409 Conflict quando a tarefa está
IN_PROGRESS.
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
// 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."
}
Listar Tarefas de Auto Split
Este endpoint permite obter 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 do tamanho da página. O valor predefinido é
10itens. O máximo permitido é100itens; valores superiores são ajustados para100.
- Name
- sort_by
- Type
- string
- Description
Campo pelo qual ordenar. Valores disponíveis:
+created_at: Ordena pela hora de criação em ordem ascendente.-created_at: Ordena pela hora de criação em ordem descendente.
Retorna
Retorna uma lista paginada de Objetos de Tarefa de Auto Split.
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 para uma tarefa de Auto Split através de Server-Sent Events (SSE).
Parâmetros
- Name
- id
- Type
- path
- Description
Identificador único da tarefa de Auto Split a transmitir.
Retorna
Retorna um fluxo de The Auto Split Task Objects como Server-Sent Events.
Cada evento message transporta o objeto de tarefa completo, conforme devolvido por Retrieve an Auto Split Task, incluindo consumed_credits, os carimbos de data/hora e prompt_ignored; enquanto a tarefa está PENDING ou IN_PROGRESS, os campos que mudam entre frames são progress, status, started_at e preceding_tasks, e model_urls, thumbnail_url e part_count aparecem assim que atinge SUCCEEDED. Um evento error transporta apenas status_code e message, por isso deve-se distinguir 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
}
The Auto Split Task Object
Uma tarefa de 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, etc.), o model_url único e texture_urls nunca são preenchidos numa divisão e não são devolvidos. As propriedades que são preenchidas à medida que a tarefa decorre (thumbnail_url, model_urls, os carimbos de data/hora) estão sempre presentes, vazias até terem um valor, pelo que o conjunto de chaves não muda entre PENDING e SUCCEEDED.
- Name
- id
- Type
- string
- Description
Identificador único da tarefa. Embora utilizemos um UUID ordenável por k como detalhe de implementação para os ids das tarefas, não deve fazer quaisquer suposições sobre o formato do id.
- Name
- type
- Type
- string
- Description
Tipo da tarefa. O valor é
print-split.
- Name
- model_urls
- Type
- object
- Description
URLs transferíveis para o modelo dividido, uma por cada formato solicitado. Os formatos que suportam objetos de cena mantêm cada parte como um objeto separado;
stlfunde-os num único sólido. A propriedade de um formato será omitida se o formato não tiver sido solicitado.- Name
glb- Type
- string
- Description
URL transferível para o modelo dividido em formato GLB.
- Name
obj- Type
- string
- Description
URL transferível para o modelo dividido em formato OBJ.
- Name
fbx- Type
- string
- Description
URL transferível para o modelo dividido em formato FBX.
- Name
stl- Type
- string
- Description
URL transferível para o modelo dividido em formato STL. Todas as partes são fundidas num único sólido; solicite
3mfpara obter partes selecionáveis separadamente.
- Name
usdz- Type
- string
- Description
URL transferível para o modelo dividido em formato USDZ.
- Name
blend- Type
- string
- Description
URL transferível para o modelo dividido em formato Blender.
- Name
3mf- Type
- string
- Description
URL transferível para o modelo dividido em formato 3MF.
- Name
- thumbnail_url
- Type
- string
- Description
URL transferível para uma pré-visualização renderizada do modelo dividido, com cada parte numa cor distinta, no
layoutsolicitado.
- Name
- prompt_ignored
- Type
- boolean
- Description
truequando opromptde um pedidoby_partsouby_colornão nomeou quaisquer partes, pelo que a Meshy dividiu o modelo automaticamente — os nomes das partes no resultado são da Meshy, não os seus. Presente a partir dePENDING. Omitido para tarefasautoe sempre que o prompt tenha sido seguido.
- Name
- part_count
- Type
- integer
- Description
Número de partes imprimíveis que a divisão produziu. Os formatos que suportam objetos de cena contêm um objeto por parte;
stlfunde-os num único sólido, e a contagem continua a reportar as partes. Fragmentos reduzidos que a segmentação não conseguiu transformar numa peça imprimível são removidos dos ficheiros antes da exportação e não são contabilizados.
- Name
- progress
- Type
- integer
- Description
Progresso da tarefa. Se a tarefa ainda não tiver sido iniciada, esta propriedade será
0. Assim que a tarefa for bem-sucedida, passará a100.
- Name
- status
- Type
- string
- Description
Estado 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 estado 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 tiver sido 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 tiver sido concluída, esta propriedade será
0.
- Name
- task_error
- Type
- object
- Description
Detalhes do erro para tarefas falhadas. Consulte Erros para a referência completa do objeto
task_error. Se a verificação de segurança do fornecedor do modelo recusar o modelo de entrada, a tarefa falha comtask_error.typeinvalid_inputecodeprovider_content_refused. Consulte Erros.
- Name
- consumed_credits
- Type
- integer
- Description
O número de créditos consumidos por esta tarefa. Sempre presente:
10assim que a tarefa for aceite, e0para tarefasFAILED, uma vez que a cobrança é reembolsada em caso de falha. Eliminar uma tarefa enquanto ainda estáPENDINGtambém resulta no seu reembolso.
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
}