Creative Lab — API брелока

Перетворіть вихідну фотографію на придатний для 3D-друку медальйон-брелок — рельєф глибини у формі значка з кольорами — у два етапи: prototype генерує кольорове концептуальне зображення з вашої вхідної фотографії, а потім build перетворює це концептуальне зображення на рельєфну 3D-модель. Два етапи пов’язані через input_task_id.

  • POST /openapi/creative-lab/keychain/v1/prototype
  • POST /openapi/creative-lab/keychain/v1/build

POST/openapi/creative-lab/keychain/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 як input_task_id.

Випадки помилок

  • Name
    400 - Bad Request
    Description

    Запит був неприйнятним. Поширені причини:

    • Відсутній параметр: image_url є обов’язковим.
    • Недійсний формат зображення: Наданий image_url не є підтримуваним форматом (.jpg, .jpeg, .png, .webp).
    • Розміри зображення поза діапазоном: Зображення замале, перевищує максимальний розмір файлу або перевищує максимальну кількість пікселів.
    • Недосяжна URL-адреса: image_url не вдалося завантажити (404 або timeout).
    • Недійсний Data URI: Рядок base64 має неправильний формат.
    • Вміст позначено: Вхідне зображення було позначене moderation щодо 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 image
curl https://api.meshy.ai/openapi/creative-lab/keychain/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>"
  }'

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.
Вихідна фотографія, використана як вхідні дані Creative Lab Keychain
Prototype input
Вихід прототипу Creative Lab Keychain, згенерований із вихідної фотографії
Prototype output

POST/openapi/creative-lab/keychain/v1/build

Створити завдання збірки брелока

Згенеруйте фінальний медальйон-брелок для 3D-друку із завдання прототипу, що завершилося успішно. Збірка запускає конвеєр рельєфу на основі карти глибини для колоризованого концепт-зображення прототипу та постачає один артефакт сітки у запитаному вами форматі. Див. Об’єкт завдання збірки брелока щодо форми відповіді.

Параметри

  • Name
    input_task_id
    Type
    string
    Обов'язковий
    Description

    ID завдання прототипу, створеного через цю саму кінцеву точку OpenAPI. Прототип має бути створений із тим самим API-ключем, має досягти SUCCEEDED і має створити рівно одне зображення-кандидат.

    Завдання прототипів, створені через вебзастосунок, не приймаються — кінцева точка збірки приймає лише завдання прототипів, створені через POST /openapi/creative-lab/keychain/v1/prototype, і відхиляє будь-яке інше джерело з 404.

  • Name
    name
    Type
    string
    Description

    Необов’язкова назва завдання для відображення. Максимум 100 символів.

options

Необов’язкові параметри налаштування для геометрії рельєфу. Кожне поле має розумне значення за замовчуванням — надсилайте лише ті, які хочете перевизначити.

  • Name
    badge_shape
    Type
    string
    за замовчуванням circle
    Description

    Контурний силует медальйона-брелока. Доступні значення:

    • circle (за замовчуванням)
    • rounded-rect
    • hexagon
    • shield
    • star
  • Name
    size_mm
    Type
    number
    за замовчуванням 40
    Description

    Довжина сторони обмежувального квадрата брелока в міліметрах. Діапазон: (0, 400].

  • Name
    relief_height_mm
    Type
    number
    за замовчуванням 2.2
    Description

    Максимальна висота рельєфу над основою в міліметрах. Діапазон: [0, 20].

  • Name
    relief_offset_mm
    Type
    number
    за замовчуванням 0
    Description

    Вертикальне зміщення, застосоване до рельєфу перед екструзією, у міліметрах. Діапазон: [0, 20].

  • Name
    base_thickness_mm
    Type
    number
    за замовчуванням 0.1
    Description

    Товщина плоскої базової пластини позаду рельєфу в міліметрах. Діапазон: [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].

  • Name
    relief_scale
    Type
    number
    за замовчуванням 1.0
    Description

    Множник вертикального масштабу, застосований поверх relief_height_mm. Діапазон: (0, 10].

  • Name
    depth_threshold
    Type
    number
    за замовчуванням 0.1
    Description

    Поріг низькочастотного пропускання для значень карти глибини; усе, що нижче за нього, обмежується до нуля. Діапазон: [0, 1].

  • Name
    remove_background
    Type
    boolean
    за замовчуванням true
    Description

    Автоматично видалити фон концепт-зображення прототипу перед створенням рельєфу.

  • 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 у 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-mode можна послідовно передавати в збірку).

  • Name
    429 - Too Many Requests
    Description

    Ви перевищили своє обмеження частоти.

Request

POST
/openapi/creative-lab/keychain/v1/build
# Stage 2: chain build off a succeeded prototype task
curl https://api.meshy.ai/openapi/creative-lab/keychain/v1/build \
  -X POST \
  -H "Authorization: Bearer ${YOUR_API_KEY}" \
  -H 'Content-Type: application/json' \
  -d '{
    "input_task_id": "018a210d-8ba4-705c-b111-1f1776f7f578",
    "options": {
      "badge_shape": "circle",
      "size_mm": 40,
      "relief_height_mm": 2.5
    },
    "output": {
      "format": "glb"
    }
  }'

Response

{
  "result": "019c320e-9a8f-7a1c-9c11-2a1876f8a9bb"
}
Build example
The build task converts the selected prototype image into a 3D-printable keychain model.
Creative Lab Keychain build model preview
Build model preview

GET/openapi/creative-lab/keychain/v1/(prototype|build)/:id

Отримати завдання брелока

Отримайте завдання прототипу або збірки за дійсним id завдання. Шлях URL має відповідати етапу завдання — завдання збірки, отримане через /prototype/:id, повертає 404, і навпаки.

Див. Об’єкт завдання прототипу брелока і Об’єкт завдання збірки брелока для форм відповіді.

Параметри

  • Name
    id
    Type
    path
    Description

    Унікальний ідентифікатор завдання брелока, яке потрібно отримати.

Повертає

Відповідь містить об’єкт завдання брелока. Форма залежить від того, який етап було запитано.

Request

GET
/openapi/creative-lab/keychain/v1/prototype/018a210d-8ba4-705c-b111-1f1776f7f578
# Prototype
curl https://api.meshy.ai/openapi/creative-lab/keychain/v1/prototype/018a210d-8ba4-705c-b111-1f1776f7f578 \
  -H "Authorization: Bearer ${YOUR_API_KEY}"

# Build
curl https://api.meshy.ai/openapi/creative-lab/keychain/v1/build/019c320e-9a8f-7a1c-9c11-2a1876f8a9bb \
  -H "Authorization: Bearer ${YOUR_API_KEY}"

Prototype Response

{
  "id": "018a210d-8ba4-705c-b111-1f1776f7f578",
  "type": "creative-lab-keychain-prototype",
  "name": "",
  "status": "SUCCEEDED",
  "progress": 100,
  "created_at": 1729123456000,
  "started_at": 1729123460000,
  "finished_at": 1729123486000,
  "expires_at": 1729382686000,
  "preceding_tasks": 0,
  "task_error": null,
  "consumed_credits": 6,
  "image_urls": [
    "https://assets.meshy.ai/***/concept.png?Expires=***"
  ]
}

Build Response

{
  "id": "019c320e-9a8f-7a1c-9c11-2a1876f8a9bb",
  "type": "creative-lab-keychain-build",
  "name": "",
  "status": "SUCCEEDED",
  "progress": 100,
  "created_at": 1729123500000,
  "started_at": 1729123510000,
  "finished_at": 1729123535000,
  "expires_at": 1729382735000,
  "preceding_tasks": 0,
  "task_error": null,
  "consumed_credits": 20,
  "model_urls": {
    "glb": "https://assets.meshy.ai/***/tasks/019c320e-9a8f-7a1c-9c11-2a1876f8a9bb/output/model.glb?Expires=***"
  }
}

DELETE/openapi/creative-lab/keychain/v1/(prototype|build)/:id

Видалити завдання брелока

Скасувати завдання брелока. Якщо завдання все ще має стан 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.

Request

DELETE
/openapi/creative-lab/keychain/v1/prototype/018a210d-8ba4-705c-b111-1f1776f7f578
curl --request DELETE \
  --url https://api.meshy.ai/openapi/creative-lab/keychain/v1/prototype/018a210d-8ba4-705c-b111-1f1776f7f578 \
  -H "Authorization: Bearer ${YOUR_API_KEY}"

Response

// Returns 204 No Content on success (empty body).

GET/openapi/creative-lab/keychain/v1/(prototype|build)/:id/stream

Потокове передавання завдання брелока

Отримуйте в реальному часі оновлення для завдання брелока через SSE. Шлях URL має відповідати етапу завдання — відкриття потоку за /prototype/:buildId/stream надсилає одне корисне навантаження event: error із status_code: 404 і закриває потік.

Параметри

  • Name
    id
    Type
    path
    Description

    Унікальний ідентифікатор завдання брелока для потокового передавання.

Повертає

Повертає потік об’єктів завдань прототипу брелока або збірки брелока як SSE. Для завдань PENDING або IN_PROGRESS потік відповіді міститиме лише необхідні поля progress і status.

Request

GET
/openapi/creative-lab/keychain/v1/build/019c320e-9a8f-7a1c-9c11-2a1876f8a9bb/stream
curl -N https://api.meshy.ai/openapi/creative-lab/keychain/v1/build/019c320e-9a8f-7a1c-9c11-2a1876f8a9bb/stream \
-H "Authorization: Bearer ${YOUR_API_KEY}"

Response Stream

// Error event example (wrong stage or task not found)
event: error
data: {
  "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: message
data: {
  "id": "019c320e-9a8f-7a1c-9c11-2a1876f8a9bb",
  "progress": 0,
  "status": "PENDING"
}

event: message
data: {
  "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=***"
  }
}

GET/openapi/creative-lab/keychain/v1/(prototype|build)

Список завдань брелока

Отримайте пагінований список ваших завдань брелока для одного етапу. Шлях 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: Сортувати за часом створення в порядку спадання.

Повертає

Повертає пагінований список об’єкта завдання для окремого етапу — або об’єкт завдання прототипу брелока під час отримання списку /prototype, або об’єкт завдання збірки брелока під час отримання списку /build.

Request

GET
/openapi/creative-lab/keychain/v1/prototype
# List prototype tasks
curl https://api.meshy.ai/openapi/creative-lab/keychain/v1/prototype?page_size=10 \
  -H "Authorization: Bearer ${YOUR_API_KEY}"

# List build tasks
curl https://api.meshy.ai/openapi/creative-lab/keychain/v1/build?page_size=10 \
  -H "Authorization: Bearer ${YOUR_API_KEY}"

Response (List Prototype Tasks)

[
  {
    "id": "018a210d-8ba4-705c-b111-1f1776f7f578",
    "type": "creative-lab-keychain-prototype",
    "name": "",
    "status": "SUCCEEDED",
    "progress": 100,
    "created_at": 1729123456000,
    "started_at": 1729123460000,
    "finished_at": 1729123486000,
    "expires_at": 1729382686000,
    "preceding_tasks": 0,
    "task_error": null,
    "consumed_credits": 6,
    "image_urls": [
      "https://assets.meshy.ai/***/concept.png?Expires=***"
    ]
  }
]

Об’єкт завдання прототипу брелока

Об’єкт завдання прототипу брелока — це робоча одиниця, яку 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
    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

    Мітка часу, коли завдання було запущено, у мілісекундах. Якщо завдання ще не запущено, ця властивість буде 0.

  • Name
    finished_at
    Type
    timestamp
    Description

    Мітка часу, коли завдання було завершено, у мілісекундах. Якщо завдання ще не завершено, ця властивість буде 0.

  • Name
    expires_at
    Type
    timestamp
    Description

    Мітка часу, коли результат завдання закінчує термін дії, у мілісекундах.

  • Name
    preceding_tasks
    Type
    integer
    Description

    Кількість попередніх завдань.

  • 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 завжди повертає рівно одного кандидата; поле є масивом, щоб майбутні версії могли відображати кількох кандидатів без критичної зміни.

Example Keychain Prototype Task Object

{
  "id": "018a210d-8ba4-705c-b111-1f1776f7f578",
  "type": "creative-lab-keychain-prototype",
  "name": "",
  "status": "SUCCEEDED",
  "progress": 100,
  "created_at": 1729123456000,
  "started_at": 1729123460000,
  "finished_at": 1729123486000,
  "expires_at": 1729382686000,
  "preceding_tasks": 0,
  "task_error": null,
  "consumed_credits": 6,
  "image_urls": [
    "https://assets.meshy.ai/***/concept.png?Expires=***"
  ]
}

Об’єкт завдання збірки брелока

Об’єкт завдання збірки брелока — це робоча одиниця, яку 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

    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.

Example Keychain Build Task Object

{
  "id": "019c320e-9a8f-7a1c-9c11-2a1876f8a9bb",
  "type": "creative-lab-keychain-build",
  "name": "",
  "status": "SUCCEEDED",
  "progress": 100,
  "created_at": 1729123500000,
  "started_at": 1729123510000,
  "finished_at": 1729123535000,
  "expires_at": 1729382735000,
  "preceding_tasks": 0,
  "task_error": null,
  "consumed_credits": 20,
  "model_urls": {
    "glb": "https://assets.meshy.ai/***/tasks/019c320e-9a8f-7a1c-9c11-2a1876f8a9bb/output/model.glb?Expires=***"
  }
}