Bangun · SaaS Fotografi AI

Bangun layanan fotografi produk AI

Ringkasan singkat

Sediakan kunci API Photta per tenant (atau gabungkan jika volumenya kecil), lakukan fanout pada setiap katalog pelanggan ke dalam antrean, panggil /api/v1/tryon/apparel per produk, lakukan polling ID pembuatan di worker pool, simpan hasil di bucket pelanggan Anda, dan tagih setiap unit yang dapat ditagih (credit atau gambar yang dirender) dengan margin di atas biaya credit Photta.

  • Credits: 5 credits pada 2K · 6 credits pada 4K
  • Waktu umum: 1.5–4 min
  • Pemrosesan: async, polling

Setiap angka di halaman ini bersumber dari dokumentasi API Photta · diperiksa

Lakukan fanout ke seluruh katalog pelanggan Anda, kirim job try-on per produk, tagih berdasarkan credit. Primitif yang sama yang Photta sediakan untuk developer individual dapat disusun menjadi SaaS white-label — jika Anda mematuhi batasan-batasannya.

RESPONSE=$(curl -s -X POST https://api.photta.app/api/v1/tryon/apparel \
  -H "Authorization: Bearer $PHOTTA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "product_type": "top",
  "product_images": [
    "https://cdn.yourstore.com/products/shirt-front.jpg"
  ],
  "product_back_image": "https://cdn.yourstore.com/products/shirt-back.jpg",
  "product_category": "t_shirt",
  "mannequin_id": "mnk_f3a9b1",
  "pose_id": "pose_c2d4e5",
  "background": "https://cdn.yourstore.com/backgrounds/studio-loft.jpg",
  "lock_background": true,
  "resolution": "2K",
  "aspect_ratio": "3:4",
  "body_size": "M",
  "expression": "neutral",
  "user_instruction": "Keep the collar pattern crisp and centered."
}')
ID=$(echo "$RESPONSE" | jq -r '.data.id')

Cara kerja

Dari satu kunci ke layanan multi-tenant

Lima keputusan arsitektur yang perlu Anda buat sebelum menulis kode produksi.

  1. Langkah 1

    Tentukan kontrak produk Anda

    Tentukan apa yang didapatkan pelanggan Anda per unit penagihan: satu gambar yang dirender? Sebuah batch? Pool credit bulanan? Jawaban Anda menentukan segalanya — kedalaman antrean, kebijakan percobaan ulang, salinan halaman harga.

  2. Langkah 2

    Sediakan kunci Photta per tenant

    Skala kecil: satu kunci bersama, lacak penggunaan per tenant di database Anda. Skala lebih besar: satu kunci Photta per tenant, dikelola melalui dasbor Photta — atribusi lebih jelas, dampak kebocoran lebih kecil.

  3. Langkah 3

    Lakukan fanout melalui antrean

    Untuk setiap produk dalam feed pelanggan, masukkan job foto ke antrean. Jangan pernah mengirimkan secara sinkron selama impor CSV — Anda akan mencapai rate limit 600-requests-per-minute dan kehilangan job karena error 429.

  4. Langkah 4

    Margin di atas harga credit

    Setiap render pakaian 4K menghabiskan biaya 6 credits. Setiap faktur yang Anda kirimkan harus berupa credits × margin Anda. Catat biaya credit mentah di buku besar Anda agar bagian keuangan dapat merekonsiliasi faktur Photta dengan lini pendapatan Anda.

  5. Langkah 5

    Pantau latensi dan tingkat kegagalan

    Lacak waktu penyelesaian + tingkat kegagalan per tenant. Ketika foto pelanggan secara konsisten membutuhkan waktu lebih dari 4 menit atau berulang kali gagal, hal itu hampir selalu disebabkan oleh input yang buruk (URL rusak, product_type tidak didukung) — bukan masalah Photta.

Tiga pola yang akan Anda butuhkan

Fanout, pengiriman per-tenant, buku besar penagihan — komponen penopang beban dari SaaS fotografi.

// For each product in the customer's feed, kick off a try-on.
for (const product of catalog) {
  await photoQueue.add("photo", {
    customerId: product.customer_id,
    productUrl: product.image,
    productType: product.type, // "top" | "bottom" | "top_and_bottom" | "one_piece"
  });
}
const res = await fetch("https://api.photta.app/api/v1/tryon/apparel", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.PHOTTA_API_KEY}`, "Content-Type": "application/json" },
  body: JSON.stringify({
    "product_type": "top",
    "product_images": [
      "https://cdn.yourstore.com/products/shirt-front.jpg"
    ],
    "product_back_image": "https://cdn.yourstore.com/products/shirt-back.jpg",
    "product_category": "t_shirt",
    "mannequin_id": "mnk_f3a9b1",
    "pose_id": "pose_c2d4e5",
    "background": "https://cdn.yourstore.com/backgrounds/studio-loft.jpg",
    "lock_background": true,
    "resolution": "2K",
    "aspect_ratio": "3:4",
    "body_size": "M",
    "expression": "neutral",
    "user_instruction": "Keep the collar pattern crisp and centered."
  }),
});
const { data } = await res.json(); // data.id, data.status
// A completed apparel job costs 5 credits at 2K and 6 at 4K.
// Record it to your billing pipeline so you can margin on top of it.
await billingLedger.append({
  customer: data.customerId,
  sku: "photo-4k",
  quantity: 1,
  wholesaleCost: 6, // credits, = your Photta spend
});

Pertanyaan umum developer

Menjalankan layanan di atas Photta

Apakah saya memerlukan kunci API Photta terpisah untuk setiap tenant?

Tidak, tetapi itu membantu pada skala besar. Di bawah segelintir pelanggan, satu kunci gabungan dengan pelacakan penggunaan per tenant di database Anda sendiri sudah cukup. Di atas itu, satu kunci per tenant memberi Anda atribusi yang lebih bersih, rotasi yang lebih mudah, dan dampak kebocoran yang lebih kecil jika terjadi kebocoran.

Apa yang harus saya lakukan saat credits habis?

API mengembalikan 402 insufficient_credits dengan jumlah yang diperlukan dan yang tersedia. Tetapkan batas bawah (misalnya 100 credits) dan isi ulang secara otomatis sebelum job mulai gagal. Job yang gagal akan mengembalikan credits-nya, sehingga lonjakan status 402 tidak memperparah dampak buruknya.

Bagaimana saya sebaiknya menentukan harga layanan saya?

Photta mengenakan biaya 5 credits pada 2K, 6 credits pada 4K. Konversikan nilai tersebut ke mata uang ritel Anda (biaya × margin Anda × konversi credit) dan tentukan apakah akan menagih per gambar, per batch, atau per bulan. Sebagian besar produk SaaS fotografi akhirnya menagih per gambar dengan batas minimum bulanan.

SLA apa saja yang ditawarkan Photta?

Jendela penyelesaian yang terdokumentasi di Photta adalah 1.5 hingga 4 menit per job. Tidak ada SLA uptime pasti yang dipublikasikan. Jika SaaS Anda berkomitmen pada waktu penyelesaian sendiri, masukkan kelonggaran waktu tersebut ke dalam kontrak Anda sendiri (misalnya 'foto dikirimkan dalam 1 jam' memberi Anda ruang aman 10x) dan lacak latensi per-tenant untuk mendeteksi regresi sejak dini.

Bisakah saya melakukan white-label pada hasilnya?

Bisa. Gambar yang dikembalikan tidak memuat branding Photta. Anda dapat mengirimkannya ke bucket pelanggan Anda dengan domain CDN Anda sendiri di depannya — pelanggan Anda tidak perlu tahu bahwa pipeline Photta yang memproduksinya. API-nya sendiri tidak white-label — key + dashboard tetap ber-branding Photta.

Luncurkan SaaS fotografi di atas Photta

API yang sama, brand Anda, margin Anda. Ambil API key, hubungkan tiga pola di atas ke worker Anda, dan Anda sudah setengah jalan menuju peluncuran.