Перетворіть текстовий prompt або вихідну фотографію на придатний для 3D-друку абажур у два
етапи: прототип генерує стилізоване матово-біле концептуальне зображення, потім
побудова перетворює це концептуальне зображення на порожнистий абажур STL (за бажанням
у парі з диском-основою для кріплення джерела світла). Два етапи пов’язані
через input_task_id.
Згенеруйте одне матово-біле концептуальне зображення абажура — або
з текстового prompt (text-to-3D), або з еталонної фотографії (image-to-3D).
Повернений ID завдання — це значення, яке ви передаєте як input_task_id до кінцевої точки
збирання. Див.
Об’єкт завдання прототипу лампи
для структури відповіді.
Параметри
Потрібно вказати рівно одне з text або image_url. Передавання обох або жодного повертає 400.
Name
text
Type
string
Обов'язковий
Description
Текстовий prompt, що описує бажаний об’єкт абажура. Обов’язковий, коли image_url не вказано. Максимум 800 символів.
Name
image_url
Type
string
Обов'язковий
Description
Вихідна фотографія, яку Meshy використовує як візуальний референс для абажура. Обов’язкова, коли text не вказано. Наразі ми підтримуємо формати .jpg, .jpeg, .png і .webp.
Є два способи надати зображення:
Публічно доступна URL-адреса: URL-адреса, доступна з публічного інтернету.
Data URI: Data URI зображення, закодований у base64. Приклад Data URI: data:image/jpeg;base64,<your base64-encoded image data>.
Name
image_subject
Type
string
за замовчуванням character
Description
Підказка щодо категорії об’єкта для шляху image-to-3D. Доступні значення:
character (за замовчуванням) — один персонаж / об’єкт (фігурка, тварина, маскот тощо).
landscape — зовнішня сцена / панорама (гора, міський пейзаж, ліс тощо).
Ігнорується для шляху text-to-3D.
Name
name
Type
string
Description
Необов’язкова назва завдання для відображення. Максимум 100 символів.
Повертає
Властивість result відповіді містить id завдання новоствореного завдання прототипу лампи. Опитуйте кінцеву точку Отримати завдання або підпишіться на потік, доки завдання не досягне SUCCEEDED, а потім передайте цей ID до кінцевої точки збирання як input_task_id.
Режими відмови
Name
400 - Bad Request
Description
Запит був неприйнятним. Поширені причини:
Відсутній параметр: Потрібно вказати рівно одне з text або image_url.
Надано обидва: Передавання одночасно text і image_url відхиляється — вони взаємовиключні.
Недійсний формат зображення: Наданий image_url не є підтримуваним форматом (.jpg, .jpeg, .png, .webp).
Розміри зображення поза діапазоном: Зображення занадто мале, перевищує максимальний розмір файлу або перевищує максимальну кількість пікселів.
Недоступна URL-адреса: image_url не вдалося завантажити (404 або timeout).
Недійсний Data URI: Рядок base64 має неправильний формат.
Вміст позначено: Вхідне зображення було позначено NSFW або moderation інтелектуальної власності.
Текст занадто довгий: text перевищує 800 символів.
Недійсний 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 (image-to-3D): generate a matte-white lampshade concept imagecurl https://api.meshy.ai/openapi/creative-lab/lamp/v1/prototype \ -X POST \ -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" }'# Stage 1 (text-to-3D): generate from a text promptcurl https://api.meshy.ai/openapi/creative-lab/lamp/v1/prototype \ -X POST \ -H "Authorization: Bearer ${YOUR_API_KEY}" \ -H 'Content-Type: application/json' \ -d '{ "text": "a stylized owl perched on a tree branch under moonlight" }'
Response
{"result":"018a210d-8ba4-705c-b111-1f1776f7f578"}
Prototype example
Start with a source photo, then generate the prototype image used by the lamp build stage.
Згенеруйте фінальний придатний для 3D-друку абажур із успішного завдання
прототипу. Збірка запускає конвеєр image-to-3D на концептуальному
зображенні прототипу, а потім постобробляє сітку через процесор лампи, щоб
зробити її порожнистою, вирівняти верх, за потреби вирізати основу та (коли
вибрано пресет кріплення) створити окремий базовий диск для джерела світла.
Див. Об’єкт завдання складання лампи щодо
форми відповіді.
Параметри
Name
input_task_id
Type
string
Обов'язковий
Description
ID завдання прототипу, створеного через цю саму кінцеву точку OpenAPI. Прототип має бути створений з тим самим API-ключем, має досягти SUCCEEDED і має створити рівно одне зображення-кандидат.
Завдання прототипів, створені через вебзастосунок, не приймаються — кінцева точка складання приймає лише завдання прототипів, створені POST /openapi/creative-lab/lamp/v1/prototype, і відхиляє будь-яке інше джерело з 404.
Name
name
Type
string
Description
Необов’язкова назва завдання для відображення. Максимум 100 символів.
options
Необов’язкові параметри налаштування геометрії абажура. Кожне поле має розумне значення за замовчуванням — надсилайте лише ті, які хочете перевизначити.
Name
diameter_mm
Type
number
за замовчуванням 80
Description
Цільовий максимальний розмір обмежувального паралелепіпеда абажура, у міліметрах. Сітка рівномірно масштабується, щоб уміститися. Діапазон: [50, 400].
Name
thickness_mm
Type
number
за замовчуванням 1.5
Description
Товщина стінки порожнистого абажура, у міліметрах. Діапазон: (0, 10].
Name
cut_amount_percent
Type
number
за замовчуванням 35
Description
Відсоток висоти абажура, який потрібно вирівняти зверху, щоб друк міг стояти на платформі. Діапазон: [1, 100].
Name
light_source_preset
Type
string
за замовчуванням bambu_mh001_60mm
Description
Пресет кріплення джерела світла, який визначає, чи створювати (і який саме) базовий диск разом з абажуром. Доступні значення:
bambu_mh001_60mm (за замовчуванням) — створює базовий диск 60 мм, розрахований на сумісне кріплення джерела світла. Результат включає model_urls.base_stl.
none — без кріплення, без базового диска. 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 відносно нижньої частини абажура, у міліметрах. Діапазон: [-80, 80].
Name
rotate_x_deg
Type
number
за замовчуванням 0
Description
Обертання навколо осі X, застосоване до імпортованої сітки перед обробкою, у градусах. Діапазон: [-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.
Name
format
Type
string
за замовчуванням stl
Description
Пакет артефактів, який повертає збірка. Доступні значення:
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.
Немає кандидата: Завдання прототипу виконалося успішно, але не створило зображення-кандидат.
Опції поза діапазоном: Одне з полів options вийшло за межі дозволеного діапазону або набору enum.
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
Унікальний ідентифікатор завдання лампи для потокового передавання.
Повертає
Повертає потік об'єктів завдань Прототип лампи
або Збірка лампи як
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": 30,"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: Сортувати за часом створення в порядку спадання.
Об’єкт завдання прототипу лампи — це робоча одиниця, яку Meshy відстежує, щоб
згенерувати стилізоване матово-біле концептуальне зображення або з текстового prompt,
або з вихідної фотографії. Результат цього етапу передається в
етап побудови через 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
progress завдання. Якщо завдання ще не запущено, ця властивість буде 0. Щойно завдання буде успішно виконано, вона стане 100.
Name
created_at
Type
timestamp
Description
Мітка часу створення завдання, у мілісекундах.
Мітка часу представляє кількість мілісекунд, що минули з 1 січня 1970 року UTC, відповідно до
стандарту RFC 3339.
Наприклад, п’ятниця, 1 вересня 2023 року 12:00:00 PM 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
image_urls
Type
array of strings
Description
URL-адреси для завантаження кандидатів концептуального зображення, згенерованих цим прототипним завданням. Наразі API завжди повертає рівно одного кандидата; поле є масивом, щоб у майбутніх версіях можна було надавати кілька кандидатів без критичних змін.
Об’єкт завдання складання лампи — це робоча одиниця, яку Meshy відстежує, щоб
згенерувати фінальний придатний для 3D-друку абажур з успішного завдання прототипу.
Складання запускає конвеєр чернетки зображення-в-3D + текстури на концептуальному
зображенні прототипу, а потім постобробляє сітку через процесор лампи, щоб
зробити її порожнистою, вирівняти та (за потреби) вирізати основу кріплення.
Properties
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
progress завдання. Якщо завдання ще не запущено, ця властивість буде 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. Присутня, коли 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 пропускаються.