API Auto Split
Розділіть 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) не підтримуються. Модель із текстурою приймається, але її текстура не переноситься до результату.
- 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
Додає з'єднання типу «шип-паз» у кожному місці розрізу, щоб надруковані частини підходили одна до одної.
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приймає від 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також мають спільне обмеження на розбір 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.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
Ця кінцева точка отримує завдання Auto Split за його ID.
Параметри
- Name
- id
- Type
- path
- Description
ID завдання Auto Split, яке потрібно отримати.
Повертає
Об'єкт завдання Auto Split.
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, яке потрібно видалити.
Статус завдання
Завдання, що все ще перебуває в стані PENDING, видаляється, а кредити,
витрачені під час створення, повертаються.
Завдання, що вже перебуває в стані IN_PROGRESS, видалити неможливо: запит
відхиляється з кодом 409 Conflict, а завдання продовжує виконуватися. Кредити
за завдання, яке воркер уже почав виконувати, не повертаються, тому видалення
його під час виконання коштувало б вам і кредитів, і результату. Дочекайтеся,
доки воно перейде в стан SUCCEEDED, FAILED або CANCELED, а тоді видаліть його.
Завдання в кінцевому стані (SUCCEEDED, FAILED або CANCELED) видаляється
без повернення коштів.
Повертає
Повертає 200 OK у разі успіху або 409 Conflict, якщо завдання перебуває у стані
IN_PROGRESS.
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."
}
List Auto Split Tasks
Ця кінцева точка дозволяє отримати список задач 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: Сортування за часом створення в порядку спадання.
Повертає
Повертає список об'єктів The Auto Split Task Objects з пагінацією.
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 задачі
Ця кінцева точка транслює оновлення в реальному часі для 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 з'являються, коли вона досягає статусу SUCCEEDED. Подія 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
}
Об'єкт завдання Auto Split
Завдання Auto Split містить лише властивості, наведені нижче. Поля з prompt для генерації, які містять інші об'єкти завдань (name, object_prompt, texture_prompt тощо), одиничний model_url і texture_urls ніколи не заповнюються для розділення і не повертаються. Властивості, які заповнюються під час виконання завдання (thumbnail_url, model_urls, мітки часу), присутні завжди, порожні до появи значення, тому набір ключів не змінюється між PENDING і SUCCEEDED.
- Name
- id
- Type
- string
- Description
Унікальний ідентифікатор завдання. Хоча як деталь реалізації ми використовуємо k-сортований UUID для ідентифікаторів завдань, вам не слід робити жодних припущень щодо формату id.
- Name
- type
- Type
- string
- Description
Тип завдання. Значення —
print-split.
- Name
- model_urls
- Type
- object
- Description
URL-адреси для завантаження розділеної моделі, по одній для кожного запитаного формату. Формати, що підтримують об'єкти сцени, зберігають кожну частину як окремий об'єкт;
stlоб'єднує їх в одне суцільне тіло. Властивість для формату буде відсутня, якщо цей формат не запитувався.- Name
glb- Type
- string
- Description
URL-адреса для завантаження розділеної моделі у форматі GLB.
- Name
obj- Type
- string
- Description
URL-адреса для завантаження розділеної моделі у форматі OBJ.
- Name
fbx- Type
- string
- Description
URL-адреса для завантаження розділеної моделі у форматі FBX.
- Name
stl- Type
- string
- Description
URL-адреса для завантаження розділеної моделі у форматі STL. Усі частини об'єднані в одне суцільне тіло; для окремо вибираних частин запитуйте
3mf.
- Name
usdz- Type
- string
- Description
URL-адреса для завантаження розділеної моделі у форматі USDZ.
- Name
blend- Type
- string
- Description
URL-адреса для завантаження розділеної моделі у форматі Blender.
- Name
3mf- Type
- string
- Description
URL-адреса для завантаження розділеної моделі у форматі 3MF.
- Name
- thumbnail_url
- Type
- string
- Description
URL-адреса для завантаження відрендереного попереднього перегляду розділеної моделі, де кожна частина має окремий колір, у запитаному
layout.
- Name
- prompt_ignored
- Type
- boolean
- Description
true, колиpromptу запитіby_partsабоby_colorне називав жодних частин, тому Meshy розділив модель автоматично — назви частин у результаті належать Meshy, а не вам. Присутнє починаючи зі стануPENDING. Відсутнє для завданьautoі в усіх випадках, коли prompt було враховано.
- Name
- part_count
- Type
- integer
- Description
Кількість придатних для друку частин, отриманих у результаті розділення. Формати, що підтримують об'єкти сцени, містять по одному об'єкту на кожну частину;
stlоб'єднує їх в одне суцільне тіло, але кількість все одно відображає кількість частин. Схлопнуті фрагменти, які сегментація не змогла перетворити на придатну для друку деталь, видаляються з файлів перед експортом і не враховуються в підрахунку.
- 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.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
}