Mengelola API sebagai produk sungguhan: developer sebagai user, prinsip desain endpoint yang konsisten, idempotency key untuk pembayaran, kontrak error yang manusiawi, kebijakan breaking change & versioning, hingga platform economics dan pricing usage-based

Setelah di episode 5 kalian menulis PRD teknis settlement T+0 dengan NFR terukur dan acceptance criteria testable, episode ini membahas wilayah kerja yang paling khas TPM: produk API. Di NusaPay, produk utama bukan aplikasi web — melainkan API yang dipakai ribuan developer merchant.
Kenapa API layak dibahas sebagai topik tersendiri? Karena aturan mainnya berbeda dari produk konsumen: user kalian adalah developer yang menghakimi produk lewat dokumentasi, konsistensi, dan pesan error. Mereka tidak bisa "dipujuk" UX visual — API yang jelek langsung terlihat jelek. Dan begitu developer terintegrasi, biaya mereka berpindah sangat tinggi: kesalahan desain hari ini menjadi beban yang mereka bawa bertahun-tahun.
Ubah mental model: semua disiplin product management tetap berlaku, hanya objeknya berganti.
| Konsep produk konsumen | Padanan di produk API |
|---|---|
| User persona | Backend developer merchant, integrator pihak ketiga |
| Onboarding | Time to first successful call |
| UI/UX | Konsistensi kontrak, pesan error, docs |
| Retensi | Kedalaman integrasi (semakin banyak endpoint dipakai) |
| Support ticket | Error message yang self-explanatory |
Metrik onboarding API bernama time to first call (TTFC): waktu dari daftar akun sampai request pertama berhasil di sandbox. Inilah "aha moment" produk API, dan kita bedah mendalam di episode 15 tentang DX.
Konsistensi adalah fitur nomor satu produk API. Empat keputusan yang harus seragam di seluruh endpoint:
POST /v1/virtual-accounts, bukan /createVA.Pelanggaran kecil terasa sepele saat dirancang, tetapi developer yang integrasi 20 endpoint akan merasakan setiap inkonsistensi sebagai pajak kognitif.
Di payment, jaringan bisa putus setelah request terkirim. Developer mencoba ulang — dan tanpa perlindungan, uang nasabah terpotong dua kali. Solusinya idempotency key: developer mengirim identifier unik per intent, dan server menjamin request ulang dengan key sama tidak menciptakan efek ganda.
curl -X POST https://api.nusapay.id/v1/virtual-accounts \
-H "Authorization: Bearer $NUSAPAY_KEY" \
-H "Idempotency-Key: order-88123-attempt-1" \
-d '{
"merchant_id": "MID-204",
"amount": 150000,
"expires_at": "2026-09-01T23:59:59Z"
}'Sebagai TPM, idempotency bukan detail engineering — ia janji produk: "integrasi kamu aman dari duplikasi". Ia harus muncul di docs, di SDK, di onboarding, dan di sales deck ke merchant besar.
Pesan error adalah momen paling emosional produk API. Kontrak yang baik punya struktur stabil:
{
"error": {
"code": "insufficient_balance",
"message": "Merchant balance is not enough for this payout.",
"doc_url": "https://docs.nusapay.id/errors#insufficient_balance",
"request_id": "req_9f2c81"
}
}Tiga unsur yang membuat error bisa diatasi sendiri oleh developer: kode mesin yang stabil (insufficient_balance, bukan string bebas), pesan manusia yang menyebut penyebab, dan tautan dokumentasi plus request_id untuk support. Setiap error baru yang kalian approve di PRD harus lolos uji tiga syarat itu — inilah cara TPM ikut menjaga DX tanpa menulis kode.
Developer telah menginvestasikan waktu mengintegrasikan API kalian; mengubah kontrak sembarangan adalah pengkhianatan terhadap investasi itu. Kebijakan standar industri:
/v2/.2026-09-01 v1 payout endpoints -> SUNSET announced
v1 will keep working until at least 2027-09-01.
Deprecation headers active from 2026-12-01.
Migration guide: docs.nusapay.id/migrations/v1-to-v2TPM yang baik mengelola migrasi versi sebagai proyek produk kecil: panduan migrasi, tooling diff, dan komunikasi berkala — persis pola yang kita dalami di episode 11 tentang migration initiatives.
Tip
Sebelum approve desain endpoint baru, jalankan "uji developer sinis": baca docs-nya seolah kamu developer yang buru-buru jam 6 sore. Kalau ada satu keputusan yang bikin bertanya ("kenapa field ini snake_case tapi yang itu camelCase?"), perbaiki sebelum rilis.
API adalah produk dengan mekanika komersial khas. Untuk NusaPay, model pendapatan utama:
Keputusan pricing API selalu menyangkut insentif perilaku: harga per call mendorong efisiensi integrasi, sedangkan harga per transaksi menyelaraskan keberhasilan merchant dengan pendapatan kalian. Pilih yang perilaku yang ingin kalian dorong.
Tulis one-pager untuk endpoint baru GET /v1/settlements (merchant cek status settlement sendiri, mengurangi tiket support): persona developer yang dilayani, contoh request-response, daftar error code beserta pesannya, dampak ke metrik (target: tiket "kapan dana cair" turun 40%), dan rencana rollout beta. Simpan di 03-specs/.
Inti yang harus dibawa pulang:
Di episode 7 selanjutnya kita bicara Data-Informed Product Decisions — membangun metric framework yang menggabungkan metrik teknis (latency, reliability) dengan metrik produk (activation, retention), sehingga setiap keputusan roadmap NusaPay punya dasar angka. Sampai jumpa!