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.


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 que podem ser impressas 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 (preview), Remesh, Converter e Redimensionar. A tarefa deve ter o status SUCCEEDED, e 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 texturizado é aceito, e sua textura não é carregada para o resultado.

  • 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 em prompt, como cabeça, braços e tronco.
    • by_color: Corta ao longo das regiões de cor que você nomear em prompt. Requer uma entrada gerada a partir de uma imagem enviada (Imagem para 3D ou Multi-imagem para 3D); outras entradas são rejeitadas com 400. Os limites das regiões de cor vê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 somente quando 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 disso, então 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 parte é aceitável: tudo o que você não nomeou se torna uma parte restante, então the head divide o modelo entre a cabeça e o restante, como no aplicativo web. Até 600 caracteres. Dois modos de falha: uma descrição que pede para não haver divisão alguma, ou que nomeia mais de 10 partes, é rejeitada com 400 e nada é cobrado; uma descrição que a Meshy não consegue interpretar de forma alguma volta para auto, a tarefa ainda é executada e cobrada, e sua resposta traz prompt_ignored: true.

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

    Formatos nos quais exportar o modelo dividido. Formatos que suportam objetos de cena (glb, obj, fbx, usdz, blend, 3mf) carregam cada parte como um objeto separado; stl não tem noção de objetos separados, então funde cada parte em um único sólido organizado por layout (solicite 3mf para partes selecionáveis separadamente em um fatiador). glb é sempre produzido e retornado em model_urls; liste quaisquer outros formatos que desejar além dele.

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

  • 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 estavam no modelo de origem.
    • on_plate: As partes são dispostas planas e espalhadas na mesa de impressão, prontas para fatiar — o mesmo arranjo da visão On Plate do aplicativo web.

    Em ambos os layouts, uma lasca colapsada ou pedaço semelhante a um ponto remanescente de um corte é removido antes da exportação, de modo que toda parte que você recebe seja imprimível. Formatos que suportam objetos de cena mantêm um objeto por parte; stl os funde em um único sólido.

  • Name
    connectors
    Type
    boolean
    padrão false
    Description

    Adiciona conectores do tipo espiga e encaixe em cada corte para que as partes impressas se encaixem.

Aplica-se somente quando connectors = true
  • Name
    connector_type
    Type
    string
    padrão cube
    Description

    O formato 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.1 a 0.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.1 a 0.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 solicitação foi inaceitável. Causas comuns:

    • Prompt ausente: prompt é obrigatório quando mode é by_parts ou by_color.
    • Prompt não descreve nenhuma divisão, ou nomeia partes demais: by_parts / by_color aceita de 1 a 10 peças nomeadas. Uma descrição que pede para manter o modelo em uma única peça, ou que nomeia mais de 10 partes, é rejeitada. Nada é cobrado.
    • Tarefa de entrada não suportada: input_task_id deve se referir 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 enviada.
    • Conector fora do intervalo: connector_size ou connector_height está fora de 0.1 a 0.8.
  • 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_id não existe ou não pertence à sua conta.

  • Name
    429 - Too Many Requests
    Description

    Você excedeu seu limite de taxa. Solicitações by_parts e by_color também compartilham um limite de análise de prompt de 12 solicitações 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 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

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

Excluir uma Tarefa de Auto Split

Este endpoint exclui permanentemente uma tarefa de Auto Split, incluindo todos os modelos e dados associados. Essa ação é irreversível.

Parâmetros de Rota

  • Name
    id
    Type
    path
    Description

    O ID da tarefa de Auto Split a ser excluída.

Status da Tarefa

Uma tarefa que ainda está PENDING é excluída e os créditos consumidos no momento da criação são reembolsados.

Uma tarefa que já está IN_PROGRESS não pode ser excluída: a solicitação é rejeitada 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, então excluí-la no meio da execução custaria tanto os créditos quanto o resultado. Aguarde até que ela atinja SUCCEEDED, FAILED ou CANCELED e então exclua-a.

Uma tarefa em um estado terminal (SUCCEEDED, FAILED ou CANCELED) é excluída sem reembolso.

Retornos

Retorna 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 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 é 10 itens. O máximo permitido é 100 itens; valores maiores são limitados a 100.

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

Cada 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 está PENDING ou IN_PROGRESS, os campos que mudam entre os frames são progress, status, started_at e preceding_tasks, e model_urls, thumbnail_url e part_count aparecem assim que ela atinge SUCCEEDED. Um evento error carrega apenas status_code e message, então diferencie pelo 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 de Auto Split

Uma tarefa de Auto Split carrega 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 o texture_urls nunca são preenchidos para um split e não são retornados. 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 os ids de tarefa 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 para cada formato solicitado. Formatos que suportam objetos de cena mantêm cada parte como um objeto separado; stl funde tudo em um único sólido. 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 em formato GLB.

    • Name
      obj
      Type
      string
      Description

      URL para download do modelo dividido em formato OBJ.

    • Name
      fbx
      Type
      string
      Description

      URL para download do modelo dividido em formato FBX.

    • Name
      stl
      Type
      string
      Description

      URL para download do modelo dividido em formato STL. Todas as partes são fundidas em um único sólido; solicite 3mf para obter partes separadamente selecionáveis.

    • Name
      usdz
      Type
      string
      Description

      URL para download do modelo dividido em formato USDZ.

    • Name
      blend
      Type
      string
      Description

      URL para download do modelo dividido em formato Blender.

    • Name
      3mf
      Type
      string
      Description

      URL para download do modelo dividido em formato 3MF.

  • Name
    thumbnail_url
    Type
    string
    Description

    URL para download de uma pré-visualização renderizada do modelo dividido, com cada parte em uma cor distinta, no layout solicitado.

  • Name
    prompt_ignored
    Type
    boolean
    Description

    true quando o prompt de uma solicitação by_parts ou by_color não nomeou nenhuma parte, então a Meshy dividiu o modelo automaticamente — os nomes das partes no resultado são da Meshy, não os seus. Presente a partir de PENDING. Omitido para tarefas auto e sempre que o prompt foi seguido.

  • Name
    part_count
    Type
    integer
    Description

    Número de partes imprimíveis que o split produziu. Formatos que suportam objetos de cena carregam um objeto por parte; stl funde tudo em um único sólido, e a contagem ainda reporta as partes. 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. Quando a tarefa for bem-sucedida, ela se tornará 100.

  • Name
    status
    Type
    string
    Description

    Status da tarefa. Os valores possíveis são 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 foi iniciada, esta propriedade será 0.

  • Name
    finished_at
    Type
    timestamp
    Description

    Carimbo de data/hora de quando a tarefa foi finalizada, em milissegundos. Se a tarefa ainda não foi finalizada, esta propriedade será 0.

  • Name
    task_error
    Type
    object
    Description

    Detalhes de erro para tarefas com falha. 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. Sempre presente: 10 assim que a tarefa é aceita, e 0 para tarefas FAILED, pois a cobrança é reembolsada em caso de falha. Excluir uma tarefa enquanto ela 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
}