Превращайте свои фотографии в пользовательские магниты на холодильник — цветной
рельеф глубины со скругленными углами и плоской магнитной задней стороной,
размером для холодильника — в два этапа: прототип создает цветное концептуальное
изображение из вашей входной фотографии, затем сборка превращает это концептуальное
изображение в рельефную 3D-модель. Два этапа связаны через input_task_id.
POST /openapi/creative-lab/fridge-magnet/v1/prototype
Сгенерируйте одно цветное концепт-изображение на основе исходной фотографии.
Возвращаемый ID задачи — это значение, которое вы передаете как input_task_id в build
эндпоинт. См.
Объект задачи прототипа магнита на холодильник
для структуры ответа.
Параметры
Name
image_url
Type
string
Обязательный
Description
Исходная фотография, которую Meshy раскрасит в концепт-изображение, готовое для магнита на холодильник. В настоящее время мы поддерживаем форматы .jpg, .jpeg, .png и .webp.
Есть два способа предоставить изображение:
Публично доступный URL: URL, доступный из публичного интернета.
Data URI: Data URI изображения, закодированный в base64. Пример data URI: data:image/jpeg;base64,<your base64-encoded image data>.
Name
name
Type
string
Description
Необязательное имя задачи для отображения. Максимум 100 символов.
Возвращает
Свойство result в ответе содержит id задачи только что созданной задачи прототипа магнита на холодильник. Опросите эндпоинт Получить задачу или подпишитесь на поток, пока задача не достигнет SUCCEEDED, затем передайте этот ID в build endpoint как input_task_id.
Сгенерируйте итоговый 3D-печатаемый магнит на холодильник из успешно выполненной
задачи прототипа. Сборка запускает конвейер рельефа на основе карты глубины для
раскрашенного концептуального изображения прототипа и выдает один артефакт сетки в
запрошенном вами формате. См.
Объект задачи сборки магнита на холодильник для
структуры ответа.
Параметры
Name
input_task_id
Type
string
Обязательный
Description
ID задачи прототипа, созданной через этот же эндпоинт OpenAPI. Прототип должен быть создан с тем же API-ключом, должен достичь SUCCEEDED и должен создать ровно одно изображение-кандидат.
Задачи прототипа, созданные через веб-приложение, не принимаются — эндпоинт сборки принимает только задачи прототипа, созданные через POST /openapi/creative-lab/fridge-magnet/v1/prototype, и отклоняет любой другой источник с 404.
Name
name
Type
string
Description
Необязательное имя задачи для отображения. Максимум 100 символов.
options
Необязательные параметры настройки рельефной геометрии. Каждое поле имеет разумное значение по умолчанию — отправляйте только те, которые хотите переопределить.
Name
badge_shape
Type
string
по умолчанию rounded-rect
Description
Контурный силуэт магнита на холодильник. Доступные значения:
circle
rounded-rect (по умолчанию)
hexagon
shield
star
Name
size_mm
Type
number
по умолчанию 60
Description
Длина стороны ограничивающего квадрата магнита на холодильник, в миллиметрах. Диапазон: (0, 400].
Name
relief_height_mm
Type
number
по умолчанию 3.3
Description
Максимальная высота рельефа над основанием, в миллиметрах. Диапазон: [0, 20].
Name
relief_offset_mm
Type
number
по умолчанию 0
Description
Вертикальное смещение, применяемое к рельефу перед экструзией, в миллиметрах. Диапазон: [0, 20].
Name
base_thickness_mm
Type
number
по умолчанию 2.0
Description
Толщина плоской базовой пластины за рельефом, в миллиметрах. Значение по умолчанию для магнита на холодильник — более массивное основание 2 мм: оно дает магниту достаточно объема, чтобы держаться на холодильнике, не создавая ощущения хрупкости рельефа. Диапазон: [0, 20].
Name
has_closed_back
Type
boolean
по умолчанию true
Description
Определяет, запечатана ли задняя сторона магнита на холодильник как закрытая поверхность (сторона, к которой вы приклеиваете магнит). Установите false для открытой оболочки.
Name
relief_curve
Type
string
по умолчанию linear
Description
Кривая преобразования, сопоставляющая значения карты глубины с высотой рельефа. Доступные значения:
linear (по умолчанию)
gamma
s-curve
Name
curve_param
Type
number
по умолчанию 1.0
Description
Параметр формы для кривой преобразования (имеет смысл только когда relief_curve равно gamma). Диапазон: (0, 10].
Name
invert_depth
Type
boolean
по умолчанию false
Description
Инвертирует интерпретацию карты глубины так, чтобы более темные области становились более высоким рельефом.
Name
smoothing
Type
number
по умолчанию 0.24
Description
Сила сглаживания, применяемого к карте глубины перед извлечением рельефа. Диапазон: [0, 10].
glb (по умолчанию) — возвращает один model.glb в model_urls.glb.
obj — упаковывает model.obj + model.mtl + texture.png в zip и возвращает пакет в model_urls.obj.
zip — упаковывает в 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
Уникальный идентификатор задачи магнита на холодильник для потоковой передачи.
// 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": "01b4e9a2-9d3f-8e15-c334-4f4887b2d9d0","progress": 0,"status": "PENDING"}event: messagedata: {"id": "01b4e9a2-9d3f-8e15-c334-4f4887b2d9d0","type": "creative-lab-fridge-magnet-build","status": "SUCCEEDED","progress": 100,"created_at": 1729543250000,"started_at": 1729543258000,"finished_at": 1729543285000,"expires_at": 1729802485000,"task_error": null,"consumed_credits": 20,"model_urls": {"glb":"https://assets.meshy.ai/***/tasks/01b4e9a2-9d3f-8e15-c334-4f4887b2d9d0/output/model.glb?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 отслеживает для
генерации раскрашенного концепт-изображения из исходной фотографии. Выходной результат
этого этапа передается в этап сборки
через input_task_id.
Свойства
Name
id
Type
string
Description
Уникальный идентификатор задачи. Хотя мы используем k-сортируемый UUID для идентификаторов задач как деталь реализации, вам не следует делать какие-либо предположения о формате id.
Name
type
Type
string
Description
Тип задачи. Значение: creative-lab-fridge-magnet-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-сетки магнита на холодильник из задачи прототипа со статусом SUCCEEDED. Процесс
создания запускает конвейер рельефа на основе карты глубины для концепт-изображения прототипа и
публикует один артефакт сетки в формате, запрошенном вызывающей стороной.
Свойства
Name
id
Type
string
Description
Уникальный идентификатор задачи.
Name
type
Type
string
Description
Тип задачи. Значение: creative-lab-fridge-magnet-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 запроса сборки. Ключ соответствует запрошенному формату:
Name
glb
Type
string
Description
URL-адрес для скачивания файла GLB. Присутствует, когда output.format был glb (по умолчанию).
Name
obj
Type
string
Description
URL-адрес для скачивания zip-пакета, содержащего model.obj, model.mtl и texture.png. Присутствует, когда output.format был obj.
Name
bundle_zip
Type
string
Description
URL-адрес для скачивания zip-пакета со всеми артефактами, которые выдает генератор. Присутствует, когда output.format был zip.