Auto Split API
3D 모델을 별도로 출력 가능한 파트로 분할합니다 — 자동으로, 사용자가 지정한 파트별로, 또는 색상 영역별로 — 커넥터를 선택적으로 추가할 수 있으며, 절단으로 인해 얇아진 영역은 항상 보강되어 모든 파트가 견고하게 출력됩니다.
분할 결과는 입력 텍스처를 유지하지 않습니다. Auto Split은 텍스처가 적용된 입력을 허용하므로, should_texture: false로 모델을 다시 생성할 필요가 없습니다. 절단된 파트를 재구성하고 각 파트에 단색 정점 색상을 지정합니다. 어떤 내보내기 형식에도 입력 텍스처 맵은 포함되지 않습니다.
Auto Split 작업 생성
이 엔드포인트는 새로운 Auto Split 작업을 생성합니다. 이 작업은 이전 작업의 모델을 개별적으로 출력 가능한 부품들로 절단하고, 각 부품이 파일 내에서 별도의 오브젝트가 되도록 분할된 모델을 반환합니다.
매개변수
- Name
- input_task_id
- Type
- string
- 필수
- Description
분할할 모델을 가진, 성공한 작업의 ID입니다. 지원되는 작업 유형: 이미지로 3D, 멀티 이미지로 3D, 텍스트로 3D (프리뷰), Remesh, 변환, 크기 조정. 작업의 상태는
SUCCEEDED여야 하며, 해당 모델은 Meshy 6 또는 Meshy 7(ai_model이meshy-6,meshy-7,meshy-7.1, 또는latest)로 생성된 것이어야 합니다. 로우폴리 및 Smart Topology(meshy-t2) 모델은 지원되지 않습니다. 텍스처가 적용된 모델도 허용되지만, 결과물에는 해당 텍스처가 반영되지 않습니다.
- Name
- mode
- Type
- string
- 기본값 auto
- Description
모델을 부품으로 분할하는 방식입니다.
사용 가능한 값:
auto: Meshy가 절단 위치를 결정합니다.prompt는 무시됩니다.by_parts:prompt에서 지정한 머리, 팔, 몸통 등 구조적 부품을 따라 절단합니다.by_color:prompt에서 지정한 색상 영역을 따라 절단합니다. 업로드된 이미지로부터 생성된 입력(이미지로 3D 또는 멀티 이미지로 3D)이 필요하며, 그 외의 입력은400으로 거부됩니다. 색상 영역 경계는 입력 모델의 텍스처가 아니라 소스 이미지에서 가져옵니다. 멀티 이미지로 3D의 경우, Auto Split은 첫 번째 소스 이미지를 사용합니다.
mode = by_parts or by_color- Name
- prompt
- Type
- string
- 필수
- Description
분할할 부품을 어떤 언어로든 설명합니다. Meshy는 여기서 1개에서 10개까지의 부품 이름을 읽어내므로, 모델을 설명하기보다는 조각의 이름을 지정하세요 — 예를 들어
split into the figure and the base, 또는head, torso, left arm, right arm, legs처럼요. 부품을 하나만 지정해도 괜찮습니다: 지정하지 않은 나머지 부분은 하나의 부품으로 남으므로, 웹 앱에서처럼the head는 모델을 머리와 나머지 부분으로 분할합니다. 최대 600자까지 가능합니다. 두 가지 실패 상황이 있습니다: 분할을 전혀 요청하지 않는 설명이거나 10개를 초과하는 부품을 지정한 경우400으로 거부되며 아무 비용도 청구되지 않습니다. Meshy가 전혀 해석할 수 없는 설명일 경우auto로 대체되어 작업이 그대로 실행되고 비용이 청구되며, 응답에는prompt_ignored: true가 포함됩니다.
- Name
- target_formats
- Type
- array
- 기본값 ["glb"]
- Description
분할된 모델을 내보낼 형식입니다. 씬 오브젝트를 지원하는 형식(
glb,obj,fbx,usdz,blend,3mf)은 각 부품을 별도의 오브젝트로 담습니다.stl은 별도 오브젝트 개념이 없으므로 모든 부품을layout에 따라 배치된 하나의 솔리드로 합칩니다(슬라이서에서 개별적으로 선택 가능한 부품을 원한다면3mf를 요청하세요).glb는 항상 생성되어model_urls에 반환되며, 그 외에 원하는 형식을 추가로 나열하면 됩니다.사용 가능한 값:
glb,obj,fbx,stl,usdz,blend,3mf.
- Name
- layout
- Type
- string
- 기본값 assembled
- Description
모든 출력 형식 및 썸네일에서 부품이 배치되는 방식입니다.
사용 가능한 값:
assembled: 부품이 소스 모델에 있던 위치 그대로 유지됩니다.on_plate: 부품이 평평하게 놓여 빌드 플레이트 위에 펼쳐지며, 바로 슬라이싱할 수 있는 상태가 됩니다 — 웹 앱의 On Plate 뷰와 동일한 배치입니다.
두 레이아웃 모두에서, 절단 후 남은 얇은 조각이나 점처럼 붕괴된 조각은 내보내기 전에 제거되므로, 얻게 되는 모든 부품은 출력 가능합니다. 씬 오브젝트를 지원하는 형식은 부품마다 하나의 오브젝트를 담으며,
stl은 이들을 하나의 솔리드로 합칩니다.
- Name
- connectors
- Type
- boolean
- 기본값 false
- Description
각 절단면에 출력된 부품들이 서로 맞물리도록 장부-장부구멍(mortise-and-tenon) 커넥터를 추가합니다.
connectors = true- Name
- connector_type
- Type
- string
- 기본값 cube
- Description
각 절단면에 사용되는 커넥터의 형태입니다.
사용 가능한 값:
cube,cylinder.
- Name
- connector_size
- Type
- number
- 기본값 0.5
- Description
절단면 대비 커넥터의 상대적 크기입니다.
유효 범위:
0.1에서0.8.
- Name
- connector_height
- Type
- number
- 기본값 0.1
- Description
커넥터가 절단면 대비 상대적으로 얼마나 돌출되는지를 나타냅니다.
유효 범위:
0.1에서0.8.
반환값
응답의 result 속성에는 새로 생성된 Auto Split 작업의 id가 포함됩니다.
실패 모드
- Name
400 - Bad Request- Description
요청이 허용되지 않았습니다. 일반적인 원인:
- prompt 누락:
mode가by_parts또는by_color일 경우prompt는 필수입니다. - 분할을 요청하지 않는 prompt이거나 부품이 너무 많은 경우:
by_parts/by_color는 1개에서 10개까지의 이름이 지정된 조각을 허용합니다. 모델을 한 조각으로 유지해 달라는 설명이거나 10개를 초과하는 부품을 지정한 경우 거부됩니다. 아무 비용도 청구되지 않습니다. - 지원되지 않는 입력 작업:
input_task_id는 Meshy 6 또는 Meshy 7으로 생성된, 지원되는 유형의 성공한 작업을 참조해야 합니다. - 참조 이미지 없음:
by_color는 업로드된 이미지로부터 생성된 입력이 필요합니다. - 범위를 벗어난 커넥터:
connector_size또는connector_height가0.1에서0.8범위를 벗어났습니다.
- prompt 누락:
- Name
401 - Unauthorized- Description
인증에 실패했습니다. API 키를 확인해 주세요.
- Name
402 - Payment Required- Description
이 작업을 수행하기에 크레딧이 부족합니다.
- Name
404 - Not Found- Description
input_task_id가 존재하지 않거나 사용자의 계정에 속하지 않습니다.
- Name
429 - Too Many Requests- Description
속도 제한을 초과했습니다.
by_parts및by_color요청은 계정당 분당 12건이라는 prompt 파싱 제한도 공유합니다.
- Name
503 - Service Unavailable- Description
prompt 기반 분할(
by_parts및by_color)을 일시적으로 사용할 수 없습니다. 나중에 다시 시도하거나, 영향을 받지 않는mode: "auto"를 사용하세요. 아무 비용도 청구되지 않습니다.
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"
}
Auto Split 작업 조회하기
이 엔드포인트는 ID를 통해 Auto Split 작업을 조회합니다.
매개변수
- Name
- id
- Type
- path
- Description
조회할 Auto Split 작업의 ID입니다.
반환값
Auto Split Task 객체입니다.
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
}
Auto Split 작업 삭제
이 엔드포인트는 Auto Split 작업을 관련된 모든 모델 및 데이터와 함께 영구적으로 삭제합니다. 이 작업은 되돌릴 수 없습니다.
경로 매개변수
- Name
- id
- Type
- path
- Description
삭제할 Auto Split 작업의 ID입니다.
작업 상태
아직 PENDING 상태인 작업은 삭제되며, 생성 시 소모된 크레딧이
환불됩니다.
이미 IN_PROGRESS 상태인 작업은 삭제할 수 없습니다. 요청은
409 Conflict로 거부되며 작업은 계속 실행됩니다. 워커가 이미 시작한
작업의 크레딧은 환불되지 않으므로, 실행 도중 삭제하면 크레딧과
결과물을 모두 잃게 됩니다. 작업이 SUCCEEDED, FAILED 또는
CANCELED 상태에 도달할 때까지 기다린 후 삭제하세요.
종료 상태(SUCCEEDED, FAILED 또는 CANCELED)의 작업은
환불 없이 삭제됩니다.
반환값
성공 시 200 OK를 반환하며, 작업이 IN_PROGRESS 상태일 때는
409 Conflict를 반환합니다.
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."
}
Auto Split 작업 목록 조회
이 엔드포인트를 사용하면 Auto Split 작업 목록을 조회할 수 있습니다.
매개변수
선택적 속성
- Name
- page_num
- Type
- integer
- Description
페이지네이션을 위한 페이지 번호입니다.
1부터 시작하며 기본값은1입니다.
- Name
- page_size
- Type
- integer
- Description
페이지 크기 제한입니다. 기본값은
10개 항목입니다. 최대 허용값은100개 항목이며, 더 큰 값은100으로 제한됩니다.
- Name
- sort_by
- Type
- string
- Description
정렬 기준 필드입니다. 사용 가능한 값:
+created_at: 생성 시간 오름차순으로 정렬합니다.-created_at: 생성 시간 내림차순으로 정렬합니다.
반환값
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
}
]
Auto Split 작업 스트리밍
이 엔드포인트는 Server-Sent Events(SSE)를 사용하여 Auto Split 작업의 실시간 업데이트를 스트리밍합니다.
Parameters
- Name
- id
- Type
- path
- Description
스트리밍할 Auto Split 작업의 고유 식별자입니다.
Returns
The Auto Split Task Objects의 스트림을 Server-Sent Events 형태로 반환합니다.
모든 message 이벤트는 Retrieve an Auto Split Task에서 반환되는 것과 동일한 전체 작업 객체를 담고 있으며, 여기에는 consumed_credits, 타임스탬프, prompt_ignored가 포함됩니다. 작업이 PENDING 또는 IN_PROGRESS 상태인 동안 프레임 사이에서 변경되는 필드는 progress, status, started_at, preceding_tasks이며, SUCCEEDED 상태에 도달하면 model_urls, thumbnail_url, part_count가 나타납니다. error 이벤트는 status_code와 message만 담고 있으므로, 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
Auto Split 작업은 아래 속성만 포함합니다. 다른 작업 객체에 포함되는 생성 프롬프트 필드(name, object_prompt, texture_prompt 등)와 단일 model_url, texture_urls는 분할 작업에서는 채워지지 않으며 반환되지 않습니다. 작업이 진행되며 채워지는 속성들(thumbnail_url, model_urls, 타임스탬프들)은 항상 존재하며, 값이 생기기 전까지는 비어 있으므로 PENDING과 SUCCEEDED 사이에 키 집합이 달라지지 않습니다.
- Name
- id
- Type
- string
- Description
작업의 고유 식별자입니다. 구현 세부사항으로 작업 id에는 k-정렬 가능한 UUID를 사용하지만, id의 형식에 대해 어떠한 가정도 하지 말아야 합니다.
- Name
- type
- Type
- string
- Description
작업의 유형입니다. 값은
print-split입니다.
- Name
- model_urls
- Type
- object
- Description
요청한 형식마다 하나씩 제공되는, 분할된 모델의 다운로드 가능한 URL입니다. 씬 객체를 지원하는 형식은 각 파트를 개별 객체로 유지하며,
stl은 이를 하나의 솔리드로 합칩니다. 요청하지 않은 형식의 속성은 생략됩니다.- Name
glb- Type
- string
- Description
GLB 형식의 분할된 모델에 대한 다운로드 가능한 URL입니다.
- Name
obj- Type
- string
- Description
OBJ 형식의 분할된 모델에 대한 다운로드 가능한 URL입니다.
- Name
fbx- Type
- string
- Description
FBX 형식의 분할된 모델에 대한 다운로드 가능한 URL입니다.
- Name
stl- Type
- string
- Description
STL 형식의 분할된 모델에 대한 다운로드 가능한 URL입니다. 모든 파트가 하나의 솔리드로 합쳐집니다. 개별적으로 선택 가능한 파트가 필요하면
3mf를 요청하세요.
- Name
usdz- Type
- string
- Description
USDZ 형식의 분할된 모델에 대한 다운로드 가능한 URL입니다.
- Name
blend- Type
- string
- Description
Blender 형식의 분할된 모델에 대한 다운로드 가능한 URL입니다.
- Name
3mf- Type
- string
- Description
3MF 형식의 분할된 모델에 대한 다운로드 가능한 URL입니다.
- Name
- thumbnail_url
- Type
- string
- Description
요청한
layout으로, 각 파트가 서로 다른 색상으로 표시된 분할 모델의 렌더링된 미리보기에 대한 다운로드 가능한 URL입니다.
- Name
- prompt_ignored
- Type
- boolean
- Description
by_parts또는by_color요청의prompt가 어떤 파트도 지정하지 않아 Meshy가 대신 모델을 자동으로 분할한 경우true입니다 — 이 경우 결과의 파트 이름은 사용자가 지정한 것이 아니라 Meshy가 지정한 것입니다.PENDING상태부터 존재합니다.auto작업이거나 프롬프트가 그대로 따라진 경우에는 생략됩니다.
- Name
- part_count
- Type
- integer
- Description
분할로 생성된 출력 가능한 파트의 수입니다. 씬 객체를 지원하는 형식은 파트마다 하나의 객체를 포함하며,
stl은 이들을 하나의 솔리드로 합치지만 개수는 여전히 파트 수를 보고합니다. 세그멘테이션이 출력 가능한 조각으로 만들지 못한, 찌그러진 조각들은 내보내기 전에 파일에서 제거되며 개수에 포함되지 않습니다.
- Name
- progress
- Type
- integer
- Description
작업의 progress입니다. 작업이 아직 시작되지 않은 경우 이 속성은
0입니다. 작업이 성공하면100이 됩니다.
- Name
- status
- Type
- string
- Description
작업의 상태입니다. 가능한 값은
PENDING,IN_PROGRESS,SUCCEEDED,FAILED,CANCELED중 하나입니다.
- Name
- preceding_tasks
- Type
- integer
- Description
선행 작업의 수입니다.
이 필드의 값은 작업 상태가
PENDING일 때만 의미가 있습니다.
- Name
- created_at
- Type
- timestamp
- Description
작업이 생성된 시각의 타임스탬프로, 밀리초 단위입니다.
- Name
- started_at
- Type
- timestamp
- Description
작업이 시작된 시각의 타임스탬프로, 밀리초 단위입니다. 작업이 아직 시작되지 않은 경우 이 속성은
0입니다.
- Name
- finished_at
- Type
- timestamp
- Description
작업이 완료된 시각의 타임스탬프로, 밀리초 단위입니다. 작업이 아직 완료되지 않은 경우 이 속성은
0입니다.
- Name
- task_error
- Type
- object
- Description
실패한 작업에 대한 오류 세부정보입니다.
task_error객체의 전체 참조는 오류를 참조하세요.
- Name
- consumed_credits
- Type
- integer
- Description
이 작업에서 소비된 크레딧 수입니다. 항상 존재하며, 작업이 수락되면
10이고, 실패 시에는 요금이 환불되므로FAILED작업의 경우0입니다. 작업이 아직PENDING인 상태에서 삭제되어도 환불됩니다.
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
}