Auto Split API
3D 모델을 별도로 출력 가능한 부품으로 분할합니다 — 자동으로, 사용자가 지정한 부품 단위로, 또는 색상 영역별로 분할하며 선택적으로 커넥터를 추가할 수 있습니다. 절단으로 인해 얇아진 부위는 모든 부품이 견고하게 출력될 수 있도록 항상 보강 처리됩니다.
분할 결과는 입력 텍스처를 유지하지 않습니다. Auto Split은 텍스처가 적용된 입력을 허용하므로, should_texture: false로 모델을 다시 생성할 필요가 없습니다. 분할된 부품을 재구성하고 각 부품에 단색 정점 색상을 지정합니다. 내보내는 형식에는 입력 텍스처 맵이 포함되지 않습니다.
Auto Split 작업 생성하기
이 엔드포인트는 새로운 Auto Split 작업을 생성합니다. 이 작업은 이전 작업의 모델을 개별적으로 출력 가능한 파츠로 절단하고, 각 파츠를 파일 내 개별 객체로 하여 분할된 모델을 반환합니다.
작업은 백그라운드에서 실행됩니다. 일반적으로 소요되는 시간은 처리 시간을 참고하세요.
매개변수
- Name
- input_task_id
- Type
- string
- 필수
- Description
분할할 모델을 가진, 성공한 작업의 ID입니다. 지원되는 작업 유형: 이미지로 3D, 멀티 이미지로 3D, 텍스트로 3D (프리뷰), 리메시, 변환, 크기 조정. 해당 작업의 상태는
SUCCEEDED여야 하며, 모델은 Meshy 6 또는 Meshy 7(ai_modelmeshy-6,meshy-7,meshy-7.1, 또는latest)로 생성된 것이어야 합니다. 로우폴리 및 Smart Topology(meshy-t2,meshy-t2.5) 모델은 지원되지 않습니다. 텍스처가 적용된 모델도 허용되지만, 해당 텍스처는 결과물에 반영되지 않습니다.
- 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가 설명에서 파츠 이름을 전혀 읽어내지 못하면, 선택한 mode에 따라 모델의 참조 이미지에서 식별한 파츠를 기준으로 대신 분할합니다. 이 경우 작업은 그대로 실행되고 비용이 청구되며,prompt_ignored: true가 포함됩니다. 모델에 참조 이미지가 없거나, Meshy가 참조 이미지에서 2개 미만의 파츠만 찾은 경우에는 해당 요청이 대신400으로 거부되며 아무런 비용도 청구되지 않습니다.
- 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가 필요합니다. - 분할을 지정하지 않았거나 파츠가 너무 많음:
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 작업에 대한 실시간 업데이트를 스트리밍합니다.
매개변수
- Name
- id
- Type
- path
- Description
스트리밍할 Auto Split 작업의 고유 식별자입니다.
반환 값
Auto Split 작업 객체의 스트림을 Server-Sent Events 형태로 반환합니다.
모든 message 이벤트는 Auto Split 작업 조회에서 반환되는 것과 동일한 전체 작업 객체를 담고 있으며, 여기에는 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-sortable 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작업이거나 prompt가 그대로 따라진 경우에는 생략됩니다.
- 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
- 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
}