API do Auto Split

Divida um modelo 3D em peças imprimíveis separadamente — automaticamente, pelas peças que nomear, 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.


POST/openapi/v1/print/split

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 devolve o modelo segmentado, com cada parte como o seu próprio objeto no ficheiro.

Parâmetros

  • Name
    input_task_id
    Type
    string
    Obrigatório
    Description

    O ID de uma tarefa bem-sucedida cujo modelo deve 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 o estado SUCCEEDED, e o seu modelo deve ter sido gerado com Meshy 6 ou Meshy 7 (ai_model meshy-6, meshy-7, ou latest). Modelos low-poly e Smart Topology (meshy-t2) não são suportados.

  • 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 em prompt, como cabeça, braços e tronco.
    • by_color: Corta ao longo das regiões de cor que nomear em prompt. Requer uma entrada gerada a partir de uma imagem carregada (Imagem para 3D ou Multi-imagem para 3D); outras entradas são rejeitadas com 400.
Aplica-se apenas quando 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 daí, por isso nomeie as peças em vez de descrever o modelo — por exemplo split into the figure and the base, ou head, torso, left arm, right arm, legs. Até 600 caracteres. Existem dois modos de falha: uma descrição que se lê como uma divisão mas nomeia menos de duas partes (por exemplo split into individual parts) é rejeitada com 400 e nada é cobrado; uma descrição que a Meshy não consegue interpretar de todo recua para auto, a tarefa continua a ser executada e é cobrada, e a sua resposta traz prompt_ignored: true.

  • Name
    target_formats
    Type
    array
    predefinição ["glb"]
    Description

    Formatos em que exportar o modelo dividido. Cada parte é um objeto separado em todos os formatos. glb é sempre produzido e devolvido em model_urls; indique quaisquer outros formatos que pretenda além desse.

    Valores disponíveis: glb, obj, fbx, usdz, blend, 3mf.

    3mf é escrito para software de corte: um objeto por parte, cada um no seu próprio slot de filamento, para que o Bambu Studio abra o ficheiro como partes coloridas individualmente e selecionáveis em separado (o arquivo transporta uma configuração de projeto do Bambu Studio; outros programas de corte leem apenas a geometria). Tal como os outros formatos de impressão da Meshy, está em milímetros e, uma vez que este endpoint não recebe um tamanho-alvo, o modelo inteiro é escalado de modo a que o seu lado mais longo seja 150 mm — o mesmo limite máximo usado pelas outras exportações em formato de impressão, escolhido para caber em qualquer plataforma de impressão convencional. Com layout: "on_plate", o limite aplica-se à plataforma disposta como um todo, pelo que o ficheiro fica pronto a cortar; com assembled, as partes ficam onde o modelo de origem as tinha e é o utilizador que as organiza no software de corte.

  • Name
    layout
    Type
    string
    predefinição assembled
    Description

    Como as partes são dispostas em cada formato de saída e na miniatura.

    Valores disponíveis:

    • assembled: As partes ficam onde o modelo de origem as tinha.
    • on_plate: As partes são dispostas planas e espalhadas na plataforma de impressão, prontas a cortar — a mesma disposição da vista On Plate da aplicação web.

    Em ambas as disposições, os ficheiros exportados contêm um objeto por parte e nada mais: um fragmento colapsado ou uma peça semelhante a um ponto, resultante de um corte, é removido antes da exportação, pelo que todos os objetos encontrados no ficheiro são imprimíveis.

  • Name
    connectors
    Type
    boolean
    predefinição false
    Description

    Adiciona conectores de macho-fêmea (mortise-and-tenon) em cada corte para que as partes impressas encaixem entre si.

Aplica-se apenas quando 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.1 a 0.8.

  • Name
    connector_height
    Type
    number
    predefinição 0.1
    Description

    Até que distância o conector se estende a partir da superfície de corte, relativamente à superfície de corte.

    Intervalo válido: 0.1 a 0.8.

Retorno

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 inaceitável. Causas comuns:

    • Prompt em falta: prompt é obrigatório quando mode é by_parts ou by_color.
    • O prompt nomeia menos de duas partes: by_parts / by_color requer pelo menos duas peças nomeadas (por exemplo head, torso, base); uma instrução genérica como split into individual parts é rejeitada. Nada é cobrado.
    • Tarefa de entrada não suportada: O input_task_id deve referir-se a uma tarefa bem-sucedida de um tipo suportado, gerada com Meshy 6 ou Meshy 7.
    • Entrada com textura: O modelo de entrada tem texturas. Por agora, apenas modelos sem textura são suportados.
    • Sem imagem de referência: by_color requer uma entrada gerada a partir de uma imagem carregada.
    • Formato não suportado: target_formats contém stl.
    • Conector fora do intervalo: connector_size ou connector_height está fora do intervalo 0.1 a 0.8.
  • Name
    401 - Unauthorized
    Description

    A autenticação falhou. 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_id não existe ou não pertence à sua conta.

  • Name
    429 - Too Many Requests
    Description

    Excedeu o seu limite de taxa. Os pedidos by_parts e by_color também partilham 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_parts e by_color) está temporariamente indisponível. Tente novamente mais tarde, ou use mode: "auto", que não é afetado. Nada é cobrado.

Request

POST
/openapi/v1/print/split
# 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"
}

GET/openapi/v1/print/split/:id

Retrieve an Auto Split Task

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.

Retorna

O objeto da tarefa de Auto Split.

Request

GET
/openapi/v1/print/split/a43b5c6d-7e8f-901a-234b-567c890d1e2f
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
}

DELETE/openapi/v1/print/split/:id

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 do Caminho

  • Name
    id
    Type
    path
    Description

    O ID da tarefa de Auto Split a eliminar.

Retorna

Retorna 200 OK em caso de sucesso.

Request

DELETE
/openapi/v1/print/split/a43b5c6d-7e8f-901a-234b-567c890d1e2f
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.

GET/openapi/v1/print/split

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 a paginação. Começa e assume por predefinição 1.

  • Name
    page_size
    Type
    integer
    Description

    Limite do tamanho da página. Por predefinição são 10 itens. O máximo permitido é 100 itens; valores superiores são limitados a 100.

  • Name
    sort_by
    Type
    string
    Description

    Campo pelo qual ordenar. Valores disponíveis:

    • +created_at: Ordena por hora de criação, por ordem crescente.
    • -created_at: Ordena por hora de criação, por ordem decrescente.

Retorno

Devolve uma lista paginada de Objetos de Tarefa de Auto Split.

Request

GET
/openapi/v1/print/split
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
  }
]

GET/openapi/v1/print/split/:id/stream

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.

Devolve

Devolve um fluxo de Objetos de Tarefa de Auto Split como Server-Sent Events.

Cada evento message transporta o objeto de tarefa completo, tal como devolvido por Obter uma Tarefa de Auto Split, incluindo consumed_credits, as marcas temporais 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, part_count e parts aparecem assim que atinge SUCCEEDED. Um evento error transporta apenas status_code e message, pelo que deve fazer a distinção com base no nome do evento antes de ler status.

Request

GET
/openapi/v1/print/split/a43b5c6d-7e8f-901a-234b-567c890d1e2f/stream
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, entre outros), o model_url único e as texture_urls nunca são preenchidos numa divisão e não são devolvidos. As propriedades que se vão preenchendo à medida que a tarefa avança (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 usemos um UUID k-sortable como detalhe de implementação para os ids das tarefas, não deve fazer 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. Cada peça é um objeto separado no ficheiro. A propriedade de um formato será omitida se esse 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
      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: um objeto por peça, cada uma no seu próprio slot de filamento, em milímetros, dimensionado de modo a que o lado mais longo tenha 150 mm, com uma configuração de projeto do Bambu Studio.

  • Name
    thumbnail_url
    Type
    string
    Description

    URL transferível para uma pré-visualização renderizada do modelo dividido, com cada peça numa cor distinta, no layout solicitado.

  • Name
    prompt_ignored
    Type
    boolean
    Description

    true quando o prompt de um pedido by_parts ou by_color não indicou nomes de peças, pelo que o Meshy dividiu o modelo automaticamente — os nomes das peças no resultado são do Meshy, não os seus. Presente a partir de PENDING. Omitido nas tarefas auto e sempre que o prompt tenha sido seguido.

  • Name
    part_count
    Type
    integer
    Description

    Número de peças imprimíveis no modelo dividido — uma por cada objeto nos ficheiros exportados. Fragmentos colapsados 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 concluída com sucesso, passará a ser 100.

  • 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.

  • 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.

  • Name
    consumed_credits
    Type
    integer
    Description

    O número de créditos consumidos por esta tarefa. Está sempre presente: 10 assim que a tarefa é aceite, e 0 para tarefas FAILED, uma vez que a cobrança é reembolsada em caso de falha. Eliminar uma tarefa enquanto ainda está PENDING també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
}