Перетворіть вихідну фотографію на абажур, придатний для 3D-друку, у два етапи:
prototype генерує стилізоване концептуальне зображення матово-білого кольору
та перетворює його на порожню 3D-модель (GLB), а потім build запускає
процесор лампи на цій моделі, щоб отримати придатні для друку частини у форматі STL —
абажур з відкритим низом та базовою пластиною для кріплення джерела світла,
а також саме кріплення. Ці два етапи пов’язані через input_task_id.
Створіть єдине матово-біле концептуальне зображення з референсного фото та
конвертуйте його в порожню 3D-модель абажура лампи. Відповідь містить як
концептуальне зображення (image_urls), так і 3D-модель (model_urls.glb з
thumbnail_url). Повернений ID завдання — це те, що ви передаєте як input_task_id
до кінцевої точки збірки. Зверніться до розділу
Об'єкт завдання прототипу лампи
для отримання інформації про формат відповіді.
Параметри
Name
image_url
Type
string
Обов'язковий
Description
Вихідне фото, яке Meshy використовує як візуальний референс для абажура лампи. Наразі підтримуються формати .jpg, .jpeg, .png та .webp.
Існує два способи надати зображення:
Загальнодоступне URL-посилання: URL-адреса, доступна з публічного інтернету.
Data URI: зображення, закодоване у формат base64. Приклад Data URI: data:image/jpeg;base64,<ваші дані зображення, закодовані у base64>.
Name
image_subject
Type
string
за замовчуванням character
Description
Підказка щодо категорії суб'єкта, яка вибирає prompt для стилізації. Доступні значення:
character (за замовчуванням) — суб'єкт у вигляді одного персонажа/об'єкта (фігурка, тварина, талісман тощо).
landscape — суб'єкт у вигляді сцени на відкритому повітрі/панорами (гора, міський пейзаж, ліс тощо).
Name
name
Type
string
Description
Необов'язкова назва завдання для відображення. Максимум 100 символів.
Name
remove_background
Type
boolean
за замовчуванням false
Description
Якщо встановлено значення true, зображення прототипу повертається як прозорий RGBA PNG з видаленим фоном, щоб ви могли компонувати суб'єкт на будь-якому фоні.
Повертає
Властивість result відповіді містить id завдання новоствореного прототипу лампи. Опитуйте кінцеву точку Отримання завдання або підпишіться на потік, поки завдання не досягне статусу SUCCEEDED, а потім передайте цей ID до кінцевої точки збірки як input_task_id.
Режими відмов
Name
400 - Bad Request
Description
Запит неприйнятний. Поширені причини:
Відсутній параметр: image_url є обов'язковим.
Недійсний формат зображення: наданий image_url не має підтримуваного формату (.jpg, .jpeg, .png, .webp).
Розміри зображення поза допустимим діапазоном: зображення занадто мале, перевищує максимальний розмір файлу або максимальну кількість пікселів.
Недосяжна URL-адреса: image_url не вдалося завантажити (404 або timeout).
Недійсний Data URI: рядок base64 має неправильний формат.
Позначено як недопустиме: вхідне зображення було позначено через moderation щодо NSFW-контенту або прав інтелектуальної власності.
Недійсне значення image_subject: не є одним із character / landscape.
Name
401 - Unauthorized
Description
Помилка автентифікації. Перевірте свій API-ключ.
Name
402 - Payment Required
Description
Недостатньо кредитів для виконання цього завдання.
Name
429 - Too Many Requests
Description
Ви перевищили обмеження частоти.
Request
POST
/openapi/creative-lab/lamp/v1/prototype
# Stage 1: concept image + hollow 3D lampshade model from a source photocurlhttps://api.meshy.ai/openapi/creative-lab/lamp/v1/prototype \-XPOST \-H"Authorization: Bearer ${YOUR_API_KEY}" \-H'Content-Type: application/json' \-d'{ "image_url": "<your publicly accessible image url or base64-encoded data URI>", "image_subject": "character" }'
Response
{"result":"018a210d-8ba4-705c-b111-1f1776f7f578"}
Приклад прототипу
Почніть з вихідного фото; прототип повертає концептуальне зображення та порожню 3D-модель, яку обробляє етап збірки.
Створіть фінальні деталі для 3D-друку з успішно виконаного завдання прототипу.
Побудова запускає процесор лампи на 3D-моделі прототипу: масштабує
модель до diameter_mm, вирівнює нижню частину на cut_amount_percent,
порожнить її до thickness_mm, відкриває дно та — якщо обрано
пресет кріплення — додає базову пластину з отвором для кріплення та окреме
кріплення для джерела світла. Дивіться
Об'єкт завдання побудови лампи для
формату відповіді.
Параметри
Name
input_task_id
Type
string
Обов'язковий
Description
ID завдання прототипу, створеного через ту саму кінцеву точку OpenAPI. Прототип мав бути створений з тим самим API-ключем, мав досягти статусу SUCCEEDED та мав створити 3D-модель.
Завдання прототипу, створені через вебзастосунок, не приймаються — кінцева точка build приймає лише завдання прототипу, створені через POST /openapi/creative-lab/lamp/v1/prototype, і відхиляє будь-яке інше джерело з кодом 404.
Name
name
Type
string
Description
Необов'язкова назва завдання для відображення. Максимум 100 символів.
options
Необов'язкові параметри налаштування геометрії абажура. Кожне поле має розумне значення за замовчуванням — надсилайте лише ті, які хочете перевизначити.
Name
diameter_mm
Type
number
за замовчуванням 150
Description
Цільовий максимальний розмір обмежувального паралелепіпеда абажура, у міліметрах. Сітка рівномірно масштабується для відповідності. Діапазон: [50, 400].
Name
thickness_mm
Type
number
за замовчуванням 1
Description
Товщина стінки порожнього абажура, у міліметрах. Діапазон: (0, 10].
Name
cut_amount_percent
Type
number
за замовчуванням 1
Description
Відсоток висоти моделі, який зрізається знизу, щоб абажур розташовувався на друкувальній платформі та мав отвір для кріплення. Діапазон: [1, 100].
Name
light_source_preset
Type
string
за замовчуванням bambu_mh001_60mm
Description
Пресет кріплення джерела світла, який визначає, як формується нижня частина. Доступні значення:
bambu_mh001_60mm (за замовчуванням) — абажур з відкритим дном плюс базова пластина з отвором для кріплення 60 мм, обидва в model_urls.lamp_stl, а кріплення фіксатора — у model_urls.base_stl.
none — один суцільний абажур у model_urls.lamp_stl; model_urls.base_stl відсутній.
Name
fixture_offset_x_mm
Type
number
за замовчуванням 0
Description
Зміщення отвору кріплення по осі X на базовій пластині відносно центру абажура, у міліметрах. Має значення лише коли light_source_preset ≠ none. Діапазон: [-80, 80].
Name
fixture_offset_z_mm
Type
number
за замовчуванням 0
Description
Зміщення отвору кріплення по осі Z (глибина) на базовій пластині відносно центру абажура, у міліметрах. Має значення лише коли light_source_preset ≠ none. Діапазон: [-80, 80].
Name
rotate_x_deg
Type
number
за замовчуванням 0
Description
Обертання навколо осі X, застосоване до моделі перед обробкою, у градусах. Три обертання застосовуються як кути Ейлера XYZ навколо центру моделі. Діапазон: [-360, 360].
Name
rotate_y_deg
Type
number
за замовчуванням 0
Description
Обертання навколо осі Y, застосоване до імпортованої сітки перед обробкою, у градусах. Діапазон: [-360, 360].
Name
rotate_z_deg
Type
number
за замовчуванням 0
Description
Обертання навколо осі Z, застосоване до імпортованої сітки перед обробкою, у градусах. Діапазон: [-360, 360].
Name
include_result_json
Type
boolean
за замовчуванням false
Description
Якщо true і output.format дорівнює zip, включає result.json процесора лампи (назва конвеєра, попередження та шляхи артефактів) до пакета. Ігнорується, якщо output.format дорівнює stl.
output
Необов'язковий селектор формату передачі. За замовчуванням stl.
stl (за замовчуванням) — повертає model_urls.lamp_stl (абажур разом із базовою пластиною, якщо встановлено пресет кріплення), а також model_urls.base_stl, якщо light_source_preset ≠ none.
zip — упаковує всі артефакти, згенеровані процесором (lamp.stl, необов'язковий base.stl, необов'язковий result.json), в один zip-файл і повертає його в model_urls.bundle_zip.
Повернення
Властивість result відповіді містить id завдання щойно створеного завдання побудови лампи. Опитуйте кінцеву точку Отримання завдання або підпишіться на потік, доки завдання не досягне статусу SUCCEEDED, а потім завантажте артефакти з model_urls.
Режими збою
Name
400 - Bad Request
Description
Запит неприйнятний. Поширені причини:
Відсутній параметр: input_task_id є обов'язковим.
Недійсний UUID: input_task_id не є дійсним UUID.
Батьківське завдання не завершилося успішно: Вказане завдання прототипу ще не досягло статусу SUCCEEDED.
Немає моделі: Завдання прототипу завершилося успішно, але не створило 3D-модель.
Параметри поза діапазоном: Одне з полів options вийшло за межі дозволеного діапазону або набору значень.
Name
401 - Unauthorized
Description
Помилка автентифікації. Перевірте свій API-ключ.
Name
402 - Payment Required
Description
Недостатньо кредитів для виконання цього завдання.
Name
404 - Not Found
Description
Вказане завдання прототипу не існує, належить іншому користувачу або було створене через вебзастосунок (лише завдання прототипу, створені в режимі API, можуть використовуватися для побудови).
Отримайте завдання прототипу або збірки за дійсним id завдання. Шлях URL
має відповідати етапу завдання — якщо завдання збірки запитати через
/prototype/:id, повертається 404, і навпаки.
Скасувати завдання лампи. Якщо завдання ще PENDING, кредити, спожиті
під час створення, повертаються. Завдання, які вже IN_PROGRESS,
скасовуються без повернення коштів (працівник може вже використовувати ресурси).
Завдання, які вже досягли кінцевого стану (SUCCEEDED, FAILED,
CANCELED), не можуть бути скасовані.
Шлях URL повинен відповідати етапу завдання — DELETE на
/prototype/:buildId повертає 404.
Параметри шляху
Name
id
Type
path
Description
Унікальний ідентифікатор завдання лампи для скасування.
Повернення
Повертає 204 No Content у разі успіху з порожнім тілом.
Режими відмови
Name
400 - Bad Request
Description
Завдання вже знаходиться в кінцевому стані і не може бути скасоване.
Name
404 - Not Found
Description
Завдання не існує, належить іншому користувачу або його етап не відповідає шляху URL.
Транслює оновлення завдання лампи в реальному часі через Server-Sent Events (SSE).
Шлях URL повинен відповідати етапу завдання — відкриття потоку за адресою
/prototype/:buildId/stream видає одне корисне навантаження event: error зі
status_code: 404 та закриває потік.
Параметри
Name
id
Type
path
Description
Унікальний ідентифікатор завдання лампи для трансляції.
Повертає
Повертає потік об'єктів завдання Lamp Prototype
або Lamp Build у формі
Server-Sent Events. Для завдань зі статусом PENDING або IN_PROGRESS
потік відповіді включатиме лише необхідні поля progress та status.
// Error event example (wrong stage or task not found)event: errordata: {"status_code": 404,"message": "Task not found"}// Message event examples illustrate task progress.// For PENDING or IN_PROGRESS tasks, the response stream will not include all fields.event: messagedata: {"id": "019c320e-9a8f-7a1c-9c11-2a1876f8a9bb","progress": 0,"status": "PENDING"}event: messagedata: {"id": "019c320e-9a8f-7a1c-9c11-2a1876f8a9bb","type": "creative-lab-lamp-build","status": "SUCCEEDED","progress": 100,"created_at": 1729123500000,"started_at": 1729123510000,"finished_at": 1729123535000,"expires_at": 1729382735000,"task_error": null,"consumed_credits": 6,"model_urls": {"lamp_stl":"https://assets.meshy.ai/***/tasks/019c320e-9a8f-7a1c-9c11-2a1876f8a9bb/output/lamp.stl?Expires=***","base_stl":"https://assets.meshy.ai/***/tasks/019c320e-9a8f-7a1c-9c11-2a1876f8a9bb/output/base.stl?Expires=***" }}
Отримайте список завдань лампи для одного етапу з пагінацією. Шлях URL
визначає етап — /prototype повертає завдання прототипування; /build
повертає завдання побудови. Завдання з іншого етапу не включаються до жодної
з відповідей.
Параметри шляху
Name
stage
Type
path
Обов'язковий
Description
prototype або build. Колекція повертає лише завдання,
чий етап відповідає URL — запит до /prototype ніколи не повертає
завдання побудови, і навпаки.
Параметри запиту
Name
page_num
Type
integer
за замовчуванням 1
Description
Номер сторінки для пагінації.
Name
page_size
Type
integer
за замовчуванням 10
Description
Обмеження розміру сторінки. Максимально допустиме значення — 50 елементів.
Name
sort_by
Type
string
за замовчуванням -created_at
Description
Поле для сортування. Доступні значення:
+created_at: Сортування за часом створення в порядку зростання.
-created_at: Сортування за часом створення в порядку спадання.
Об'єкт Lamp Prototype Task — це одиниця роботи, за якою Meshy стежить для
генерації стилізованого матово-білого концептуального зображення з вихідної фотографії та
конвертації його в порожнисту 3D-модель. Результат цього етапу передається у ланцюг
до етапу побудови через input_task_id.
Властивості
Name
id
Type
string
Description
Унікальний ідентифікатор задачі. Хоча як деталь реалізації ми використовуємо k-сортований UUID для ідентифікаторів задач, вам не слід робити жодних припущень щодо формату id.
Name
type
Type
string
Description
Тип задачі. Значення — creative-lab-lamp-prototype.
Name
name
Type
string
Description
Назва задачі, вказана під час її створення. Порожній рядок, якщо назву не було надано.
Name
status
Type
string
Description
Статус задачі. Можливі значення: PENDING, IN_PROGRESS, SUCCEEDED, FAILED, CANCELED.
Name
progress
Type
integer
Description
Прогрес виконання задачі. Якщо задача ще не розпочата, це значення буде 0. Щойно задача завершиться успішно, воно стане 100.
Name
created_at
Type
timestamp
Description
Мітка часу створення задачі, у мілісекундах.
Мітка часу представляє кількість мілісекунд, що минули з 1 січня 1970 року UTC, відповідно до
стандарту RFC 3339.
Наприклад, п'ятниця, 1 вересня 2023 року, 12:00:00 за GMT представлена як 1693569600000. Це стосується
всіх міток часу в Meshy API.
Name
started_at
Type
timestamp
Description
Мітка часу початку виконання задачі, у мілісекундах. Якщо задача ще не розпочата, це значення буде 0.
Name
finished_at
Type
timestamp
Description
Мітка часу завершення задачі, у мілісекундах. Якщо задача ще не завершена, це значення буде 0.
Name
expires_at
Type
timestamp
Description
Мітка часу закінчення терміну дії результату задачі, у мілісекундах.
Name
preceding_tasks
Type
integer
Description
Кількість попередніх задач у черзі.
Значення цього поля має сенс лише якщо статус задачі — PENDING.
Name
task_error
Type
object
Description
Деталі помилки для невдалих задач. Дивіться Помилки для повного опису об'єкта task_error.
Name
consumed_credits
Type
integer
Description
Кількість кредитів, витрачених на цю задачу. Присутнє, коли статус задачі — PENDING, IN_PROGRESS або SUCCEEDED. Повертає 0 для задач зі статусом FAILED (кредити повертаються у разі невдачі).
Name
model_urls
Type
object
Description
URL-адреси для завантаження 3D-моделі, згенерованої з концептуального зображення. Присутнє, щойно задача завершиться успішно; до цього — {}.
Name
glb
Type
string
Description
URL-адреса для завантаження порожнистої матово-білої моделі абажура у форматі GLB. Це модель, яку обробляє етап побудови.
Name
thumbnail_url
Type
string
Description
URL-адреса для завантаження відрендереного попереднього перегляду 3D-моделі. Порожній рядок, доки задача не завершиться успішно.
Name
image_urls
Type
array of strings
Description
URL-адреси для завантаження кандидатів на концептуальне зображення, згенерованих цією задачею прототипу. Наразі API завжди повертає рівно одного кандидата; поле є масивом, щоб у майбутніх версіях можна було надавати кілька кандидатів без критичних змін.
Об'єкт Lamp Build Task — це одиниця роботи, яку Meshy відстежує для
генерації фінального абажура лампи, придатного для 3D-друку, з успішно завершеної
задачі прототипу. Побудова запускає процесор лампи на 3D-моделі прототипу, щоб
зробити її порожнистою, вирівняти та відкрити низ, і (за наявності пресету фурнітури)
додати основу та кріплення фурнітури.
Властивості
Name
id
Type
string
Description
Унікальний ідентифікатор задачі.
Name
type
Type
string
Description
Тип задачі. Значення — creative-lab-lamp-build.
Name
name
Type
string
Description
Назва задачі, вказана під час її створення. Порожній рядок, якщо назву не було надано.
Name
status
Type
string
Description
Статус задачі. Можливі значення: PENDING, IN_PROGRESS, SUCCEEDED, FAILED, CANCELED.
Name
progress
Type
integer
Description
Прогрес виконання задачі. Якщо задача ще не почалася, це значення дорівнює 0. Коли задача успішно завершиться, воно стане 100.
Name
created_at
Type
timestamp
Description
Мітка часу створення задачі, у мілісекундах.
Name
started_at
Type
timestamp
Description
Мітка часу початку виконання задачі, у мілісекундах.
Name
finished_at
Type
timestamp
Description
Мітка часу завершення задачі, у мілісекундах.
Name
expires_at
Type
timestamp
Description
Мітка часу закінчення терміну дії результату задачі, у мілісекундах.
Name
preceding_tasks
Type
integer
Description
Кількість задач, що передують цій. Має значення лише коли статус — PENDING.
Name
task_error
Type
object
Description
Деталі помилки для невдалих задач. Див. Помилки для повного опису об'єкта task_error.
Name
consumed_credits
Type
integer
Description
Кількість кредитів, витрачених цією задачею. Повертає 0 для задач зі статусом FAILED (кредити повертаються у разі невдачі).
Name
model_urls
Type
object
Description
URL-адреси для завантаження згенерованих артефактів, з ключами за назвою артефакту. Набір ключів залежить від output.format та options.light_source_preset:
Name
lamp_stl
Type
string
Description
URL для завантаження lamp.stl: абажур з відкритим низом разом з основою, що містить отвір для фурнітури, або єдиний герметичний абажур, коли options.light_source_preset було встановлено як none. Присутнє, коли output.format було stl (значення за замовчуванням).
Name
base_stl
Type
string
Description
URL для завантаження base.stl, кріплення для фурнітури джерела світла. Присутнє, коли output.format було stlіoptions.light_source_preset не було none. Відсутнє, якщо пресет фурнітури — none.
Name
bundle_zip
Type
string
Description
URL для завантаження zip-архіву з усіма артефактами, які видає процесор (lamp.stl, опціонально base.stl, а також — коли options.include_result_json дорівнює true — result.json). Присутнє, коли output.format було zip. Коли присутній bundle_zip, lamp_stl / base_stl відсутні.