Auto Split API
Разделите 3D-модель на отдельно печатаемые части — автоматически, по частям, которые вы укажете, или по цветовым областям — с возможностью добавления соединителей; тонкие участки, оставшиеся после разреза, всегда усиливаются, чтобы каждая часть печаталась цельной.
Auto Split в настоящее время поддерживает только модели без текстуры. Для Изображение в 3D и Мульти-изображение в 3D создавайте входные данные с параметром should_texture, установленным в false. Входные данные с текстурой отклоняются с ошибкой 400.
Создать задачу 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илиlatest). Низкополигональные модели и модели Smart Topology (meshy-t2) не поддерживаются.
- Name
- mode
- Type
- string
- по умолчанию auto
- Description
Как модель разделяется на части.
Доступные значения:
auto: Meshy сама выбирает места разрезов.promptигнорируется.by_parts: Разрезать по структурным частям, которые вы указываете вprompt, например голова, руки и торс.by_color: Разрезать по цветовым областям, которые вы указываете вprompt. Требует входные данные, созданные из загруженного изображения (Изображение в 3D или Мульти-изображение в 3D); прочие входные данные отклоняются с ошибкой400.
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. До 600 символов. Есть два случая отказа: если описание похоже на разбиение, но называет менее двух частей (например,split into individual parts), оно отклоняется с ошибкой400, и списание не производится; если Meshy вообще не может распознать описание, происходит откат кauto, задача всё равно выполняется и оплачивается, а в её ответе присутствуетprompt_ignored: true.
- Name
- target_formats
- Type
- array
- по умолчанию ["glb"]
- Description
Форматы, в которых экспортируется разделённая модель. Каждая часть представляет собой отдельный объект в каждом формате.
glbвсегда создаётся и возвращается вmodel_urls; перечислите любые другие нужные форматы дополнительно.Доступные значения:
glb,obj,fbx,usdz,blend,3mf.
- Name
- layout
- Type
- string
- по умолчанию assembled
- Description
Как части располагаются в каждом выходном формате, а также на миниатюре.
Доступные значения:
assembled: Части остаются там же, где они находились в исходной модели.on_plate: Части выкладываются плоско и раскладываются на столе для печати, готовые к нарезке на слои — так же, как в режиме On Plate веб-приложения.
В обоих раскладках экспортируемые файлы содержат один объект на часть и ничего лишнего: свёрнутый тонкий срез или точечный фрагмент, оставшийся после разреза, удаляется перед экспортом, так что каждый найденный в файле объект пригоден для печати.
- Name
- connectors
- Type
- boolean
- по умолчанию false
- Description
Добавляет соединители типа «шип-паз» на каждом разрезе, чтобы напечатанные части соединялись друг с другом.
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 в ответе содержит id только что созданной задачи Auto Split.
Режимы отказа
- Name
400 - Bad Request- Description
Запрос был некорректным. Распространённые причины:
- Отсутствует prompt:
promptобязателен, когдаmodeравенby_partsилиby_color. - Prompt называет менее двух частей: для
by_parts/by_colorтребуется не менее двух названных частей (например,head, torso, base); общая инструкция, такая какsplit into individual parts, отклоняется. Списание не производится. - Неподдерживаемая исходная задача:
input_task_idдолжен ссылаться на успешно завершённую задачу поддерживаемого типа, созданную с помощью Meshy 6 или Meshy 7. - Текстурированная исходная модель: исходная модель имеет текстуры. На данный момент поддерживаются только модели без текстур.
- Отсутствует референсное изображение:
by_colorтребует входные данные, созданные из загруженного изображения. - Неподдерживаемый формат:
target_formatsсодержитstl. - Соединитель вне допустимого диапазона:
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также имеют общее ограничение на разбор prompt — 12 запросов в минуту на аккаунт.
- Name
503 - Service Unavailable- Description
Разбиение на основе prompt (
by_partsиby_color) временно недоступно. Повторите попытку позже или используйтеmode: "auto", на который это не влияет. Списание не производится.
Request
# Simple request: let Meshy choose the cuts
curl https://api.meshy.cn/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.cn/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
Этот эндпоинт получает задачу Auto Split по её ID.
Параметры
- Name
- id
- Type
- path
- Description
ID задачи Auto Split, которую нужно получить.
Возвращает
Объект задачи Auto Split.
Request
curl https://api.meshy.cn/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.cn/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
"obj": "https://assets.meshy.cn/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***"
},
"thumbnail_url": "https://assets.meshy.cn/***/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
ID задачи Auto Split, которую нужно удалить.
Возвращаемые данные
Возвращает 200 OK при успешном выполнении.
Request
curl --request DELETE \
--url https://api.meshy.cn/openapi/v1/print/split/a43b5c6d-7e8f-901a-234b-567c890d1e2f \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
// Returns 200 Ok on success.
Список задач Auto Split
Этот эндпоинт позволяет получить список задач Auto Split.
Параметры
Необязательные атрибуты
- Name
- page_num
- Type
- integer
- Description
Номер страницы для пагинации. Начинается со значения по умолчанию
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.cn/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.cn/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***"
},
"thumbnail_url": "https://assets.meshy.cn/***/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
Этот эндпоинт передает обновления в реальном времени для задачи Auto Split с использованием Server-Sent Events (SSE).
Параметры
- 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, а model_urls, thumbnail_url, part_count и parts появляются после перехода в состояние SUCCEEDED. Событие error содержит только status_code и message, поэтому перед чтением status следует определять ветвь обработки по имени события.
Request
curl -N https://api.meshy.cn/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.cn/***/tasks/a43b5c6d-7e8f-901a-234b-567c890d1e2f/output/model.glb?Expires=***"
},
"thumbnail_url": "https://assets.meshy.cn/***/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
Уникальный идентификатор задачи. Хотя в качестве реализации мы используем k-sortable UUID для идентификаторов задач, вам не следует делать никаких предположений о формате id.
- Name
- type
- Type
- string
- Description
Тип задачи. Значение —
print-split.
- Name
- model_urls
- Type
- object
- Description
Ссылки для скачивания разделённой модели, по одной на каждый запрошенный формат. Каждая часть представляет собой отдельный объект в файле. Свойство для формата будет отсутствовать, если этот формат не запрашивался.
- Name
glb- Type
- string
- Description
Ссылка для скачивания разделённой модели в формате GLB.
- Name
obj- Type
- string
- Description
Ссылка для скачивания разделённой модели в формате OBJ.
- Name
fbx- Type
- string
- Description
Ссылка для скачивания разделённой модели в формате FBX.
- Name
usdz- Type
- string
- Description
Ссылка для скачивания разделённой модели в формате USDZ.
- Name
blend- Type
- string
- Description
Ссылка для скачивания разделённой модели в формате Blender.
- Name
3mf- Type
- string
- Description
Ссылка для скачивания разделённой модели в формате 3MF.
- Name
- thumbnail_url
- Type
- string
- Description
Ссылка для скачивания рендер-превью разделённой модели, где каждая часть окрашена в свой цвет, в запрошенной раскладке (
layout).
- Name
- prompt_ignored
- Type
- boolean
- Description
true, если в запросеby_partsилиby_colorвpromptне были названы части, и поэтому Meshy выполнил разбиение модели автоматически — в этом случае названия частей в результате присвоены Meshy, а не вами. Присутствует начиная со статусаPENDING. Отсутствует для задачautoи во всех случаях, когда prompt был учтён.
- Name
- part_count
- Type
- integer
- Description
Количество печатаемых частей в разделённой модели — по одной на каждый объект в экспортированных файлах. Схлопнувшиеся тонкие фрагменты, которые сегментация не смогла превратить в печатаемую деталь, удаляются из файлов перед экспортом и не учитываются в подсчёте.
- Name
- progress
- Type
- integer
- Description
Прогресс выполнения задачи. Если задача ещё не начата, это свойство будет равно
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после того, как задача была принята, и0для задач со статусомFAILED, поскольку списание возвращается при неудаче. Удаление задачи, пока она ещё находится в статусеPENDING, также приводит к возврату кредитов.
The Auto Split Task Object
{
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "print-split",
"model_urls": {
"glb": "https://assets.meshy.cn/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
"obj": "https://assets.meshy.cn/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***"
},
"thumbnail_url": "https://assets.meshy.cn/***/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
}