Перетворіть вихідне фото на медальйон-брелок, придатний для 3D-друку — значок у формі кольорового рельєфу — у два етапи: прототип генерує кольорове концептуальне зображення з вашого вхідного фото, потім збірка перетворює це концептуальне зображення на рельєфну 3D-модель. Два етапи пов'язані через input_task_id.
Згенерує єдине кольорове концептуальне зображення з вихідного фото. Отриманий ID завдання — це те, що ви передаєте як input_task_id до endpoint збірки. Дивіться
Об'єкт завдання прототипу брелока
для форми відповіді.
Параметри
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
name
Type
string
Description
Необов'язкова назва завдання для відображення. Максимум 100 символів.
Це позначає завдання у вашій панелі керування та списках завдань. Це не те, що гравірується на брелоку — для цього використовуйте name_text.
Name
name_text
Type
string
Description
Текст для гравіювання на брелоку, наприклад ім'я домашньої тварини чи людини. Максимум 10 символів, які рахуються як Unicode-символи, а не байти, тому приймається 10-символьне ім'я китайською, японською чи корейською мовою. Пропустіть це поле, щоб отримати брелок без гравіювання.
Пробіли з обох боків обрізаються, а невидимі символи форматування видаляються перед використанням тексту. Отримане значення повертається як name_text в об'єкті завдання прототипу, тож ви можете підтвердити, що саме буде вигравіювано, перш ніж платити за етап збірки.
Гравіювання застосовується тут, на етапі прототипу. Етап збірки успадковує його автоматично і не приймає власного name_text.
Якщо текст не є простим ASCII, надсилайте тіло запиту в UTF-8 та встановіть Content-Type: application/json; charset=utf-8. Деякі HTTP-клієнти — серед них Invoke-RestMethod Windows PowerShell — за замовчуванням кодують тіло в ISO-8859-1, що непомітно перетворює кожен нелатинський символ на ?, перш ніж він досягне Meshy. API не може відрізнити це від гравіювання, яке ви дійсно запросили.
Name
remove_background
Type
boolean
за замовчуванням false
Description
Якщо встановлено true, зображення прототипу повертається як прозоре RGBA PNG з видаленим фоном, тож ви можете компонувати об'єкт на будь-якому фоні.
Це контролює лише зображення, яке повертає цей endpoint. Це окремо від опції збірки з такою ж назвою (за замовчуванням true), яка контролює видалення фону перед рельєфуванням.
Повертає
Властивість result відповіді містить id завдання щойно створеного прототипу брелока. Опитуйте endpoint Отримати завдання або підпишіться на потік, доки завдання не досягне SUCCEEDED, після чого передайте цей ID до endpoint збірки як input_task_id.
Режими відмови
Name
400 - Bad Request
Description
Запит було неприйнятним. Поширені причини:
Відсутній параметр: image_url є обов'язковим.
Недійсний формат зображення: наданий image_url не має підтримуваного формату (.jpg, .jpeg, .png, .webp).
Розміри зображення поза допустимим діапазоном: зображення занадто мале, перевищує максимальний розмір файлу або максимальну кількість пікселів.
Недоступна URL-адреса: image_url не вдалося завантажити (404 або timeout).
Недійсний Data URI: рядок base64 має неправильний формат.
Занадто довге гравіювання: name_text довше за 10 символів. Запит відхиляється, а не обрізається, тому з вас ніколи не стягнуть плату за брелок з гравіюванням із скороченим ім'ям.
Позначений контент: вхідне зображення було позначене модерацією NSFW або інтелектуальної власності, або гравіювання name_text було позначене модерацією NSFW. Гравіювання перевіряється лише на NSFW-контент — перевірка на інтелектуальну власність стосується зображення.
Name
401 - Unauthorized
Description
Автентифікація не вдалася. Перевірте свій API-ключ.
Name
402 - Payment Required
Description
Недостатньо кредитів для виконання цього завдання.
Name
429 - Too Many Requests
Description
Ви перевищили своє обмеження частоти.
Request
POST
/openapi/creative-lab/keychain/v1/prototype
# Stage 1: generate a colorized keychain concept imagecurlhttps://api.meshy.ai/openapi/creative-lab/keychain/v1/prototype \-XPOST \-H"Authorization: Bearer ${YOUR_API_KEY}" \-H'Content-Type: application/json; charset=utf-8' \-d'{ "image_url": "<your publicly accessible image url or base64-encoded data URI>", "name_text": "Luna" }'
Response
{"result":"018a210d-8ba4-705c-b111-1f1776f7f578"}
Приклад прототипу
Почніть з вихідного фото, а потім згенеруйте зображення прототипу, яке використовується на етапі збірки брелока.
Генеруйте фінальний 3D-друкований медальйон брелока з успішного прототипного завдання. Побудова запускає конвеєр рельєфу на основі карти глибини на кольоровому концептуальному зображенні прототипу та відправляє один артефакт сітки у форматі, який ви запитуєте. Зверніться до
Об'єкт Завдання на Побудову Брелока для форми відповіді.
Параметри
Name
input_task_id
Type
string
Обов'язковий
Description
Ідентифікатор завдання прототипу, створеного через цю ж кінцеву точку OpenAPI. Прототип повинен бути створений з тим самим API-ключем, досягти SUCCEEDED і мати рівно одне кандидатське зображення.
Прототипні завдання, створені через веб-додаток, не приймаються — кінцева точка побудови приймає лише прототипні завдання, створені за допомогою POST /openapi/creative-lab/keychain/v1/prototype і відхиляє будь-яке інше джерело з 404.
Name
name
Type
string
Description
Необов'язкова назва завдання для відображення. Максимум 100 символів.
options
Необов'язкові параметри налаштування для рельєфної геометрії. Кожне поле має розумне значення за замовчуванням — надсилайте лише ті, які ви хочете перевизначити.
Низькочастотний поріг для значень карти глибини; все, що нижче цього, обрізається до нуля. Діапазон: [0, 1].
Name
remove_background
Type
boolean
за замовчуванням true
Description
Автоматично видаляти фон концептуального зображення прототипу перед рельєфом.
Відрізняється від параметра прототипу з тією ж назвою (за замовчуванням false), який контролює, чи повертається саме зображення прототипу з прозорістю.
Name
export_resolution
Type
integer
за замовчуванням 512
Description
Роздільна здатність сітки, використана для експорту. Діапазон: [64, 2048].
output
Необов'язковий селектор формату передачі. За замовчуванням glb.
glb (за замовчуванням) — повертає один model.glb під model_urls.glb.
obj — архівує model.obj + model.mtl + texture.png і повертає пакет під model_urls.obj.
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 вийшло за межі дозволеного діапазону або набору перерахувань.
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
Унікальний ідентифікатор для завдання брелока для трансляції.
Повертає
Повертає потік об'єктів завдань Keychain Prototype
або Keychain 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-keychain-build","status": "SUCCEEDED","progress": 100,"created_at": 1729123500000,"started_at": 1729123510000,"finished_at": 1729123535000,"expires_at": 1729382735000,"task_error": null,"consumed_credits": 20,"model_urls": {"glb":"https://assets.meshy.ai/***/tasks/019c320e-9a8f-7a1c-9c11-2a1876f8a9bb/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: Сортувати за часом створення у спадному порядку.
Об'єкт Keychain Prototype Task — це одиниця роботи, яку Meshy відстежує для
генерації розфарбованого концептуального зображення з вихідної фотографії. Результат
цього етапу передається у етап побудови
через input_task_id.
Властивості
Name
id
Type
string
Description
Унікальний ідентифікатор завдання. Хоча в якості деталі реалізації ми використовуємо для ідентифікаторів завдань k-сортований UUID, вам не слід робити жодних припущень щодо формату id.
Name
type
Type
string
Description
Тип завдання. Значення — creative-lab-keychain-prototype.
Name
name
Type
string
Description
Назва завдання, надана при його створенні. Порожній рядок, якщо назву не було вказано.
Name
name_text
Type
string
Description
Гравіювання, застосоване до цього брелока, після обрізки та видалення невидимих символів форматування. Відсутнє, якщо завдання було створено без name_text. Порівняйте його з тим, що ви надіслали, щоб переконатися, що текст зберігся після кодування вашого HTTP-клієнта.
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 за Гринвічем представлена як 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
image_urls
Type
array of strings
Description
URL-адреси для завантаження варіантів концептуального зображення, згенерованих цим prototype-завданням. Наразі API завжди повертає рівно один варіант; поле є масивом, щоб майбутні версії могли надавати декілька варіантів без порушення сумісності.
Об'єкт Завдання Створення Брелока — це одиниця роботи, за якою Meshy стежить для
генерації фінальної 3D сітки брелока з успішного прототипного завдання.
Створення запускає конвеєр рельєфу карти глибини на концептуальному зображенні прототипу та
публікує єдиний артефакт сітки у форматі, запитуваному викликачем.
Властивості
Name
id
Type
string
Description
Унікальний ідентифікатор для завдання.
Name
type
Type
string
Description
Тип завдання. Значення — creative-lab-keychain-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 запиту створення. Ключ відповідає запитуваному формату:
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.