Skip to main content
POST
segment dan region_edit menggunakan endpoint gambar asinkron yang sama. Simpan task_id, lalu polling Dapatkan status tugas; permintaan pembuatan tidak langsung mengembalikan lapisan atau gambar final.
Jangan pernah mengekspos API Key di bundle browser, LocalStorage, URL, atau log frontend. Panggil APIMart melalui backend atau BFF Anda.

Ringkasan operasi

source_task_id dan image_id tidak dapat dipertukarkan. segment memakai ID tugas sumber; region_edit memakai ID aset gambar. Untuk melakukan segmentasi ulang gambar hasil edit, gunakan ID tugas region_edit yang selesai sebagai source_task_id baru.

Header permintaan

Gunakan Authorization: Bearer <APIMART_API_KEY>, Content-Type: application/json, dan Accept: application/json. Idempotency-Key bersifat opsional dan sangat disarankan untuk permintaan region_edit berbayar. Nilainya mendukung 1–191 karakter ASCII yang terlihat; UUID disarankan. Gunakan key baru untuk setiap operasi logis baru. Retry jaringan untuk permintaan yang sama harus memakai ulang key dan body yang identik. Jika hasil tidak pasti, jangan retry otomatis dengan key baru.

Alur tugas asinkron

Pembuatan yang berhasil mengembalikan HTTP 200 dan data[0].task_id. Poll GET /v1/tasks/{task_id}?language=id mulai tiap 2 detik, naik hingga maksimum 5 detik, dengan batas total 10 menit. Hentikan polling lama saat gambar sumber berubah.
Kueri tugas dapat mengembalikan HTTP 200 ketika data.status bernilai failed. Tentukan hasil dari data.status dan tampilkan data.error bila ada.

segment

Parameter permintaan

segment tidak memerlukan prompt. Jangan kirim image_id, image_index, billing_model_name, n, size, atau response_format. cache_only=true dan refresh=true saling eksklusif.

Contoh permintaan

Cache miss tetap merupakan tugas berhasil. Gunakan cache_status (hit atau miss) atau from_cache; jangan menyimpulkan hit dari cached.

Respons selesai

Untuk segment, data.result langsung berisi hasil segmentasi dan tidak dibungkus dalam images.
Objek tanpa mask_rle atau mask_url yang valid hanya dapat memakai edit kotak perkiraan.

Dekode mask_rle

mask_rle.counts adalah string hitungan terkompresi COCO, bukan Base64 atau zlib. Data dibuka per kolom; run pertama adalah latar, lalu bergantian antara depan dan latar. TypeScript berikut mengubahnya menjadi mask biner per baris yang sesuai untuk browser:
Dekode mask besar di Web Worker. Jangan kirim nilai lengkap mask_rle.counts ke log, analitik, URL, atau pelaporan error.

Ubah mask menjadi pilihan presisi

Telusuri komponen terhubung dan lubang, sederhanakan kontur, lalu normalkan setiap titik ke 0–1. Tiap ring memerlukan minimal 3 titik berbeda, area tidak nol, dan tidak boleh berpotongan sendiri. Simpan maksimal 16 region terbesar per lapisan dan 400 titik per ring.
mask_size adalah [height,width] dan memakai koordinat mask sumber, bukan ukuran CSS. Dengan object-fit: contain, kurangi offset letterbox, skala sesuai area gambar aktual, dan batasi hasil ke 0–1.
Membaca piksel gambar sumber atau mask_url memerlukan CORS. Tetapkan crossOrigin = "anonymous" sebelum src, atau fetch Blob. Dekode mask_rle langsung menghindari dependensi ini.

Edit wilayah: region_edit

Parameter permintaan

Minimal satu dari selection_regions, boxes, atau object_indices harus tidak kosong. API menerima kombinasi, tetapi frontend sebaiknya memakai satu metode per permintaan.
Jangan kirim billing_model_name, size, aspect_ratio, source_aspect_ratio, source_size, atau image_urls. Hilangkan n atau isi 1; hilangkan claim_asset atau isi false; hilangkan response_format atau isi url. Base64 dan stream=true tidak didukung.

Metode pilihan

points dapat berupa array datar atau pasangan bertingkat. Setiap nilai harus terbatas dan berada pada 0–1; tiap ring membutuhkan minimal 3 pasangan.

Respons selesai

Utamakan result.images[0].items[0]. Untuk respons lama, pasangkan url[0] dan image_ids[0] hanya jika panjang array sama. Lanjutkan hanya setelah memperoleh URL HTTP(S) dan image_id baru. Gunakan expires_at sebagai acuan kedaluwarsa URL; jangan hard-code jumlah jam. Unduh atau simpan aset yang dibutuhkan jangka panjang.

Pengeditan berkelanjutan

Setelah edit selesai, perbarui URL tampilan, ID aset saat ini, dan ID tugas sumber secara bersamaan, lalu hapus lapisan dan status polling lama.
  • Segmentasi ulang: gunakan ID tugas region_edit ini sebagai source_task_id
  • Edit ulang: gunakan image_id baru yang dikembalikan
  • Jangan pernah mengirim image_id ke segment dan jangan terus mengedit ID gambar sebelumnya.

Penanganan error

Penagihan

  • segment gratis dan selesai dengan cost=0 serta credits_cost=0, tetapi tetap memerlukan autentikasi dan tugas sumber valid.
  • region_edit berbayar. Gunakan cost dan credits_cost dari tugas selesai; jangan hard-code harga di frontend.
  • Jangan pernah mengirim field internal billing_model_name.

Daftar periksa frontend

  • Simpan API Key hanya di backend atau BFF.
  • Kirim hanya source_task_id ke segment; jangan kirim image_id atau image_index.
  • Gunakan image_id dari segment untuk region_edit dan sediakan minimal satu metode pilihan.
  • Gunakan selection_regions untuk edit presisi; object_indices hanya perkiraan kotak.
  • Selalu baca mask_size sebagai [height,width] dan tangani skala serta letterbox.
  • Gunakan ulang idempotency key asli untuk retry yang sama dan validasi URL serta image_id baru.