Превратите исходную фотографию в абажур лампы, готовый для 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 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.
Размеры изображения вне допустимого диапазона: изображение слишком маленькое, превышает максимальный размер файла или максимальное количество пикселей.
Недоступный 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"}
Prototype example
Начните с исходного фото; прототип возвращает концептуальное изображение и полую 3D-модель, которую обрабатывает этап сборки.
Генерирует финальные детали для 3D-печати из успешно завершённой задачи прототипа.
Сборка запускает обработчик лампы для 3D-модели прототипа: он масштабирует
модель до diameter_mm, выравнивает нижнюю часть на cut_amount_percent,
делает полой до thickness_mm, открывает нижнюю часть и — если выбран
пресет крепления — добавляет опорную пластину с отверстием под крепление и
отдельное крепление для источника света. Форму ответа см. в разделе
The Lamp Build Task Object.
Параметры
Name
input_task_id
Type
string
Обязательный
Description
ID задачи прототипа, созданной через тот же эндпоинт OpenAPI. Прототип должен быть создан с тем же API-ключом, должен достичь статуса SUCCEEDED и должен был сгенерировать 3D-модель.
Задачи прототипа, созданные через веб-приложение, не принимаются — эндпоинт сборки принимает только задачи прототипа, созданные через 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 задачи вновь созданной задачи сборки лампы. Опрашивайте эндпоинт Get a Task или подпишитесь на поток, пока задача не достигнет статуса 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: Сортировка по времени создания в порядке убывания.
Объект задачи прототипа лампы — это единица работы, которую 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 по Гринвичу представляется как 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. Для задач со статусом FAILED возвращается 0 (кредиты возвращаются при неудаче).
Name
model_urls
Type
object
Description
Ссылки для скачивания 3D-модели, созданной по концептуальному изображению. Присутствует после успешного завершения задачи; до этого — {}.
Name
glb
Type
string
Description
Ссылка для скачивания полой матово-белой модели плафона лампы в формате GLB. Именно эту модель обрабатывает этап сборки.
Name
thumbnail_url
Type
string
Description
Ссылка для скачивания отрендеренного превью 3D-модели. Пустая строка, пока задача не завершится успешно.
Name
image_urls
Type
array of strings
Description
Ссылки для скачивания вариантов концептуального изображения, созданных этой задачей прототипа. В настоящее время 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
Ссылки для скачивания сгенерированных артефактов, ключом служит имя артефакта. Набор ключей зависит от output.format и options.light_source_preset:
Name
lamp_stl
Type
string
Description
Ссылка для скачивания lamp.stl: абажур с открытым дном вместе с опорной пластиной, несущей отверстие фиксатора, либо единый герметичный абажур, если options.light_source_preset был none. Присутствует, если output.format был stl (значение по умолчанию).
Name
base_stl
Type
string
Description
Ссылка для скачивания base.stl — крепления фиксатора источника света. Присутствует, если output.format был stlиoptions.light_source_preset не был none. Отсутствует, если пресет фиксатора был none.
Name
bundle_zip
Type
string
Description
Ссылка для скачивания zip-архива со всеми артефактами, созданными процессором (lamp.stl, опционально base.stl, и — если options.include_result_json равен true — result.json). Присутствует, если output.format был zip. Когда присутствует bundle_zip, поля lamp_stl / base_stl отсутствуют.