Creative Lab — Vinyl Figure API

Превратите исходную фотографию в виниловую коллекционную 3D-фигурку с большой головой в два этапа: prototype создаёт стилизованное концептуальное изображение на основе вашего исходного фото, а затем build превращает это концептуальное изображение в текстурированную 3D-модель. Оба этапа связаны через input_task_id.

  • POST /openapi/creative-lab/vinyl-figure/v1/prototype
  • POST /openapi/creative-lab/vinyl-figure/v1/build

POST/openapi/creative-lab/vinyl-figure/v1/prototype

Создание задачи прототипа фигурки в виниле

Сгенерируйте одно концептуальное изображение в стиле виниловой фигурки на основе исходного фото. Возвращённый 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
    remove_background
    Type
    boolean
    по умолчанию false
    Description

    Если установлено значение true, изображение прототипа возвращается в виде прозрачного PNG в формате RGBA с удалённым фоном, что позволяет разместить объект на любом фоне.

Возвращаемое значение

Свойство 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 некорректна.
    • Контент помечен: исходное изображение было помечено при moderation на предмет NSFW-контента или нарушения прав интеллектуальной собственности.
  • Name
    401 - Unauthorized
    Description

    Ошибка аутентификации. Проверьте свой API-ключ.

  • Name
    402 - Payment Required
    Description

    Недостаточно кредитов для выполнения этой задачи.

  • Name
    429 - Too Many Requests
    Description

    Превышено ограничение частоты запросов.

Request

POST
/openapi/creative-lab/vinyl-figure/v1/prototype
# Stage 1: generate a vinyl-figure-style concept image
curl https://api.meshy.ai/openapi/creative-lab/vinyl-figure/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": "019c8a2e-4b7d-7c3a-8d21-3f2987a1c4de"
}
Пример прототипа
Начните с исходного фото, затем сгенерируйте изображение прототипа, используемое на этапе сборки.
Исходное фото, используемое как входные данные для Creative Lab Vinyl Figure
Входные данные прототипа
Изображение прототипа виниловой фигурки с большой головой, сгенерированное из исходного фото
Результат прототипа

POST/openapi/creative-lab/vinyl-figure/v1/build

Создание задачи сборки виниловой фигурки

Создайте финальную текстурированную 3D-виниловую фигурку из успешно завершённой задачи-прототипа. Сборка выполняется по тому же конвейеру «изображение в 3D», что и Изображение в 3D, поэтому формат объекта ответа и список URL-адресов выходных файлов полностью совпадают. Форму ответа см. в разделе Объект задачи сборки виниловой фигурки.

Параметры

  • Name
    input_task_id
    Type
    string
    Обязательный
    Description

    ID задачи-прототипа, созданной через этот же эндпоинт OpenAPI. Прототип должен быть создан с тем же API-ключом, должен достичь статуса SUCCEEDED и должен был произвести ровно одно изображение-кандидат.

    Задачи-прототипы, созданные через веб-приложение, не принимаются — эндпоинт сборки принимает только задачи-прототипы, созданные через POST /openapi/creative-lab/vinyl-figure/v1/prototype, и отклоняет любой другой источник с кодом 404.

  • Name
    name
    Type
    string
    Description

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

Возвращаемые данные

Свойство result в ответе содержит id задачи только что созданной задачи сборки виниловой фигурки. Опрашивайте эндпоинт Получение задачи или подпишитесь на поток, пока задача не достигнет статуса SUCCEEDED, а затем загрузите текстурированный GLB из model_urls.glb (или пару OBJ + MTL из model_urls.obj и model_urls.mtl, если ваш последующий конвейер обработки предпочитает OBJ).

Режимы сбоев

  • Name
    400 - Bad Request
    Description

    Запрос был некорректен. Распространённые причины:

    • Отсутствует параметр: требуется input_task_id.
    • Недопустимый UUID: input_task_id не является допустимым UUID.
    • Родительская задача не завершена успешно: указанная задача-прототип ещё не достигла статуса SUCCEEDED.
    • Нет кандидата: задача-прототип завершилась успешно, но не создала изображение-кандидат.
  • Name
    401 - Unauthorized
    Description

    Ошибка аутентификации. Пожалуйста, проверьте ваш API-ключ.

  • Name
    402 - Payment Required
    Description

    Недостаточно кредитов для выполнения этой задачи.

  • Name
    404 - Not Found
    Description

    Указанная задача-прототип не существует, принадлежит другому пользователю или была создана через веб-приложение (в сборку могут переходить только задачи-прототипы, созданные в режиме API).

  • Name
    429 - Too Many Requests
    Description

    Вы превысили ограничение частоты запросов.

Request

POST
/openapi/creative-lab/vinyl-figure/v1/build
# Stage 2: chain build off a succeeded prototype task
curl https://api.meshy.ai/openapi/creative-lab/vinyl-figure/v1/build \
  -X POST \
  -H "Authorization: Bearer ${YOUR_API_KEY}" \
  -H 'Content-Type: application/json' \
  -d '{
    "input_task_id": "019c8a2e-4b7d-7c3a-8d21-3f2987a1c4de"
  }'

Response

{
  "result": "019c8a31-6e2f-7b4d-9a55-4c3098b2d5ef"
}

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

Получить задачу винилового фигурки

Получите задачу прототипа или сборки по действительному id задачи. Путь URL должен соответствовать этапу задачи — если задача сборки запрашивается через /prototype/:id, возвращается 404, и наоборот.

Обратитесь к разделам Объект задачи прототипа виниловой фигурки и Объект задачи сборки виниловой фигурки для ознакомления с форматом ответа.

Параметры

  • Name
    id
    Type
    path
    Description

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

Возвращает

Ответ содержит объект задачи виниловой фигурки. Формат зависит от того, какой этап был запрошен.

Request

GET
/openapi/creative-lab/vinyl-figure/v1/prototype/019c8a2e-4b7d-7c3a-8d21-3f2987a1c4de
# Prototype
curl https://api.meshy.ai/openapi/creative-lab/vinyl-figure/v1/prototype/019c8a2e-4b7d-7c3a-8d21-3f2987a1c4de \
  -H "Authorization: Bearer ${YOUR_API_KEY}"

# Build
curl https://api.meshy.ai/openapi/creative-lab/vinyl-figure/v1/build/019c8a31-6e2f-7b4d-9a55-4c3098b2d5ef \
  -H "Authorization: Bearer ${YOUR_API_KEY}"

Prototype Response

{
  "id": "019c8a2e-4b7d-7c3a-8d21-3f2987a1c4de",
  "type": "creative-lab-vinyl-figure-prototype",
  "name": "",
  "status": "SUCCEEDED",
  "progress": 100,
  "created_at": 1752969600000,
  "started_at": 1752969604000,
  "finished_at": 1752969630000,
  "expires_at": 1753228830000,
  "preceding_tasks": 0,
  "task_error": null,
  "consumed_credits": 6,
  "image_urls": [
    "https://assets.meshy.ai/***/concept.png?Expires=***"
  ]
}

Build Response

{
  "id": "019c8a31-6e2f-7b4d-9a55-4c3098b2d5ef",
  "type": "creative-lab-vinyl-figure-build",
  "name": "",
  "status": "SUCCEEDED",
  "progress": 100,
  "created_at": 1752969700000,
  "started_at": 1752969710000,
  "finished_at": 1752969735000,
  "expires_at": 1753228935000,
  "preceding_tasks": 0,
  "task_error": null,
  "consumed_credits": 30,
  "prompt": "",
  "negative_prompt": "",
  "texture_prompt": "",
  "texture_image_url": "",
  "model_urls": {
    "glb": "https://assets.meshy.ai/***/tasks/019c8a31-6e2f-7b4d-9a55-4c3098b2d5ef/output/model.glb?Expires=***",
    "obj": "https://assets.meshy.ai/***/tasks/019c8a31-6e2f-7b4d-9a55-4c3098b2d5ef/output/model.obj?Expires=***",
    "mtl": "https://assets.meshy.ai/***/tasks/019c8a31-6e2f-7b4d-9a55-4c3098b2d5ef/output/model.mtl?Expires=***"
  },
  "thumbnail_url": "https://assets.meshy.ai/***/tasks/019c8a31-6e2f-7b4d-9a55-4c3098b2d5ef/output/preview.png?Expires=***",
  "texture_urls": [
    {
      "base_color": "https://assets.meshy.ai/***/tasks/019c8a31-6e2f-7b4d-9a55-4c3098b2d5ef/output/texture_0.png?Expires=***"
    }
  ]
}

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

Delete a Vinyl Figure Task

Отменить задачу создания фигурки. Если задача ещё находится в состоянии 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/vinyl-figure/v1/prototype/019c8a2e-4b7d-7c3a-8d21-3f2987a1c4de
curl --request DELETE \
  --url https://api.meshy.ai/openapi/creative-lab/vinyl-figure/v1/prototype/019c8a2e-4b7d-7c3a-8d21-3f2987a1c4de \
  -H "Authorization: Bearer ${YOUR_API_KEY}"

Response

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

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

Стрим задачи виниловой фигурки

Транслирует обновления задачи виниловой фигурки в реальном времени через Server-Sent Events (SSE). Путь URL должен соответствовать этапу задачи — открытие потока по пути /prototype/:buildId/stream приводит к отправке единственного события event: error с полезной нагрузкой status_code: 404, после чего поток закрывается.

Параметры

  • Name
    id
    Type
    path
    Description

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

Возвращает

Возвращает поток объектов задач Vinyl Figure Prototype или Vinyl Figure Build в виде Server-Sent Events. Каждый кадр содержит полный объект задачи для данного этапа — в том же формате, который возвращает эндпоинт Get — поэтому пока задача находится в состоянии PENDING или IN_PROGRESS, выходные поля просто ещё не заполнены (null, [] или {}), а finished_at равно null.

Request

GET
/openapi/creative-lab/vinyl-figure/v1/build/019c8a31-6e2f-7b4d-9a55-4c3098b2d5ef/stream
curl -N https://api.meshy.ai/openapi/creative-lab/vinyl-figure/v1/build/019c8a31-6e2f-7b4d-9a55-4c3098b2d5ef/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.
// 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: message
data: {
  "id": "019c8a31-6e2f-7b4d-9a55-4c3098b2d5ef",
  "progress": 0,
  "status": "PENDING"
}

event: message
data: {
  "id": "019c8a31-6e2f-7b4d-9a55-4c3098b2d5ef",
  "type": "creative-lab-vinyl-figure-build",
  "status": "SUCCEEDED",
  "progress": 100,
  "created_at": 1752969700000,
  "started_at": 1752969710000,
  "finished_at": 1752969735000,
  "expires_at": 1753228935000,
  "task_error": null,
  "consumed_credits": 30,
  "prompt": "",
  "negative_prompt": "",
  "texture_prompt": "",
  "texture_image_url": "",
  "model_urls": {
    "glb": "https://assets.meshy.ai/***/tasks/019c8a31-6e2f-7b4d-9a55-4c3098b2d5ef/output/model.glb?Expires=***",
    "obj": "https://assets.meshy.ai/***/tasks/019c8a31-6e2f-7b4d-9a55-4c3098b2d5ef/output/model.obj?Expires=***",
    "mtl": "https://assets.meshy.ai/***/tasks/019c8a31-6e2f-7b4d-9a55-4c3098b2d5ef/output/model.mtl?Expires=***"
  },
  "thumbnail_url": "https://assets.meshy.ai/***/tasks/019c8a31-6e2f-7b4d-9a55-4c3098b2d5ef/output/preview.png?Expires=***",
  "texture_urls": [
    {
      "base_color": "https://assets.meshy.ai/***/tasks/019c8a31-6e2f-7b4d-9a55-4c3098b2d5ef/output/texture_0.png?Expires=***"
    }
  ]
}

GET/openapi/creative-lab/vinyl-figure/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

    Ограничение размера страницы. Максимально допустимое значение — 100 элементов.

  • Name
    sort_by
    Type
    string
    по умолчанию -created_at
    Description

    Поле для сортировки. Доступные значения:

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

Возвращает

Возвращает постраничный список объектов задачи для соответствующего этапа — либо объект задачи прототипа фигурки в стиле виниловых игрушек при запросе списка /prototype, либо объект задачи сборки фигурки в стиле виниловых игрушек при запросе списка /build.

Request

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

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

Response (List Prototype Tasks)

[
  {
    "id": "019c8a2e-4b7d-7c3a-8d21-3f2987a1c4de",
    "type": "creative-lab-vinyl-figure-prototype",
    "name": "",
    "status": "SUCCEEDED",
    "progress": 100,
    "created_at": 1752969600000,
    "started_at": 1752969604000,
    "finished_at": 1752969630000,
    "expires_at": 1753228830000,
    "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-sortable UUID для идентификаторов задач, вам не следует делать какие-либо предположения о формате id.

  • Name
    type
    Type
    string
    Description

    Тип задачи. Значение — creative-lab-vinyl-figure-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

    Ссылки для загрузки вариантов концептуального изображения, сгенерированных этой задачей прототипа. В настоящее время API всегда возвращает ровно один вариант; поле представлено массивом, чтобы в будущих версиях можно было предоставлять несколько вариантов без обратной несовместимости.

Example Vinyl Figure Prototype Task Object

{
  "id": "019c8a2e-4b7d-7c3a-8d21-3f2987a1c4de",
  "type": "creative-lab-vinyl-figure-prototype",
  "name": "",
  "status": "SUCCEEDED",
  "progress": 100,
  "created_at": 1752969600000,
  "started_at": 1752969604000,
  "finished_at": 1752969630000,
  "expires_at": 1753228830000,
  "preceding_tasks": 0,
  "task_error": null,
  "consumed_credits": 6,
  "image_urls": [
    "https://assets.meshy.ai/***/concept.png?Expires=***"
  ]
}

Объект Vinyl Figure Build Task

Объект Vinyl Figure Build Task — это единица работы, которую Meshy отслеживает для генерации текстурированной 3D-фигурки в стиле винила из успешно выполненной задачи прототипа. Он использует тот же конвейер преобразования изображения в 3D, что и Изображение в 3D, поэтому выходные поля повторяют объект задачи этого эндпоинта.

Свойства

  • Name
    id
    Type
    string
    Description

    Уникальный идентификатор задачи.

  • Name
    type
    Type
    string
    Description

    Тип задачи. Значение — creative-lab-vinyl-figure-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
    prompt
    Type
    string
    Description

    Всегда пусто для vinyl figure build. Присутствует для совместимости между эндпоинтами с общей структурой V2ImageTo3DTaskResponse, используемой в Изображение в 3D.

  • Name
    negative_prompt
    Type
    string
    Description

    Всегда пусто для vinyl figure build. Присутствует для совместимости между эндпоинтами.

  • Name
    texture_prompt
    Type
    string
    Description

    Всегда пусто для vinyl figure build. Присутствует для совместимости между эндпоинтами.

  • Name
    texture_image_url
    Type
    string
    Description

    Всегда пусто для vinyl figure build. Присутствует для совместимости между эндпоинтами.

  • Name
    model_urls
    Type
    object
    Description

    Ссылки для скачивания сгенерированной 3D-модели. Vinyl figure build выдаёт текстурированный GLB, а также пару OBJ + MTL для конвейеров, предпочитающих формат Wavefront OBJ. Структура поля соответствует объекту model_urls из Изображение в 3D, поэтому добавление новых форматов в будущем не приведёт к обратной несовместимости.

    • Name
      glb
      Type
      string
      Description

      Ссылка для скачивания текстурированного файла GLB.

    • Name
      obj
      Type
      string
      Description

      Ссылка для скачивания файла Wavefront OBJ (геометрия + UV).

    • Name
      mtl
      Type
      string
      Description

      Ссылка для скачивания сопутствующего файла материала MTL для OBJ. Используйте вместе с obj и записью из texture_urls[0].base_color.

  • Name
    thumbnail_url
    Type
    string
    Description

    Ссылка для скачивания миниатюры файла модели.

  • Name
    texture_urls
    Type
    array
    Description

    Массив объектов ссылок на текстуры, сгенерированных этой задачей. В настоящее время содержит один объект с картой базового цвета.

    • Name
      base_color
      Type
      string
      Description

      Ссылка для скачивания изображения карты базового цвета.

Example Vinyl Figure Build Task Object

{
  "id": "019c8a31-6e2f-7b4d-9a55-4c3098b2d5ef",
  "type": "creative-lab-vinyl-figure-build",
  "name": "",
  "status": "SUCCEEDED",
  "progress": 100,
  "created_at": 1752969700000,
  "started_at": 1752969710000,
  "finished_at": 1752969735000,
  "expires_at": 1753228935000,
  "preceding_tasks": 0,
  "task_error": null,
  "consumed_credits": 30,
  "prompt": "",
  "negative_prompt": "",
  "texture_prompt": "",
  "texture_image_url": "",
  "model_urls": {
    "glb": "https://assets.meshy.ai/***/tasks/019c8a31-6e2f-7b4d-9a55-4c3098b2d5ef/output/model.glb?Expires=***",
    "obj": "https://assets.meshy.ai/***/tasks/019c8a31-6e2f-7b4d-9a55-4c3098b2d5ef/output/model.obj?Expires=***",
    "mtl": "https://assets.meshy.ai/***/tasks/019c8a31-6e2f-7b4d-9a55-4c3098b2d5ef/output/model.mtl?Expires=***"
  },
  "thumbnail_url": "https://assets.meshy.ai/***/tasks/019c8a31-6e2f-7b4d-9a55-4c3098b2d5ef/output/preview.png?Expires=***",
  "texture_urls": [
    {
      "base_color": "https://assets.meshy.ai/***/tasks/019c8a31-6e2f-7b4d-9a55-4c3098b2d5ef/output/texture_0.png?Expires=***"
    }
  ]
}