Преобразуйте текстовый 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 задачи только что созданной задачи прототипа лампы. Опрашивайте эндпоинт Получить задачу или подпишитесь на stream, пока задача не достигнет 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 endpoint. Прототип должен быть создан с тем же API-ключом, должен достичь SUCCEEDED и должен создать ровно одно изображение-кандидат.
Задачи прототипов, созданные через веб-приложение, не принимаются — endpoint сборки принимает только задачи прототипов, созданные через 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.
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 задачи новой созданной задачи сборки лампы. Опрашивайте endpoint Получить задачу или подпишитесь на поток, пока задача не достигнет 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-mode).
Получить задачу прототипа или сборки по действительному 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, вам не следует делать какие-либо предположения о формате идентификатора.
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 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-печати абажур из успешно выполненной задачи прототипа.
Сборка запускает конвейер черновой генерации image-to-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
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 отсутствуют.