Retexture API

Retexture API — це функція, яка дозволяє інтегрувати можливості AI-ретекстурування Meshy у вашу власну програму. У цьому розділі ви знайдете всю інформацію, необхідну для того, щоб почати роботу з цим API.


POST/openapi/v1/retexture

Створити задачу Ретекстурування

Ця кінцева точка дозволяє створити нову задачу Ретекстурування. Зверніться до Об'єкт задачі Retexture, щоб побачити, які властивості включені в об'єкт задачі Retexture.

Параметри

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

    ID завершеної задачі Зображення у 3D або Текст у 3D, яку ви хочете ретекстурувати. Ця задача повинна бути однією з наступних: Text to 3D Preview, Text to 3D Refine, Image to 3D або Remesh. Крім того, вона повинна мати статус SUCCEEDED.

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

    Надайте 3D-модель для текстурування Meshy. Підтримувані формати: .glb, .gltf, .obj, .fbx, .stl.

    Існує два способи надати модель:

    • Публічно доступний URL: URL, доступний з публічного інтернету.
    • Data URI: base64-закодований data URI моделі. Використовуйте MIME type application/octet-stream. Приклад: data:application/octet-stream;base64,<your base64-encoded model data>.
  • Name
    text_style_prompt
    Type
    string
    Обов'язковий
    Description

    Опишіть бажаний стиль текстури об'єкта за допомогою тексту. Максимум 800 символів.

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

    Надайте 2D-зображення, щоб направити процес текстурування. Наразі ми підтримуємо формати .jpg, .jpeg та .png.

    Існує два способи надати зображення:

    • Публічно доступний URL: URL, доступний з публічного інтернету
    • Data URI: base64-закодований data URI зображення. Приклад data URI: data:image/jpeg;base64,<your base64-encoded image data>
  • Name
    multiview_image_urls
    Type
    string[]
    Обов'язковий
    Description

    Надайте від 1 до 4 зображень, що показують той самий об'єкт з різних ракурсів, щоб направити текстурування. Перше зображення є основним (фронтальним) видом; порядок решти видів (лівий, задній, правий) не має значення.

    Кожен елемент приймає ті самі формати, що й image_style_url (публічно доступний URL або base64 data URI, .jpg/.jpeg/.png).

  • Name
    ai_model
    Type
    string
    за замовчуванням latest
    Description

    ID AI-моделі для використання при ретекстуруванні. Доступні значення: meshy-6-lite, meshy-6, meshy-7, latest (Meshy 7).

  • Name
    enable_original_uv
    Type
    boolean
    за замовчуванням false
    Description

    Зберегти наявну UV-розкладку моделі замість генерування нової.

    • Якщо ви ретекстуруєте модель, згенеровану Meshy (через input_task_id, або model_url, що вказує на результат Meshy), встановіть це значення true, щоб повторно використати її оптимізовану UV-розкладку.
    • Якщо ви ретекстуруєте завантажену вами модель третьої сторони, встановіть true, якщо вона вже має гарні UV, які ви хочете зберегти, або залиште false, щоб дозволити Meshy розгорнути нові UV (найкраще підходить для моделей без належного UV-мапування).
  • Name
    enable_pbr
    Type
    boolean
    за замовчуванням false
    Description

    Генерувати PBR-карти (metallic, roughness, normal) на додаток до базового кольору. Карта emission також включається, коли ai_model дорівнює meshy-6, за винятком texture_resolution: 8k. meshy-6-lite, meshy-7 та latest не створюють карту emission.

  • Name
    texture_resolution
    Type
    string
    за замовчуванням 2k
    Description

    Роздільна здатність текстури базового кольору. Одна з 2k (2048×2048), 4k (4096×4096) або 8k (8192×8192). Вища роздільна здатність захоплює більше деталей поверхні.

  • Name
    hd_texture
    Type
    boolean
    ⚠ застарілий
    за замовчуванням false
    Description

    Використовуйте замість цього texture_resolution — еквівалентно texture_resolution: "4k". Якщо встановлено обидва, пріоритет має texture_resolution.

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

    Видаляє відблиски та тіні з текстури базового кольору, забезпечуючи чистіший результат, який краще працює за користувацьких налаштувань освітлення.

  • Name
    target_formats
    Type
    string[]
    Description

    Визначає, які формати 3D-файлів включити у результат. Будуть згенеровані та повернуті лише запитані формати, що може скоротити час виконання задачі. Якщо не вказано, включаються всі підтримувані формати.

    Доступні значення: glb, obj, fbx, stl, usdz, 3mf

  • Name
    alpha_thumbnail
    Type
    boolean
    за замовчуванням false
    Description

    Якщо встановлено true, задача додатково рендерить версію попереднього перегляду з прозорим фоном (RGBA) та повертає її як alpha_thumbnail_url у відповіді GET. Наявне поле thumbnail_url залишається без змін.

Результати

Властивість result відповіді містить id задачі новоствореної задачі Retexture.

Режими відмови

  • Name
    400 - Bad Request
    Description

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

    • Відсутній параметр: Повинен бути наданий або model_url, або input_task_id.
    • Відсутній стиль: Повинен бути наданий один з text_style_prompt, image_style_url або multiview_image_urls.
    • Конфліктні вхідні дані стилю: multiview_image_urls не можна комбінувати з text_style_prompt або image_style_url.
    • Непідтримувана модель для мультивиду: multiview_image_urls вимагає явного ai_model: "meshy-7".
    • Модель недоступна: ai_model: "meshy-7" та ai_model: "meshy-6-lite" впроваджуються поступово і можуть ще не бути увімкнені для вашого облікового запису.
    • Недійсна вхідна задача: input_task_id повинен посилатися на успішну задачу від підтримуваної моделі.
    • Недійсний формат моделі: model_url вказує на файл із непідтримуваним розширенням.
    • Недоступний URL: model_url, image_style_url або елемент multiview_image_urls не вдалося завантажити.
  • Name
    401 - Unauthorized
    Description

    Помилка автентифікації. Будь ласка, перевірте свій API-ключ.

  • Name
    402 - Payment Required
    Description

    Недостатньо кредитів для виконання цієї задачі.

  • Name
    429 - Too Many Requests
    Description

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

Request

POST
/openapi/v1/retexture
# Retexture with text prompt
curl https://api.meshy.ai/openapi/v1/retexture \
  -H "Authorization: Bearer ${YOUR_API_KEY}" \
  -H 'Content-Type: application/json' \
  -d '{
    "model_url": "https://cdn.meshy.ai/model/example_model_2.glb",
    "text_style_prompt": "red fangs, Samurai outfit that fused with japanese batik style",
    "enable_original_uv": true,
    "enable_pbr": true
  }'

# Retexture with image style and PBR
curl https://api.meshy.ai/openapi/v1/retexture \
  -H "Authorization: Bearer ${YOUR_API_KEY}" \
  -H 'Content-Type: application/json' \
  -d '{
    "model_url": "https://cdn.meshy.ai/model/example_model_2.glb",
    "image_style_url": "https://cdn.meshy.ai/image/example_image.jpg",
    "ai_model": "latest",
    "enable_pbr": true,
    "enable_original_uv": true
  }'

Response

{
  "result": "018a210d-8ba4-705c-b111-1f1776f7f578"
}

GET/openapi/v1/retexture/:id

Отримати завдання Ретекстурування

Ця кінцева точка дозволяє отримати завдання Ретекстурування за дійсним id завдання. Зверніться до розділу Об'єкт завдання Ретекстурування, щоб дізнатися, які властивості включені до об'єкта завдання Ретекстурування.

Параметри

  • Name
    id
    Type
    path
    Description

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

Повертає

Відповідь містить об'єкт завдання Ретекстурування. Перевірте розділ Об'єкт завдання Ретекстурування для деталей.

Request

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

Response

{
  "id": "018a210d-8ba4-705c-b111-1f1776f7f578",
  "type": "retexture",
  "model_urls": {
    "glb": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/model.glb?Expires=***",
    "fbx": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/model.fbx?Expires=***",
    "obj": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/model.obj?Expires=***",
    "usdz": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/model.usdz?Expires=***",
    "mtl": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/model.mtl?Expires=***",
    "stl": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/model.stl?Expires=***"
  },
  "thumbnail_url": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/preview.png?Expires=***",
  "text_style_prompt": "red fangs, Samurai outfit that fused with japanese batik style",
  "texture_image_url": "",
  "progress": 100,
  "started_at": 1692771667037,
  "created_at": 1692771650657,
  "expires_at": 1692771679037,
  "finished_at": 1692771669037,
  "status": "SUCCEEDED",
  "texture_urls": [
    {
      "base_color": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/texture_0.png?Expires=***",
      "metallic": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/texture_0_metallic.png?Expires=XXX",
      "normal": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/texture_0_normal.png?Expires=XXX",
      "roughness": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/texture_0_roughness.png?Expires=XXX",
      "emission": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/texture_0_emission.png?Expires=XXX"
    }
  ],
  "task_error": {

    "message": ""

  },

  "consumed_credits": 10
}

DELETE/openapi/v1/retexture/:id

Видалити завдання ретекстурування

Ця кінцева точка остаточно видаляє завдання ретекстурування, включно з усіма пов'язаними моделями та даними. Ця дія незворотна.

Параметри шляху

  • Name
    id
    Type
    path
    Description

    Ідентифікатор завдання ретекстурування, яке потрібно видалити.

Статус завдання

Завдання, яке ще перебуває в статусі PENDING, видаляється, а кредити, витрачені на момент створення, повертаються.

Завдання, яке вже перебуває в статусі IN_PROGRESS, видалити неможливо: запит відхиляється з кодом 409 Conflict, а завдання продовжує виконуватися. Кредити за завдання, яке воркер вже почав виконувати, не підлягають поверненню, тому видалення його під час виконання коштувало б вам і кредитів, і результату. Дочекайтеся, поки воно досягне статусу SUCCEEDED, FAILED або CANCELED, а потім видаліть його.

Завдання у кінцевому стані (SUCCEEDED, FAILED або CANCELED) видаляється без повернення коштів.

Повертає

Повертає 200 OK у разі успіху або 409 Conflict, якщо завдання перебуває в статусі IN_PROGRESS.

Request

DELETE
/openapi/v1/retexture/a43b5c6d-7e8f-901a-234b-567c890d1e2f
curl --request DELETE \
  --url https://api.meshy.ai/openapi/v1/retexture/a43b5c6d-7e8f-901a-234b-567c890d1e2f \
  -H "Authorization: Bearer ${YOUR_API_KEY}"

Response

// 200 OK on success, with an empty body.
//
// 409 Conflict when the task is IN_PROGRESS — the task is left running:
{
  "message": "Task is IN_PROGRESS and cannot be deleted. Credits for a task the worker has already started are not refundable; wait for it to reach SUCCEEDED, FAILED or CANCELED, then delete it."
}

GET/openapi/v1/retexture

Список завдань ретекстурування

Ця кінцева точка дозволяє отримати список завдань Ретекстурування.

Параметри

  • Name
    page_num
    Type
    integer
    за замовчуванням 1
    Description

    Номер сторінки для пагінації.

  • Name
    page_size
    Type
    integer
    за замовчуванням 10
    Description

    Обмеження розміру сторінки. Максимально допустиме значення — 100 елементів.

  • Name
    sort_by
    Type
    string
    Description

    Поле для сортування.

    Доступні значення:

    • +created_at: Сортувати за часом створення в порядку зростання.
    • -created_at: Сортувати за часом створення в порядку спадання.

Повертає

Повертає пагінований список Об'єктів завдання Ретекстурування.

Request

GET
/openapi/v1/retexture
curl https://api.meshy.ai/openapi/v1/retexture?page_size=10 \
-H "Authorization: Bearer ${YOUR_API_KEY}"

Response

[
  {
    "id": "018a210d-8ba4-705c-b111-1f1776f7f578",
    "type": "retexture",
    "model_urls": {
      "glb": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/model.glb?Expires=***",
      "fbx": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/model.fbx?Expires=***",
      "usdz": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/model.usdz?Expires=***"
    },
    "thumbnail_url": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/preview.png?Expires=***",
    "text_style_prompt": "red fangs, Samurai outfit that fused with japanese batik style",
    "progress": 100,
    "started_at": 1692771667037,
    "created_at": 1692771650657,
    "expires_at": 1692771679037,
    "finished_at": 1692771669037,
    "status": "SUCCEEDED",
    "texture_urls": [
      {
        "base_color": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/texture_0.png?Expires=***",
        "metallic": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/texture_0_metallic.png?Expires=XXX",
        "normal": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/texture_0_normal.png?Expires=XXX",
        "roughness": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/texture_0_roughness.png?Expires=XXX",
        "emission": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/texture_0_emission.png?Expires=XXX"
      }
    ],
    "preceding_tasks": 0,
    "task_error": {

      "message": ""

    },

    "consumed_credits": 10
  }
]

GET/openapi/v1/retexture/:id/stream

Стрімінг завдання Ретекстурування

Ця кінцева точка транслює оновлення в реальному часі для завдання Ретекстурування за допомогою Server-Sent Events (SSE).

Параметри

  • Name
    id
    Type
    path
    Description

    Унікальний ідентифікатор завдання Ретекстурування для стрімінгу.

Повертає

Повертає потік Об'єктів завдання Ретекстурування у вигляді Server-Sent Events.

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

Request

GET
/openapi/v1/retexture/018a210d-8ba4-705c-b111-1f1776f7f578/stream
curl -N https://api.meshy.ai/openapi/v1/retexture/018a210d-8ba4-705c-b111-1f1776f7f578/stream \
-H "Authorization: Bearer ${YOUR_API_KEY}"

Response Stream

// Error event example
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": "018a210d-8ba4-705c-b111-1f1776f7f578",
  "progress": 0,
  "status": "PENDING"
}

event: message
data: {
  "id": "018a210d-8ba4-705c-b111-1f1776f7f578",
  "progress": 50,
  "status": "IN_PROGRESS"
}

event: message
data: {
  "id": "018a210d-8ba4-705c-b111-1f1776f7f578",
  "type": "retexture",
  "progress": 100,
  "status": "SUCCEEDED",
  "created_at": 1692771650657,
  "started_at": 1692771667037,
  "finished_at": 1692771669037,
  "model_urls": {
    "glb": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/model.glb?Expires=***",
    "fbx": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/model.fbx?Expires=***",
    "obj": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/model.obj?Expires=***",
    "usdz": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/model.usdz?Expires=***",
    "mtl": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/model.mtl?Expires=***",
    "stl": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/model.stl?Expires=***"
  },
  "texture_urls": [
    {
      "base_color": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/texture_0.png?Expires=***",
      "metallic": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/texture_0_metallic.png?Expires=XXX",
      "normal": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/texture_0_normal.png?Expires=XXX",
      "roughness": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/texture_0_roughness.png?Expires=XXX",
      "emission": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/texture_0_emission.png?Expires=XXX"
    }
  ],
  "preceding_tasks": 0,
  "task_error": {

    "message": ""

  },

  "consumed_credits": 10
}

Об'єкт задачі Ретекстурування

Об'єкт задачі Ретекстурування — це одиниця роботи, яку Meshy використовує для генерації 3D текстури з текстових або графічних вхідних даних. Модель має наступні властивості:

Властивості

  • Name
    id
    Type
    string
    Description

    Унікальний ідентифікатор задачі. Хоча ми використовуємо k-сортований UUID для ідентифікаторів задач як деталь реалізації, вам не слід робити жодних припущень щодо формату id.

  • Name
    type
    Type
    string
    Description

    Тип задачі Ретекстурування. Значення — retexture.

  • Name
    model_urls
    Type
    object
    Description

    URL-адреса для завантаження текстурованого файлу 3D моделі, згенерованого Meshy.

    • Name
      glb
      Type
      string
      Description

      URL-адреса для завантаження файлу GLB.

    • Name
      fbx
      Type
      string
      Description

      URL-адреса для завантаження файлу FBX.

    • Name
      obj
      Type
      string
      Description

      URL-адреса для завантаження файлу OBJ.

    • Name
      usdz
      Type
      string
      Description

      URL-адреса для завантаження файлу USDZ.

    • Name
      mtl
      Type
      string
      Description

      URL-адреса для завантаження файлу MTL, що повертається разом з експортом OBJ, коли присутні текстури.

    • Name
      stl
      Type
      string
      Description

      URL-адреса для завантаження файлу STL.

    • Name
      3mf
      Type
      string
      Description

      URL-адреса для завантаження файлу 3MF. Присутня лише коли 3mf було запитано через target_formats.

  • Name
    text_style_prompt
    Type
    string
    Description

    Це текстовий prompt, який був використаний для створення задачі текстурування.

  • Name
    image_style_url
    Type
    string
    Description

    Це графічні вхідні дані, які були використані для створення задачі текстурування.

  • Name
    multiview_image_urls
    Type
    string[]
    Description

    URL-адреси для завантаження референсних зображень Мультивид, які були використані для створення задачі текстурування. Присутні лише коли задача була створена з multiview_image_urls.

  • Name
    thumbnail_url
    Type
    string
    Description

    URL-адреса для завантаження мініатюри файлу моделі.

  • Name
    alpha_thumbnail_url
    Type
    string
    Description

    URL-адреса для завантаження версії thumbnail_url з прозорим фоном (RGBA). Присутня лише коли задача була створена з alpha_thumbnail: true і прозорий попередній перегляд було успішно відрендерено; в іншому випадку це поле відсутнє.

  • Name
    progress
    Type
    integer
    Description

    Прогрес виконання задачі. Якщо задача ще не розпочалася, ця властивість дорівнюватиме 0. Щойно задача завершиться успішно, вона стане 100.

  • Name
    started_at
    Type
    timestamp
    Description

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

  • Name
    created_at
    Type
    timestamp
    Description

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

  • Name
    expires_at
    Type
    timestamp
    Description

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

  • Name
    finished_at
    Type
    timestamp
    Description

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

  • Name
    status
    Type
    string
    Description

    Статус задачі. Можливі значення: PENDING, IN_PROGRESS, SUCCEEDED, FAILED, CANCELED.

  • Name
    texture_urls
    Type
    array
    Description

    Масив об'єктів URL-адрес текстур, згенерованих з задачі. Зазвичай це містить лише один об'єкт URL-адреси текстури. Кожна URL-адреса текстури має наступні властивості:

    • Name
      base_color
      Type
      string
      Description

      URL-адреса для завантаження зображення карти базового кольору.

    • Name
      metallic
      Type
      string
      Description

      URL-адреса для завантаження зображення карти металевості.

    • Name
      normal
      Type
      string
      Description

      URL-адреса для завантаження зображення карти нормалей.

    • Name
      roughness
      Type
      string
      Description

      URL-адреса для завантаження зображення карти шорсткості.

    • Name
      emission
      Type
      string
      Description

      URL-адреса для завантаження зображення карти випромінювання.

  • 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 (кредити повертаються у разі невдачі).

Example Retexture Task Model

{
  "id": "018a210d-8ba4-705c-b111-1f1776f7f578",
  "type": "retexture",
  "model_urls": {
    "glb": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/model.glb?Expires=***",
    "fbx": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/model.fbx?Expires=***",
    "usdz": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/model.usdz?Expires=***"
  },
  "text_style_prompt": "red fangs, Samurai outfit that fused with japanese batik style",
  "image_style_url": "https://assets.meshy.ai/***/image/example_image.jpg?Expires=***",
  "thumbnail_url": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/preview.png?Expires=***",
  "progress": 100,
  "started_at": 1692771667037,
  "created_at": 1692771650657,
  "expires_at": 1692771679037,
  "finished_at": 1692771669037,
  "status": "SUCCEEDED",
  "texture_urls": [
    {
      "base_color": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/texture_0.png?Expires=***",
      "metallic": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/texture_0_metallic.png?Expires=XXX",
      "normal": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/texture_0_normal.png?Expires=XXX",
      "roughness": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/texture_0_roughness.png?Expires=XXX",
      "emission": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/texture_0_emission.png?Expires=XXX"
    }
  ],
  "preceding_tasks": 0,
  "task_error": {

    "message": ""

  },

  "consumed_credits": 10
}