API do Auto Split

Divida um modelo 3D em peças imprimíveis em separado — 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 peças imprimíveis separadamente e devolve o modelo segmentado, com cada peça como um objeto próprio no ficheiro.

Parâmetros

  • Name
    input_task_id
    Type
    string
    Obrigatório
    Description

    O ID de uma tarefa bem-sucedida cujo modelo 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_model meshy-6, meshy-7, meshy-7.1, ou latest). Modelos low-poly e Smart Topology (meshy-t2) 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 peças.

    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. 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.
Aplica-se apenas quando mode = by_parts or by_color
  • Name
    prompt
    Type
    string
    Obrigatório
    Description

    Descreve as peças a dividir, em qualquer idioma. A Meshy lê entre 1 e 10 nomes de peças a partir daqui, 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. Nomear uma única peça é aceitável: tudo o que não nomear torna-se uma única peça restante, pelo que the head divide o modelo na cabeça e no resto, tal como na aplicação web. Até 600 caracteres. Dois modos de falha: uma descrição que não pede qualquer divisão, ou que nomeia mais de 10 peças, é rejeitada com 400 e não é cobrado qualquer valor; uma descrição que a Meshy não consegue interpretar de todo recorre a auto, a tarefa é executada e cobrada na mesma, e a sua resposta inclui prompt_ignored: true.

  • 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 peça como um objeto separado; stl não tem noção de objetos separados, pelo que funde todas as peças num único sólido organizado por layout (peça 3mf para obter peças selecionáveis individualmente num software de corte). glb é sempre produzido e devolvido em model_urls; indique quaisquer outros formatos adicionais que pretenda.

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

  • Name
    layout
    Type
    string
    predefinição assembled
    Description

    Como as peças são organizadas em cada formato de saída, e na miniatura.

    Valores disponíveis:

    • assembled: As peças mantêm-se onde o modelo de origem as tinha.
    • on_plate: As peças são colocadas planas e espalhadas na placa de impressão, prontas a fatiar — a mesma organização da vista On Plate da aplicação web.

    Em ambas as organizações, uma lasca colapsada ou uma peça semelhante a um ponto que resulte de um corte é removida antes da exportação, para que todas as peças obtidas sejam imprimíveis. Os formatos que suportam objetos de cena mantêm um objeto por peça; stl funde-as 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 peças 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

    A distância a que 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 considerado inaceitável. Causas comuns:

    • Prompt em falta: prompt é obrigatório quando mode é by_parts ou by_color.
    • O prompt não descreve qualquer divisão, ou tem demasiadas peças: by_parts / by_color aceita entre 1 e 10 peças nomeadas. Uma descrição que pede para manter o modelo numa só peça, ou que nomeia mais de 10 peças, é rejeitada. Não é cobrado qualquer valor.
    • Tarefa de entrada não suportada: input_task_id deve referir-se a uma tarefa bem-sucedida de um tipo suportado, gerada com Meshy 6 ou Meshy 7.
    • Sem imagem de referência: by_color requer uma entrada gerada a partir de uma imagem carregada.
    • 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 partilham também um limite de análise de prompts 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. Não é cobrado qualquer valor.

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

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.

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

  • Name
    id
    Type
    path
    Description

    O ID da tarefa de Auto Split a eliminar.

Estado da Tarefa

Uma tarefa que ainda esteja PENDING é eliminada e os créditos consumidos no momento da criação são reembolsados.

Uma tarefa que já esteja 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á iniciou não são reembolsáveis, pelo que eliminá-la a meio da execução custar-lhe-ia tanto os créditos como o resultado. Espere 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.

Devolve

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

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

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

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 paginação. Começa e tem como valor predefinido 1.

  • Name
    page_size
    Type
    integer
    Description

    Limite do tamanho da página. O valor predefinido é 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: Ordenar pela hora de criação em ordem ascendente.
    • -created_at: Ordenar pela hora de criação em ordem descendente.

Retorna

Retorna 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 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 transmitir.

Devolve

Devolve 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, 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 e part_count aparecem quando atinge SUCCEEDED. Um evento error transporta apenas status_code e message, por isso deve verificar-se o 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 Auto Split Task

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 único model_url, e texture_urls nunca são preenchidos para uma divisão e não são devolvidos. As propriedades que são preenchidas à 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 utilizemos um UUID k-sortable para os ids das tarefas como detalhe de implementação, 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 para transferência do modelo dividido, um por cada formato solicitado. Os formatos que suportam objetos de cena mantêm cada peça como um objeto separado; o stl funde-os num único sólido. A propriedade de um formato será omitida se esse formato não tiver sido solicitado.

    • Name
      glb
      Type
      string
      Description

      URL para transferência do modelo dividido em formato GLB.

    • Name
      obj
      Type
      string
      Description

      URL para transferência do modelo dividido em formato OBJ.

    • Name
      fbx
      Type
      string
      Description

      URL para transferência do modelo dividido em formato FBX.

    • Name
      stl
      Type
      string
      Description

      URL para transferência do modelo dividido em formato STL. Todas as peças são fundidas num único sólido; solicite 3mf para obter peças selecionáveis separadamente.

    • Name
      usdz
      Type
      string
      Description

      URL para transferência do modelo dividido em formato USDZ.

    • Name
      blend
      Type
      string
      Description

      URL para transferência do modelo dividido em formato Blender.

    • Name
      3mf
      Type
      string
      Description

      URL para transferência do modelo dividido em formato 3MF.

  • Name
    thumbnail_url
    Type
    string
    Description

    URL para transferência de 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 nenhuma peça, pelo que a Meshy dividiu o modelo automaticamente em vez disso — os nomes das peças no resultado são da Meshy, não os seus. Presente a partir de PENDING. Omitido em tarefas auto e sempre que o prompt tenha sido seguido.

  • Name
    part_count
    Type
    integer
    Description

    Número de peças imprimíveis que a divisão produziu. Os formatos que suportam objetos de cena transportam um objeto por peça; o stl funde-os num único sólido, e a contagem continua a reportar as peças. 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 começado, esta propriedade será 0. Uma vez que a tarefa tenha sido 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 começado, esta propriedade será 0.

  • Name
    finished_at
    Type
    timestamp
    Description

    Carimbo de data/hora de quando a tarefa terminou, em milissegundos. Se a tarefa ainda não tiver terminado, 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 uma vez que a tarefa tenha sido aceite, e 0 para tarefas FAILED, porque 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
}