Creative Lab — API Figur

Ubah foto sumber menjadi figur koleksi 3D bergaya chibi dalam dua tahap: prototipe menghasilkan gambar konsep bergaya dari foto input Anda, lalu build mengubah gambar konsep tersebut menjadi model 3D yang bertekstur. Kedua tahap ini dihubungkan melalui input_task_id.

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

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

Membuat Figure Prototype Task

Menghasilkan satu gambar konsep bergaya chibi dari foto sumber. ID task yang dikembalikan adalah yang Anda kirimkan sebagai input_task_id ke endpoint build. Lihat The Figure Prototype Task Object untuk bentuk responsnya.

Parameter

  • Name
    image_url
    Type
    string
    Wajib
    Description

    Foto sumber yang akan distilisasi Meshy menjadi figure chibi. Kami saat ini mendukung format .jpg, .jpeg, .png, dan .webp.

    Ada dua cara untuk menyediakan gambar:

    • URL yang dapat diakses secara publik: URL yang dapat diakses dari internet publik.
    • Data URI: Data URI gambar yang dienkode base64. Contoh data URI: data:image/jpeg;base64,<data gambar terenkode base64 Anda>.
  • Name
    name
    Type
    string
    Description

    Nama task opsional untuk keperluan tampilan. Maksimum 100 karakter.

  • Name
    remove_background
    Type
    boolean
    default false
    Description

    Ketika diatur ke true, gambar prototipe dikembalikan sebagai PNG RGBA transparan dengan latar belakang dihapus, sehingga Anda dapat menggabungkan subjek ke latar belakang apa pun.

Returns

Properti result pada respons berisi id task dari figure prototype task yang baru dibuat. Poll endpoint Get a Task atau berlangganan stream hingga task mencapai status SUCCEEDED, kemudian kirimkan ID tersebut ke endpoint build sebagai input_task_id.

Failure Modes

  • Name
    400 - Bad Request
    Description

    Permintaan tidak dapat diterima. Penyebab umum:

    • Parameter tidak ada: image_url wajib diisi.
    • Format gambar tidak valid: image_url yang diberikan bukan format yang didukung (.jpg, .jpeg, .png, .webp).
    • Dimensi gambar di luar batas: Gambar terlalu kecil, melebihi ukuran file maksimum, atau melebihi jumlah piksel maksimum.
    • URL tidak dapat diakses: image_url tidak dapat diunduh (404 atau timeout).
    • Data URI tidak valid: String base64 tidak terbentuk dengan benar.
    • Konten ditandai: Gambar input ditandai oleh moderation NSFW atau kekayaan intelektual.
  • Name
    401 - Unauthorized
    Description

    Autentikasi gagal. Silakan periksa kunci API Anda.

  • Name
    402 - Payment Required
    Description

    Kredit tidak cukup untuk melakukan task ini.

  • Name
    429 - Too Many Requests
    Description

    Anda telah melampaui batas laju Anda.

Request

POST
/openapi/creative-lab/figure/v1/prototype
# Stage 1: generate a chibi-style concept image
curl https://api.meshy.ai/openapi/creative-lab/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": "018a210d-8ba4-705c-b111-1f1776f7f578"
}
Contoh prototipe
Mulai dengan potret sumber, lalu hasilkan gambar prototipe yang digunakan oleh tahap build.
Source portrait used as the Creative Lab Figure input
Input prototipe
Chibi-style figurine prototype image generated from the source photo
Output prototipe

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

Create a Figure Build Task

Menghasilkan figur 3D bertekstur akhir dari task prototipe yang berhasil. Proses build ini menjalankan pipeline image-to-3D yang sama seperti Gambar ke 3D, sehingga format objek respons dan daftar URL output cocok persis. Lihat The Figure Build Task Object untuk bentuk respons.

Parameter

  • Name
    input_task_id
    Type
    string
    Wajib
    Description

    ID task dari task prototipe yang dibuat melalui endpoint OpenAPI yang sama ini. Prototipe tersebut harus dibuat dengan kunci API yang sama, harus telah mencapai SUCCEEDED, dan harus telah menghasilkan tepat satu gambar kandidat.

    Task prototipe yang dibuat melalui webapp tidak diterima — endpoint build hanya menerima task prototipe yang dihasilkan oleh POST /openapi/creative-lab/figure/v1/prototype dan menolak sumber lain apa pun dengan 404.

  • Name
    name
    Type
    string
    Description

    Nama task opsional untuk keperluan tampilan. Maksimal 100 karakter.

Returns

Properti result dari respons berisi id task dari task build figur yang baru dibuat. Poll endpoint Get a Task atau berlangganan stream hingga task mencapai SUCCEEDED, lalu unduh GLB bertekstur dari model_urls.glb (atau pasangan OBJ + MTL dari model_urls.obj dan model_urls.mtl jika pipeline hilir Anda lebih menyukai OBJ).

Mode Kegagalan

  • Name
    400 - Bad Request
    Description

    Permintaan tidak dapat diterima. Penyebab umum:

    • Parameter hilang: input_task_id wajib diisi.
    • UUID tidak valid: input_task_id bukan UUID yang valid.
    • Induk belum berhasil: Task prototipe yang direferensikan belum mencapai SUCCEEDED.
    • Tidak ada kandidat: Task prototipe berhasil tetapi tidak menghasilkan gambar kandidat.
  • Name
    401 - Unauthorized
    Description

    Autentikasi gagal. Silakan periksa kunci API Anda.

  • Name
    402 - Payment Required
    Description

    Kredit tidak cukup untuk melakukan task ini.

  • Name
    404 - Not Found
    Description

    Task prototipe yang direferensikan tidak ada, milik pengguna lain, atau dibuat melalui webapp (hanya task prototipe mode API yang dapat dirangkai ke build).

  • Name
    429 - Too Many Requests
    Description

    Anda telah melampaui batas laju Anda.

Request

POST
/openapi/creative-lab/figure/v1/build
# Stage 2: chain build off a succeeded prototype task
curl https://api.meshy.ai/openapi/creative-lab/figure/v1/build \
  -X POST \
  -H "Authorization: Bearer ${YOUR_API_KEY}" \
  -H 'Content-Type: application/json' \
  -d '{
    "input_task_id": "018a210d-8ba4-705c-b111-1f1776f7f578"
  }'

Response

{
  "result": "019c320e-9a8f-7a1c-9c11-2a1876f8a9bb"
}
Contoh build
Task build mengubah gambar prototipe yang dipilih menjadi model 3D bertekstur yang dapat diunduh.
Pratinjau model build Creative Lab Figure
Pratinjau model build

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

Mengambil Tugas Figure

Mengambil tugas prototype atau build berdasarkan id tugas yang valid. Jalur URL harus sesuai dengan tahap tugas tersebut — tugas build yang diambil melalui /prototype/:id akan mengembalikan 404, dan begitu pula sebaliknya.

Lihat The Figure Prototype Task Object dan The Figure Build Task Object untuk bentuk responsnya.

Parameter

  • Name
    id
    Type
    path
    Description

    Pengenal unik untuk tugas figur yang akan diambil.

Returns

Respons berisi objek tugas figur. Bentuknya bergantung pada tahap mana yang diminta.

Request

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

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

Prototype Response

{
  "id": "018a210d-8ba4-705c-b111-1f1776f7f578",
  "type": "creative-lab-figure-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-figure-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,
  "prompt": "",
  "negative_prompt": "",
  "texture_prompt": "",
  "texture_image_url": "",
  "model_urls": {
    "glb": "https://assets.meshy.ai/***/tasks/019c320e-9a8f-7a1c-9c11-2a1876f8a9bb/output/model.glb?Expires=***",
    "obj": "https://assets.meshy.ai/***/tasks/019c320e-9a8f-7a1c-9c11-2a1876f8a9bb/output/model.obj?Expires=***",
    "mtl": "https://assets.meshy.ai/***/tasks/019c320e-9a8f-7a1c-9c11-2a1876f8a9bb/output/model.mtl?Expires=***"
  },
  "thumbnail_url": "https://assets.meshy.ai/***/tasks/019c320e-9a8f-7a1c-9c11-2a1876f8a9bb/output/preview.png?Expires=***",
  "texture_urls": [
    {
      "base_color": "https://assets.meshy.ai/***/tasks/019c320e-9a8f-7a1c-9c11-2a1876f8a9bb/output/texture_0.png?Expires=***"
    }
  ]
}

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

Hapus Tugas Figure

Batalkan tugas figur. Jika tugas masih PENDING, kredit yang digunakan saat pembuatan akan dikembalikan. Tugas yang sudah IN_PROGRESS dibatalkan tanpa pengembalian kredit (worker mungkin sudah menggunakan sumber daya). Tugas yang sudah mencapai status akhir (SUCCEEDED, FAILED, CANCELED) tidak dapat dibatalkan.

Jalur URL harus sesuai dengan tahap tugas — DELETE pada /prototype/:buildId akan mengembalikan 404.

Parameter Path

  • Name
    id
    Type
    path
    Description

    Pengidentifikasi unik untuk tugas figur yang akan dibatalkan.

Returns

Mengembalikan 204 No Content jika berhasil dengan body kosong.

Mode Kegagalan

  • Name
    400 - Bad Request
    Description

    Tugas sudah berada dalam status akhir dan tidak dapat dibatalkan.

  • Name
    404 - Not Found
    Description

    Tugas tidak ada, milik pengguna lain, atau tahapnya tidak sesuai dengan jalur URL.

Request

DELETE
/openapi/creative-lab/figure/v1/prototype/018a210d-8ba4-705c-b111-1f1776f7f578
curl --request DELETE \
  --url https://api.meshy.ai/openapi/creative-lab/figure/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/figure/v1/(prototype|build)/:id/stream

Stream a Figure Task

Streaming pembaruan secara real-time untuk sebuah figure task melalui Server-Sent Events (SSE). Path URL harus sesuai dengan tahap task tersebut — membuka stream di /prototype/:buildId/stream akan mengeluarkan satu event: error payload dengan status_code: 404 dan menutup stream tersebut.

Parameter

  • Name
    id
    Type
    path
    Description

    Pengenal unik untuk figure task yang akan di-stream.

Returns

Mengembalikan sebuah stream objek task Figure Prototype atau Figure Build sebagai Server-Sent Events. Setiap frame membawa objek task lengkap untuk tahap tersebut — bentuk yang sama seperti yang dikembalikan oleh endpoint Get — sehingga selama task berstatus PENDING atau IN_PROGRESS, field output belum terisi (null, [] atau {}) dan finished_at bernilai null.

Request

GET
/openapi/creative-lab/figure/v1/build/019c320e-9a8f-7a1c-9c11-2a1876f8a9bb/stream
curl -N https://api.meshy.ai/openapi/creative-lab/figure/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.
// 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": "019c320e-9a8f-7a1c-9c11-2a1876f8a9bb",
  "progress": 0,
  "status": "PENDING"
}

event: message
data: {
  "id": "019c320e-9a8f-7a1c-9c11-2a1876f8a9bb",
  "type": "creative-lab-figure-build",
  "status": "SUCCEEDED",
  "progress": 100,
  "created_at": 1729123500000,
  "started_at": 1729123510000,
  "finished_at": 1729123535000,
  "expires_at": 1729382735000,
  "task_error": null,
  "consumed_credits": 20,
  "prompt": "",
  "negative_prompt": "",
  "texture_prompt": "",
  "texture_image_url": "",
  "model_urls": {
    "glb": "https://assets.meshy.ai/***/tasks/019c320e-9a8f-7a1c-9c11-2a1876f8a9bb/output/model.glb?Expires=***",
    "obj": "https://assets.meshy.ai/***/tasks/019c320e-9a8f-7a1c-9c11-2a1876f8a9bb/output/model.obj?Expires=***",
    "mtl": "https://assets.meshy.ai/***/tasks/019c320e-9a8f-7a1c-9c11-2a1876f8a9bb/output/model.mtl?Expires=***"
  },
  "thumbnail_url": "https://assets.meshy.ai/***/tasks/019c320e-9a8f-7a1c-9c11-2a1876f8a9bb/output/preview.png?Expires=***",
  "texture_urls": [
    {
      "base_color": "https://assets.meshy.ai/***/tasks/019c320e-9a8f-7a1c-9c11-2a1876f8a9bb/output/texture_0.png?Expires=***"
    }
  ]
}

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

List Figure Tasks

Ambil daftar figure task Anda dengan paginasi untuk satu tahap. Path URL memilih tahap tersebut — /prototype mengembalikan task prototype; /build mengembalikan task build. Task dari tahap lainnya tidak disertakan dalam kedua respons tersebut.

Path Parameters

  • Name
    stage
    Type
    path
    Wajib
    Description

    Bisa berupa prototype atau build. Koleksi ini hanya mengembalikan task yang tahapnya sesuai dengan URL — mengambil /prototype tidak akan pernah mengembalikan task build, begitu pula sebaliknya.

Query Parameters

  • Name
    page_num
    Type
    integer
    default 1
    Description

    Nomor halaman untuk paginasi.

  • Name
    page_size
    Type
    integer
    default 10
    Description

    Batas ukuran halaman. Maksimum yang diizinkan adalah 100 item.

  • Name
    sort_by
    Type
    string
    default -created_at
    Description

    Kolom untuk pengurutan. Nilai yang tersedia:

    • +created_at: Urutkan berdasarkan waktu pembuatan secara menaik.
    • -created_at: Urutkan berdasarkan waktu pembuatan secara menurun.

Returns

Mengembalikan daftar berpaginasi dari objek task per tahap — baik objek figure prototype task saat menampilkan daftar /prototype maupun objek figure build task saat menampilkan daftar /build.

Request

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

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

Response (List Prototype Tasks)

[
  {
    "id": "018a210d-8ba4-705c-b111-1f1776f7f578",
    "type": "creative-lab-figure-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=***"
    ]
  }
]

The Figure Prototype Task Object

Objek Figure Prototype Task adalah unit kerja yang dilacak oleh Meshy untuk menghasilkan gambar konsep bergaya chibi dari foto sumber. Output dari tahap ini dirangkai ke tahap build melalui input_task_id.

Properties

  • Name
    id
    Type
    string
    Description

    Pengidentifikasi unik untuk task. Meskipun kami menggunakan k-sortable UUID untuk id task sebagai detail implementasi, Anda tidak boleh membuat asumsi apa pun tentang format id tersebut.

  • Name
    type
    Type
    string
    Description

    Tipe task. Nilainya adalah creative-lab-figure-prototype.

  • Name
    name
    Type
    string
    Description

    Nama task yang diberikan saat task dibuat. String kosong jika tidak ada nama yang diberikan.

  • Name
    status
    Type
    string
    Description

    Status task. Kemungkinan nilainya adalah salah satu dari PENDING, IN_PROGRESS, SUCCEEDED, FAILED, CANCELED.

  • Name
    progress
    Type
    integer
    Description

    Progress dari task. Jika task belum dimulai, properti ini akan bernilai 0. Setelah task berhasil, ini akan menjadi 100.

  • Name
    created_at
    Type
    timestamp
    Description

    Stempel waktu saat task dibuat, dalam milidetik.

  • Name
    started_at
    Type
    timestamp
    Description

    Stempel waktu saat task dimulai, dalam milidetik. Jika task belum dimulai, properti ini akan bernilai 0.

  • Name
    finished_at
    Type
    timestamp
    Description

    Stempel waktu saat task selesai, dalam milidetik. Jika task belum selesai, properti ini akan bernilai 0.

  • Name
    expires_at
    Type
    timestamp
    Description

    Stempel waktu saat hasil task kedaluwarsa, dalam milidetik.

  • Name
    preceding_tasks
    Type
    integer
    Description

    Jumlah task yang mendahului.

  • Name
    task_error
    Type
    object
    Description

    Detail kesalahan untuk task yang gagal. Lihat Kesalahan untuk referensi lengkap objek task_error.

  • Name
    consumed_credits
    Type
    integer
    Description

    Jumlah kredit yang digunakan oleh task ini. Muncul saat status task adalah PENDING, IN_PROGRESS, atau SUCCEEDED. Mengembalikan 0 untuk task FAILED (kredit dikembalikan jika gagal).

  • Name
    image_urls
    Type
    array of strings
    Description

    URL yang dapat diunduh untuk kandidat gambar konsep yang dihasilkan oleh task prototype ini. Saat ini API selalu mengembalikan tepat satu kandidat; kolom ini berupa array agar revisi mendatang dapat menampilkan beberapa kandidat tanpa perubahan yang bersifat breaking change.

Example Figure Prototype Task Object

{
  "id": "018a210d-8ba4-705c-b111-1f1776f7f578",
  "type": "creative-lab-figure-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=***"
  ]
}

Objek Figure Build Task

Objek Figure Build Task adalah unit kerja yang dilacak oleh Meshy untuk menghasilkan figur 3D bertekstur dari sebuah prototype task yang berhasil. Ia menjalankan pipeline image-to-3D yang sama dengan yang digunakan oleh Image to 3D, sehingga field output-nya mencerminkan task object dari endpoint tersebut.

Properties

  • Name
    id
    Type
    string
    Description

    Pengidentifikasi unik untuk task.

  • Name
    type
    Type
    string
    Description

    Tipe dari task. Nilainya adalah creative-lab-figure-build.

  • Name
    name
    Type
    string
    Description

    Nama task yang diberikan saat task dibuat. String kosong jika tidak ada nama yang diberikan.

  • Name
    status
    Type
    string
    Description

    Status dari task. Nilai yang mungkin adalah salah satu dari PENDING, IN_PROGRESS, SUCCEEDED, FAILED, CANCELED.

  • Name
    progress
    Type
    integer
    Description

    Progress dari task. Jika task belum dimulai, properti ini akan bernilai 0. Setelah task berhasil, ini akan menjadi 100.

  • Name
    created_at
    Type
    timestamp
    Description

    Stempel waktu saat task dibuat, dalam milidetik.

  • Name
    started_at
    Type
    timestamp
    Description

    Stempel waktu saat task dimulai, dalam milidetik.

  • Name
    finished_at
    Type
    timestamp
    Description

    Stempel waktu saat task diselesaikan, dalam milidetik.

  • Name
    expires_at
    Type
    timestamp
    Description

    Stempel waktu saat hasil task berakhir masa berlakunya, dalam milidetik.

  • Name
    preceding_tasks
    Type
    integer
    Description

    Jumlah task yang mendahului. Hanya bermakna ketika status adalah PENDING.

  • Name
    task_error
    Type
    object
    Description

    Detail kesalahan untuk task yang gagal. Lihat Kesalahan untuk referensi lengkap objek task_error.

  • Name
    consumed_credits
    Type
    integer
    Description

    Jumlah kredit yang dikonsumsi oleh task ini. Mengembalikan 0 untuk task FAILED (kredit dikembalikan jika gagal).

  • Name
    prompt
    Type
    string
    Description

    Selalu kosong untuk figure build. Hadir untuk kompatibilitas lintas-endpoint dengan bentuk V2ImageTo3DTaskResponse yang digunakan bersama oleh Image to 3D.

  • Name
    negative_prompt
    Type
    string
    Description

    Selalu kosong untuk figure build. Hadir untuk kompatibilitas lintas-endpoint.

  • Name
    texture_prompt
    Type
    string
    Description

    Selalu kosong untuk figure build. Hadir untuk kompatibilitas lintas-endpoint.

  • Name
    texture_image_url
    Type
    string
    Description

    Selalu kosong untuk figure build. Hadir untuk kompatibilitas lintas-endpoint.

  • Name
    model_urls
    Type
    object
    Description

    URL yang dapat diunduh untuk model 3D yang dihasilkan. Figure build menghasilkan GLB bertekstur beserta pasangan OBJ + MTL untuk pipeline yang lebih menyukai Wavefront OBJ. Bentuk field ini cocok dengan objek Image to 3D model_urls sehingga penambahan format di masa depan dapat masuk tanpa perubahan yang merusak (breaking change).

    • Name
      glb
      Type
      string
      Description

      URL yang dapat diunduh untuk file GLB bertekstur.

    • Name
      obj
      Type
      string
      Description

      URL yang dapat diunduh untuk file Wavefront OBJ (geometri + UV).

    • Name
      mtl
      Type
      string
      Description

      URL yang dapat diunduh untuk file material MTL pendamping OBJ. Pasangkan dengan obj dan entri dari texture_urls[0].base_color.

  • Name
    thumbnail_url
    Type
    string
    Description

    URL yang dapat diunduh untuk gambar thumbnail dari file model.

  • Name
    texture_urls
    Type
    array
    Description

    Sebuah array objek URL tekstur yang dihasilkan oleh task ini. Saat ini berisi satu objek dengan base color map.

    • Name
      base_color
      Type
      string
      Description

      URL yang dapat diunduh untuk gambar base color map.

Example Figure Build Task Object

{
  "id": "019c320e-9a8f-7a1c-9c11-2a1876f8a9bb",
  "type": "creative-lab-figure-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,
  "prompt": "",
  "negative_prompt": "",
  "texture_prompt": "",
  "texture_image_url": "",
  "model_urls": {
    "glb": "https://assets.meshy.ai/***/tasks/019c320e-9a8f-7a1c-9c11-2a1876f8a9bb/output/model.glb?Expires=***",
    "obj": "https://assets.meshy.ai/***/tasks/019c320e-9a8f-7a1c-9c11-2a1876f8a9bb/output/model.obj?Expires=***",
    "mtl": "https://assets.meshy.ai/***/tasks/019c320e-9a8f-7a1c-9c11-2a1876f8a9bb/output/model.mtl?Expires=***"
  },
  "thumbnail_url": "https://assets.meshy.ai/***/tasks/019c320e-9a8f-7a1c-9c11-2a1876f8a9bb/output/preview.png?Expires=***",
  "texture_urls": [
    {
      "base_color": "https://assets.meshy.ai/***/tasks/019c320e-9a8f-7a1c-9c11-2a1876f8a9bb/output/texture_0.png?Expires=***"
    }
  ]
}