API Auto Split

Pisahkan model 3D menjadi beberapa bagian yang dapat dicetak secara terpisah — secara otomatis, berdasarkan bagian yang Anda beri nama, atau berdasarkan wilayah warna — dengan konektor opsional; area tipis yang tersisa akibat pemotongan selalu diperkuat agar setiap bagian dapat dicetak secara solid.


POST/openapi/v1/print/split

Membuat Auto Split Task

Endpoint ini membuat Auto Split task baru. Task ini memotong model dari task sebelumnya menjadi bagian-bagian yang dapat dicetak secara terpisah dan mengembalikan model yang telah tersegmentasi, dengan setiap bagian sebagai objeknya sendiri di dalam file.

Parameter

  • Name
    input_task_id
    Type
    string
    Wajib
    Description

    ID dari task yang berhasil (succeeded) yang modelnya akan dipisah. Jenis task yang didukung: Gambar ke 3D, Multi-Gambar ke 3D, Teks ke 3D (pratinjau), Remesh, Konversi, dan Ubah ukuran. Task tersebut harus memiliki status SUCCEEDED, dan modelnya harus dihasilkan dengan Meshy 6 atau Meshy 7 (ai_model meshy-6, meshy-7, atau latest). Model low-poly dan Smart Topology (meshy-t2) tidak didukung.

  • Name
    mode
    Type
    string
    default auto
    Description

    Bagaimana model dibagi menjadi beberapa bagian.

    Nilai yang tersedia:

    • auto: Meshy yang menentukan potongannya. prompt diabaikan.
    • by_parts: Potong berdasarkan bagian struktural yang Anda sebutkan dalam prompt, seperti kepala, lengan, dan tubuh.
    • by_color: Potong berdasarkan area warna yang Anda sebutkan dalam prompt. Memerlukan input yang dihasilkan dari gambar yang diunggah (Gambar ke 3D atau Multi-Gambar ke 3D); input lain akan ditolak dengan 400.
Hanya berlaku ketika mode = by_parts or by_color
  • Name
    prompt
    Type
    string
    Wajib
    Description

    Menjelaskan bagian-bagian yang akan dipisah, dalam bahasa apa pun. Meshy membaca 1 hingga 10 nama bagian dari teks tersebut, jadi sebutkan nama bagiannya, bukan mendeskripsikan modelnya — misalnya split into the figure and the base, atau head, torso, left arm, right arm, legs. Maksimal 600 karakter. Ada dua mode kegagalan: deskripsi yang terbaca sebagai pemisahan tetapi menyebutkan kurang dari dua bagian (misalnya split into individual parts) akan ditolak dengan 400 dan tidak ada biaya yang dikenakan; deskripsi yang sama sekali tidak dapat dibaca oleh Meshy akan kembali ke auto, task tetap berjalan dan dikenakan biaya, dan responsnya membawa prompt_ignored: true.

  • Name
    target_formats
    Type
    array
    default ["glb"]
    Description

    Format untuk mengekspor model yang telah dipisah. Setiap bagian menjadi objek terpisah di setiap format. glb selalu dihasilkan dan dikembalikan dalam model_urls; sebutkan format lain yang Anda inginkan sebagai tambahan.

    Nilai yang tersedia: glb, obj, fbx, usdz, blend, 3mf.

  • Name
    layout
    Type
    string
    default assembled
    Description

    Bagaimana bagian-bagian diatur di setiap format output, dan di dalam thumbnail.

    Nilai yang tersedia:

    • assembled: Bagian-bagian tetap berada di posisi asalnya seperti pada model sumber.
    • on_plate: Bagian-bagian diletakkan rata dan disebar di atas build plate, siap untuk diiris (slice) — susunan yang sama seperti tampilan On Plate di aplikasi web.

    Pada kedua tata letak tersebut, file yang diekspor hanya berisi satu objek per bagian dan tidak ada yang lain: potongan tipis yang menyusut atau berbentuk seperti titik yang tersisa dari sebuah pemotongan akan dihapus sebelum diekspor, sehingga setiap objek yang Anda temukan dalam file tersebut dapat dicetak.

  • Name
    connectors
    Type
    boolean
    default false
    Description

    Menambahkan konektor mortise-and-tenon di setiap potongan agar bagian-bagian yang dicetak dapat saling pas.

Hanya berlaku ketika connectors = true
  • Name
    connector_type
    Type
    string
    default cube
    Description

    Bentuk konektor pada setiap permukaan potongan.

    Nilai yang tersedia: cube, cylinder.

  • Name
    connector_size
    Type
    number
    default 0.5
    Description

    Ukuran konektor relatif terhadap permukaan potongan.

    Rentang valid: 0.1 hingga 0.8.

  • Name
    connector_height
    Type
    number
    default 0.1
    Description

    Seberapa jauh konektor menonjol dari permukaan potongan, relatif terhadap permukaan potongan.

    Rentang valid: 0.1 hingga 0.8.

Hasil

Properti result pada respons berisi id dari Auto Split task yang baru dibuat.

Mode Kegagalan

  • Name
    400 - Bad Request
    Description

    Permintaan tidak dapat diterima. Penyebab umum:

    • Prompt tidak ada: prompt wajib diisi ketika mode adalah by_parts atau by_color.
    • Prompt menyebutkan kurang dari dua bagian: by_parts / by_color memerlukan setidaknya dua bagian yang disebutkan (misalnya head, torso, base); instruksi umum seperti split into individual parts akan ditolak. Tidak ada biaya yang dikenakan.
    • Task input tidak didukung: input_task_id harus merujuk pada task yang berhasil (succeeded) dari jenis yang didukung, yang dihasilkan dengan Meshy 6 atau Meshy 7.
    • Input bertekstur: Model input memiliki texture. Untuk saat ini, hanya model tanpa texture yang didukung.
    • Tidak ada gambar referensi: by_color memerlukan input yang dihasilkan dari gambar yang diunggah.
    • Format tidak didukung: target_formats berisi stl.
    • Konektor di luar rentang: connector_size atau connector_height berada di luar rentang 0.1 hingga 0.8.
  • 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

    input_task_id tidak ada atau bukan milik akun Anda.

  • Name
    429 - Too Many Requests
    Description

    Anda telah melampaui batas laju Anda. Permintaan by_parts dan by_color juga berbagi batas penguraian prompt sebesar 12 permintaan per menit per akun.

  • Name
    503 - Service Unavailable
    Description

    Pemisahan berbasis prompt (by_parts dan by_color) untuk sementara tidak tersedia. Coba lagi nanti, atau gunakan mode: "auto", yang tidak terpengaruh. Tidak ada biaya yang dikenakan.

Request

POST
/openapi/v1/print/split
# Simple request: let Meshy choose the cuts
curl https://api.meshy.cn/openapi/v1/print/split \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
    "input_task_id": "018a210d-8ba4-705c-b111-1f1776f7f578"
  }'

# Advanced request: name the parts, add connectors, export glb and obj
curl https://api.meshy.cn/openapi/v1/print/split \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
    "input_task_id": "018a210d-8ba4-705c-b111-1f1776f7f578",
    "mode": "by_parts",
    "prompt": "split into the figure and the base",
    "target_formats": ["glb", "obj"],
    "layout": "on_plate",
    "connectors": true,
    "connector_type": "cylinder",
    "connector_size": 0.4
  }'

Response

{
  "result": "0193bfc5-ee4f-73f8-8525-44b398884ce9"
}

GET/openapi/v1/print/split/:id

Mengambil Task Auto Split

Endpoint ini mengambil task Auto Split berdasarkan ID-nya.

Parameter

  • Name
    id
    Type
    path
    Description

    ID dari task Auto Split yang akan diambil.

Returns

Objek Task Auto Split.

Request

GET
/openapi/v1/print/split/a43b5c6d-7e8f-901a-234b-567c890d1e2f
curl https://api.meshy.cn/openapi/v1/print/split/a43b5c6d-7e8f-901a-234b-567c890d1e2f \
-H "Authorization: Bearer ${YOUR_API_KEY}"

Response

{
  "id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
  "type": "print-split",
  "model_urls": {
    "glb": "https://assets.meshy.cn/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
    "obj": "https://assets.meshy.cn/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***"
  },
  "thumbnail_url": "https://assets.meshy.cn/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/preview.png?Expires=***",
  "part_count": 4,
  "progress": 100,
  "status": "SUCCEEDED",
  "created_at": 1699999999000,
  "started_at": 1700000000000,
  "finished_at": 1700000082000,
  "task_error": null,
  "consumed_credits": 10
}

DELETE/openapi/v1/print/split/:id

Delete an Auto Split Task

Endpoint ini menghapus permanen sebuah tugas Auto Split, termasuk semua model dan data yang terkait. Tindakan ini tidak dapat dibatalkan.

Path Parameters

  • Name
    id
    Type
    path
    Description

    ID dari tugas Auto Split yang akan dihapus.

Returns

Mengembalikan 200 OK jika berhasil.

Request

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

Response

// Returns 200 Ok on success.

GET/openapi/v1/print/split

List Auto Split Tasks

Endpoint ini memungkinkan Anda untuk mengambil daftar tugas Auto Split.

Parameter

Atribut opsional

  • Name
    page_num
    Type
    integer
    Description

    Nomor halaman untuk paginasi. Dimulai dan defaultnya adalah 1.

  • Name
    page_size
    Type
    integer
    Description

    Batas ukuran halaman. Defaultnya 10 item. Maksimum yang diizinkan adalah 100 item; nilai yang lebih besar akan dibatasi menjadi 100.

  • Name
    sort_by
    Type
    string
    Description

    Kolom untuk pengurutan. Nilai yang tersedia:

    • +created_at: Urutkan berdasarkan waktu pembuatan secara ascending.
    • -created_at: Urutkan berdasarkan waktu pembuatan secara descending.

Returns

Mengembalikan daftar berpaginasi dari The Auto Split Task Objects.

Request

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

Response

[
  {
    "id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
    "type": "print-split",
    "model_urls": {
      "glb": "https://assets.meshy.cn/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***"
    },
    "thumbnail_url": "https://assets.meshy.cn/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/preview.png?Expires=***",
    "part_count": 4,
    "progress": 100,
    "status": "SUCCEEDED",
    "preceding_tasks": 0,
    "created_at": 1699999999000,
    "started_at": 1700000000000,
    "finished_at": 1700000082000,
    "task_error": null,
    "consumed_credits": 10
  }
]

GET/openapi/v1/print/split/:id/stream

Streaming Tugas Auto Split

Endpoint ini melakukan streaming pembaruan secara real-time untuk tugas Auto Split menggunakan Server-Sent Events (SSE).

Parameter

  • Name
    id
    Type
    path
    Description

    Pengidentifikasi unik untuk tugas Auto Split yang akan di-stream.

Returns

Mengembalikan stream dari Objek Tugas Auto Split sebagai Server-Sent Events.

Setiap event message membawa objek tugas lengkap seperti yang dikembalikan oleh Retrieve an Auto Split Task, termasuk consumed_credits, stempel waktu, dan prompt_ignored; selama tugas berstatus PENDING atau IN_PROGRESS, kolom yang berubah antar frame adalah progress, status, started_at, dan preceding_tasks, sedangkan model_urls, thumbnail_url, part_count, dan parts muncul begitu tugas mencapai status SUCCEEDED. Event error hanya membawa status_code dan message, jadi lakukan percabangan berdasarkan nama event sebelum membaca status.

Request

GET
/openapi/v1/print/split/a43b5c6d-7e8f-901a-234b-567c890d1e2f/stream
curl -N https://api.meshy.cn/openapi/v1/print/split/a43b5c6d-7e8f-901a-234b-567c890d1e2f/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 (other task fields omitted here for brevity;
// each frame is the full task object).
event: message
data: {
  "id": "a43b5c6d-7e8f-901a-234b-567c890d1e2f",
  "progress": 0,
  "status": "PENDING"
}

event: message
data: {
  "id": "a43b5c6d-7e8f-901a-234b-567c890d1e2f",
  "type": "print-split",
  "model_urls": {
    "glb": "https://assets.meshy.cn/***/tasks/a43b5c6d-7e8f-901a-234b-567c890d1e2f/output/model.glb?Expires=***"
  },
  "thumbnail_url": "https://assets.meshy.cn/***/tasks/a43b5c6d-7e8f-901a-234b-567c890d1e2f/output/preview.png?Expires=***",
  "part_count": 4,
  "progress": 100,
  "status": "SUCCEEDED",
  "preceding_tasks": 0,
  "created_at": 1699999999000,
  "started_at": 1700000000000,
  "finished_at": 1700000082000,
  "task_error": null,
  "consumed_credits": 10
}

The Auto Split Task Object

Sebuah tugas Auto Split hanya membawa properti-properti di bawah ini. Kolom generation-prompt yang dimiliki objek tugas lainnya (name, object_prompt, texture_prompt dan sebagainya), model_url tunggal, serta texture_urls tidak pernah diisi untuk sebuah split dan tidak dikembalikan. Properti yang terisi seiring berjalannya tugas (thumbnail_url, model_urls, stempel waktu) selalu ada, kosong hingga memiliki nilai, sehingga kumpulan kunci tidak berubah antara PENDING dan SUCCEEDED.

  • Name
    id
    Type
    string
    Description

    Pengidentifikasi unik untuk tugas ini. Meskipun kami menggunakan UUID yang dapat diurutkan-k (k-sortable) sebagai detail implementasi untuk id tugas, Anda tidak boleh membuat asumsi apa pun tentang format id tersebut.

  • Name
    type
    Type
    string
    Description

    Jenis tugas. Nilainya adalah print-split.

  • Name
    model_urls
    Type
    object
    Description

    URL yang dapat diunduh untuk model yang telah dipisah, satu per format yang diminta. Setiap bagian merupakan objek terpisah dalam file. Properti untuk sebuah format akan dihilangkan jika format tersebut tidak diminta.

    • Name
      glb
      Type
      string
      Description

      URL yang dapat diunduh untuk model yang telah dipisah dalam format GLB.

    • Name
      obj
      Type
      string
      Description

      URL yang dapat diunduh untuk model yang telah dipisah dalam format OBJ.

    • Name
      fbx
      Type
      string
      Description

      URL yang dapat diunduh untuk model yang telah dipisah dalam format FBX.

    • Name
      usdz
      Type
      string
      Description

      URL yang dapat diunduh untuk model yang telah dipisah dalam format USDZ.

    • Name
      blend
      Type
      string
      Description

      URL yang dapat diunduh untuk model yang telah dipisah dalam format Blender.

    • Name
      3mf
      Type
      string
      Description

      URL yang dapat diunduh untuk model yang telah dipisah dalam format 3MF.

  • Name
    thumbnail_url
    Type
    string
    Description

    URL yang dapat diunduh untuk pratinjau hasil render dari model yang telah dipisah, dengan setiap bagian dalam warna yang berbeda, dalam layout yang diminta.

  • Name
    prompt_ignored
    Type
    boolean
    Description

    true ketika prompt dari permintaan by_parts atau by_color tidak menyebutkan nama bagian apa pun, sehingga Meshy memisahkan model secara otomatis — nama-nama bagian dalam hasil adalah milik Meshy, bukan milik Anda. Hadir mulai dari PENDING. Dihilangkan untuk tugas auto dan setiap kali prompt tersebut diikuti.

  • Name
    part_count
    Type
    integer
    Description

    Jumlah bagian yang dapat dicetak dalam model yang telah dipisah — satu per objek dalam file yang diekspor. Serpihan tipis yang menyatu (collapsed slivers) yang tidak dapat diubah oleh segmentasi menjadi bagian yang dapat dicetak dihapus dari file sebelum diekspor dan tidak dihitung.

  • Name
    progress
    Type
    integer
    Description

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

  • Name
    status
    Type
    string
    Description

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

  • Name
    preceding_tasks
    Type
    integer
    Description

    Jumlah tugas yang mendahului.

  • Name
    created_at
    Type
    timestamp
    Description

    Stempel waktu saat tugas dibuat, dalam milidetik.

  • Name
    started_at
    Type
    timestamp
    Description

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

  • Name
    finished_at
    Type
    timestamp
    Description

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

  • Name
    task_error
    Type
    object
    Description

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

  • Name
    consumed_credits
    Type
    integer
    Description

    Jumlah kredit yang digunakan oleh tugas ini. Selalu ada: 10 setelah tugas diterima, dan 0 untuk tugas FAILED karena biaya dikembalikan saat gagal. Menghapus tugas ketika masih PENDING juga akan mengembalikan biayanya.

The Auto Split Task Object

{
  "id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
  "type": "print-split",
  "model_urls": {
    "glb": "https://assets.meshy.cn/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
    "obj": "https://assets.meshy.cn/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***"
  },
  "thumbnail_url": "https://assets.meshy.cn/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/preview.png?Expires=***",
  "part_count": 4,
  "progress": 100,
  "status": "SUCCEEDED",
  "preceding_tasks": 0,
  "created_at": 1699999999000,
  "started_at": 1700000000000,
  "finished_at": 1700000082000,
  "task_error": null,
  "consumed_credits": 10
}