Відновлення придатності до друку API
Відновіть 3D-модель для придатності до друку FDM — виправте немноговидні ребра, вироджені грані, отвори та інші проблеми topology, щоб сітка була готова до друку.
Створити задачу відновлення придатності до друку
Ця кінцева точка створює нову задачу відновлення придатності до друку. Задача виконує відновлення topology 3D-моделі та повертає герметичну, готову до друку версію.
Формат виводу відповідає формату вводу. Якщо ви надсилаєте .stl через model_url, поле model_urls.stl у відповіді міститиме відновлену сітку, а інші поля формату будуть порожніми. input_task_id завжди зчитує GLB вихідної задачі, тому результат матиме формат .glb.
Параметри
Обов'язковим є лише один із параметрів: input_task_id або model_url. Якщо вказано обидва, пріоритет має input_task_id.
Наявні текстури видаляються під час відновлення через зміни геометрії. Щоб додати текстури знову, скористайтеся Retexture API для відновленої моделі.
- Name
- input_task_id
- Type
- string
- Обов'язковий
- Description
ID успішно виконаної задачі, яка належить вам. Підтримувані типи задач: Зображення у 3D, Мульти-зображення у 3D, Текст у 3D, Ремеш та Ретекстурування. Задача повинна мати статус
SUCCEEDEDі повинна була створити GLB-асет.
- Name
- model_url
- Type
- string
- Обов'язковий
- Description
URL 3D-моделі для відновлення. Підтримувані формати:
.glb,.gltf,.obj,.fbx,.stl. Максимальний розмір файлу: 100 МБ. Має використовуватиhttp,httpsабо URL-адресуdata:(data URL-адреси обходять перевірку розширення).
- Name
- alpha_thumbnail
- Type
- boolean
- за замовчуванням false
- Description
Якщо встановлено значення
true, задача додатково рендерить версію попереднього перегляду з прозорим фоном (RGBA) і повертає її якalpha_thumbnail_urlу відповіді GET. Наявне полеthumbnail_urlзалишається без змін.
Результат
Властивість result у відповіді містить id новоствореної задачі відновлення придатності до друку.
Режими збою
- Name
400 - Bad Request- Description
Запит було відхилено. Поширені причини:
- Відсутній параметр: не вказано ні
input_task_id, ніmodel_url. - Недійсний UUID:
input_task_idне є дійсним UUID. - Недійсний URL моделі:
model_urlмає неправильний формат, використовує непідтримувану схему або має непідтримуване розширення файлу. - Файл моделі надто великий: тіло
model_urlперевищило 100 МБ. - Задача не завершена успішно: задана задача все ще очікує, виконується або завершилася невдало.
- Відсутній GLB: задана задача не має GLB-асету для відновлення.
- Відсутній параметр: не вказано ні
- Name
401 - Unauthorized- Description
Помилка автентифікації. Перевірте свій API-ключ.
- Name
402 - Payment Required- Description
Поширені причини:
- Безкоштовний план: для створення задачі потрібен платний план. Оновіть план на сторінці підписки.
- Недостатньо кредитів: досягнуто ліміту кредитів робочої області.
- Name
404 - Not Found- Description
Задана задача не існує або належить іншому користувачу.
- Name
429 - Too Many Requests- Description
Ви перевищили квоту задач, що очікують виконання, або обмеження частоти.
Request
# Repair an existing task
curl https://api.meshy.ai/openapi/v1/print/repair \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"input_task_id": "018a210d-8ba4-705c-b111-1f1776f7f578"
}'
# Or repair a model URL directly
curl https://api.meshy.ai/openapi/v1/print/repair \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"model_url": "https://example.com/model.stl"
}'
Response
{
"result": "0193bfc5-ee4f-73f8-8525-44b398884ce9"
}
Отримати задачу «Відновлення придатності до друку»
Ця кінцева точка отримує задачу відновлення придатності до друку за її ID.
Параметри
- Name
- id
- Type
- path
- Description
ID задачі відновлення придатності до друку, яку потрібно отримати.
Повертає
Об'єкт задачі «Відновлення придатності до друку». Блок model_urls порожній, доки задача не досягне статусу SUCCEEDED. Заповнюється лише те поле model_urls, яке відповідає вхідному формату.
Request
curl https://api.meshy.ai/openapi/v1/print/repair/a43b5c6d-7e8f-901a-234b-567c890d1e2f \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
{
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "print-repair",
"status": "SUCCEEDED",
"progress": 100,
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000030000,
"expires_at": 1715725401000,
"task_error": null,
"model_urls": {
"glb": "",
"gltf": "",
"fbx": "",
"obj": "",
"stl": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.stl?Expires=***",
"usdz": "",
"3mf": "",
"mtl": ""
},
"thumbnail_url": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/preview.png?Expires=***",
"texture_urls": [],
"consumed_credits": 10
}
Видалення завдання на відновлення придатності до друку
Ця кінцева точка остаточно видаляє завдання на відновлення придатності до друку та його відновлений результат. Ця дія незворотна.
Параметри шляху
- Name
- id
- Type
- path
- Description
Ідентифікатор завдання на відновлення придатності до друку, яке потрібно видалити.
Статус завдання
Завдання, що все ще перебуває у стані 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/repair/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."
}
Список завдань відновлення придатності до друку
Ця кінцева точка дозволяє отримати список завдань відновлення придатності до друку.
Параметри
Необов'язкові атрибути
- Name
- page_num
- Type
- integer
- Description
Номер сторінки для пагінації. Починається і за замовчуванням дорівнює
1.
- Name
- page_size
- Type
- integer
- Description
Обмеження розміру сторінки. За замовчуванням
10елементів. Максимально допустимо100елементів.
- Name
- sort_by
- Type
- string
- Description
Поле для сортування. Доступні значення:
+created_at: Сортувати за часом створення у порядку зростання.-created_at: Сортувати за часом створення у порядку спадання.
Повертає
Повертає пагінований список об'єктів завдання відновлення придатності до друку.
Request
curl https://api.meshy.ai/openapi/v1/print/repair?page_size=10 \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
[
{
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "print-repair",
"status": "SUCCEEDED",
"progress": 100,
"preceding_tasks": 0,
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000030000,
"expires_at": 1715725401000,
"task_error": null,
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
"gltf": "",
"fbx": "",
"obj": "",
"stl": "",
"usdz": "",
"3mf": "",
"mtl": ""
},
"thumbnail_url": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/preview.png?Expires=***",
"texture_urls": [],
"consumed_credits": 10
}
]
Транслювати завдання відновлення придатності до друку
Ця кінцева точка транслює оновлення в реальному часі для завдання відновлення придатності до друку за допомогою Server-Sent Events (SSE).
Параметри
- Name
- id
- Type
- path
- Description
Унікальний ідентифікатор завдання відновлення придатності до друку для трансляції.
Повертає
Повертає потік об'єктів завдання відновлення придатності до друку у форматі Server-Sent Events.
Кожен кадр містить повний об'єкт завдання для відповідного етапу — таку саму структуру, яку повертає кінцева точка Get — тож поки завдання має статус PENDING або IN_PROGRESS, вихідні поля просто ще не заповнені (null, [] або {}), а finished_at дорівнює null. Блок model_urls надсилається лише тоді, коли завдання досягає статусу SUCCEEDED.
Request
curl -N https://api.meshy.ai/openapi/v1/print/repair/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.
// Every frame is the full task object; fields not yet populated are null / empty.
// The PENDING frame below is abbreviated to the fields that change.
event: message
data: {
"id": "a43b5c6d-7e8f-901a-234b-567c890d1e2f",
"progress": 0,
"status": "PENDING"
}
event: message
data: {
"id": "a43b5c6d-7e8f-901a-234b-567c890d1e2f",
"type": "print-repair",
"status": "SUCCEEDED",
"progress": 100,
"preceding_tasks": 0,
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000030000,
"expires_at": 1715725401000,
"task_error": null,
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/a43b5c6d-7e8f-901a-234b-567c890d1e2f/output/model.glb?Expires=***",
"gltf": "",
"fbx": "",
"obj": "",
"stl": "",
"usdz": "",
"3mf": "",
"mtl": ""
},
"thumbnail_url": "https://assets.meshy.ai/***/tasks/a43b5c6d-7e8f-901a-234b-567c890d1e2f/output/preview.png?Expires=***",
"texture_urls": [],
"consumed_credits": 10
}
The Repair Printability Task Object
- Name
- id
- Type
- string
- Description
Унікальний ідентифікатор завдання. Хоча в реалізації ми використовуємо k-сортований UUID для ідентифікаторів завдань, вам не слід робити жодних припущень щодо формату id.
- Name
- type
- Type
- string
- Description
Тип завдання відновлення придатності до друку. Значення —
print-repair.
- Name
- status
- Type
- string
- Description
Статус завдання. Можливі значення: одне з
PENDING,IN_PROGRESS,SUCCEEDED,FAILED,CANCELED.
- Name
- progress
- Type
- integer
- Description
Прогрес виконання завдання. Якщо завдання ще не розпочато, це значення дорівнюватиме
0. Після успішного завершення завдання воно стане100.
- 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
- expires_at
- Type
- timestamp
- Description
Мітка часу, коли результат завдання буде видалено із системи, у мілісекундах.
0, якщо завдання ще не завершено.
- Name
- task_error
- Type
- object
- Description
Інформація про помилку, якщо завдання завершилося невдало. Це поле дорівнює
null, якщо завдання не завершилося невдало. Детальніше див. Помилки.- Name
message- Type
- string
- Description
Повідомлення про помилку, що описує, що пішло не так.
- Name
- model_urls
- Type
- object
- Description
URL-адреси для завантаження відновленої 3D-моделі. Заповнено лише те поле, яке відповідає вхідному формату; інші поля формату є порожніми рядками.
- Name
glb- Type
- string
- Description
URL-адреса для завантаження відновленого GLB. Заповнюється, коли вхідним файлом був GLB або коли використовувався
input_task_id.
- Name
gltf- Type
- string
- Description
URL-адреса для завантаження відновленого GLTF. Заповнюється, коли на вхід було завантажено GLTF.
- Name
fbx- Type
- string
- Description
URL-адреса для завантаження відновленого FBX. Заповнюється, коли на вхід було завантажено FBX.
- Name
obj- Type
- string
- Description
URL-адреса для завантаження відновленого OBJ. Заповнюється, коли на вхід було завантажено OBJ.
- Name
stl- Type
- string
- Description
URL-адреса для завантаження відновленого STL. Заповнюється, коли на вхід було завантажено STL.
- Name
usdz- Type
- string
- Description
Зарезервовано для виводу у USDZ. Для завдань відновлення придатності до друку завжди порожній рядок.
- Name
3mf- Type
- string
- Description
Зарезервовано для виводу у 3MF. Для завдань відновлення придатності до друку завжди порожній рядок.
- Name
mtl- Type
- string
- Description
Зарезервовано для виводу у MTL. Для завдань відновлення придатності до друку завжди порожній рядок.
- Name
- thumbnail_url
- Type
- string
- Description
URL-адреса зображення попереднього перегляду, відрендереного з відновленої моделі.
- Name
- alpha_thumbnail_url
- Type
- string
- Description
URL-адреса для завантаження версії
thumbnail_urlіз прозорим фоном (RGBA). Присутнє лише тоді, коли завдання було створено з параметромalpha_thumbnail: trueі прозорий попередній перегляд було успішно відрендерено; інакше це поле відсутнє.
- Name
- texture_urls
- Type
- array
- Description
Завжди порожній масив. Відновлення зберігає лише вхідну геометрію і не перезапікає текстури.
- Name
- consumed_credits
- Type
- integer
- Description
Кількість кредитів, витрачених на це завдання.
10, коли завдання досягло статусуSUCCEEDED. Повертає0для завдань зі статусомFAILED(у разі невдачі кредити повертаються).
The Repair Printability Task Object
{
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "print-repair",
"status": "SUCCEEDED",
"progress": 100,
"preceding_tasks": 0,
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000030000,
"expires_at": 1715725401000,
"task_error": null,
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
"gltf": "",
"fbx": "",
"obj": "",
"stl": "",
"usdz": "",
"3mf": "",
"mtl": ""
},
"thumbnail_url": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/preview.png?Expires=***",
"texture_urls": [],
"consumed_credits": 10
}