Перетворіть вихідне фото на медальйон-брелок, придатний для 3D-друку, — кольоровий
рельєф глибини у формі значка — у два етапи: prototype генерує кольорове
концептуальне зображення з вашого вхідного фото, а потім build перетворює це
концептуальне зображення на рельєфну 3D-модель. Обидва етапи пов'язані через input_task_id.
Згенеруйте одне кольорове концептуальне зображення з вихідної фотографії. Отриманий 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
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 з видаленим фоном, тож ви можете скомпонувати об'єкт з будь-яким фоном.
Це контролює лише зображення, яке повертає ця кінцева точка. Це окремо від опції побудови з такою ж назвою (за замовчуванням true), яка керує видаленням фону перед рельєфуванням.
Повертає
Властивість result відповіді містить id завдання щойно створеного завдання прототипу брелока. Опитуйте кінцеву точку Отримати завдання або підпишіться на потік, доки завдання не досягне статусу SUCCEEDED, потім передайте цей ID до кінцевої точки побудови як 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"}
Prototype example
Start with a source photo, then generate the prototype image used by the keychain build stage.
Створює фінальний медальйон-брелок, придатний для 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.
Name
format
Type
string
за замовчуванням glb
Description
Пакет артефактів, що повертається побудовою. Доступні значення:
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. Кожен кадр містить повний об'єкт завдання для цього етапу — ту саму форму,
яку повертає кінцева точка Get — тому поки завдання має статус PENDING або IN_PROGRESS,
вихідні поля просто ще не заповнені (null, [] або {}), а
finished_at дорівнює null.
// Error event example (wrong stage or task not found)event: errordata: {"status_code": 404,"message": "Task not found"}// Message event examples illustrate task progress.// Every frame is the full task object; fields not yet populated are null / empty.// The PENDING frame below is abbreviated to the fields that change.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
повертає завдання збірки. Завдання з іншого етапу не включаються в жодну з
відповідей.
Path Parameters
Name
stage
Type
path
Обов'язковий
Description
prototype або build. Колекція повертає лише завдання, чий етап
відповідає URL — запит /prototype ніколи не повертає завдання
збірки, і навпаки.
Query Parameters
Name
page_num
Type
integer
за замовчуванням 1
Description
Номер сторінки для пагінації.
Name
page_size
Type
integer
за замовчуванням 10
Description
Обмеження розміру сторінки. Максимально дозволено 100 елементів.
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 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 завжди повертає рівно одного кандидата; поле є масивом, щоб майбутні версії могли надавати кілька кандидатів без критичних змін.
Об'єкт Keychain Build Task — це одиниця роботи, яку 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.