Referensi API
Dokumentasi lengkap semua endpoint REST API TransX402 — autentikasi, manajemen merchant, fasilitasi pembayaran, sandbox, dan lainnya.
Base URL
Environment ditentukan otomatis dari prefix API key:
| Prefix Key | Environment | URL |
|---|---|---|
ipk_sandbox_ | Sandbox (Anvil fork) | https://sandbox.transx402.com |
ipk_live_ | Production (Base mainnet) | https://api.transx402.com |
Autentikasi
| Grup Endpoint | Auth | Metode |
|---|---|---|
/facilitate | API Key | Header X-API-Key |
/payments/* | API Key | Header X-API-Key |
/tokens/* | Tidak (publik) | — |
/health | Tidak (publik) | — |
/verify/:txHash | Tidak (publik) | — |
/auth/* | Tanda tangan wallet | SIWE |
/merchant/* | Session cookie | Di-set setelah /auth/login |
/sandbox/* | API Key Sandbox | Header X-API-Key |
Autentikasi dan Registrasi
POST /auth/register
Daftarkan akun merchant baru. Memerlukan tanda tangan SIWE untuk membuktikan kepemilikan wallet.
Request:
Response:
Saat registrasi, sandbox API key otomatis dibuat. Production key dibuat terpisah dari dashboard.
POST /auth/login
Login dengan tanda tangan wallet. Menyimpan session cookie untuk akses dashboard.
POST /auth/logout
Hapus session.
Fasilitasi Pembayaran
POST /facilitate
Proses otorisasi pembayaran yang sudah ditandatangani. Ini adalah endpoint inti yang dipanggil oleh client x402.
Auth: API Key (header X-API-Key)
Alur:
- Parse dan validasi request
- Autentikasi API key, resolve merchant dan environment
- Route ke chain yang benar (sandbox Anvil atau production Base)
- Verifikasi token ada di registry
- Verifikasi tanda tangan Permit2
- Cek deadline belum lewat
- Cek nonce belum digunakan
- Cek saldo IDRX pembayar
- Cek allowance Permit2 pembayar
- Simulasi transaksi
- Kirim transaksi on-chain
- Tunggu konfirmasi
- Catat pembayaran di database
- Kirim webhook (async)
- Kembalikan hash transaksi
Status Pembayaran
GET /payments/:txHash
Dapatkan status pembayaran berdasarkan hash transaksi.
Auth: API Key
Response:
Nilai status: pending, confirmed, failed
GET /payments
Daftar pembayaran untuk merchant yang terautentikasi.
Auth: API Key
Parameter query:
| Param | Tipe | Deskripsi |
|---|---|---|
page | number | Nomor halaman (default: 1) |
limit | number | Item per halaman (default: 20, max: 100) |
status | string | Filter berdasarkan status |
from | string | Filter berdasarkan alamat pembayar |
since | ISO date | Filter pembayaran setelah tanggal ini |
until | ISO date | Filter pembayaran sebelum tanggal ini |
Response:
Profil Merchant
GET /merchant/me
Dapatkan profil merchant saat ini.
Auth: Session cookie
PATCH /merchant/me
Update profil merchant.
Auth: Session cookie
Request:
GET /merchant/stats
Dapatkan statistik pembayaran.
Auth: Session cookie
Response:
Manajemen API Key
POST /merchant/api-keys
Buat API key baru.
Auth: Session cookie
Request:
Response:
Penting: Field key lengkap hanya dikembalikan sekali saat pembuatan. Simpan dengan aman.
GET /merchant/api-keys
Daftar semua API key (menampilkan prefix, label, environment, terakhir digunakan — tidak pernah key lengkap).
Auth: Session cookie
DELETE /merchant/api-keys/:id
Cabut (revoke) API key.
Auth: Session cookie
Utilitas Sandbox
Endpoint ini hanya bisa diakses menggunakan API key sandbox.
POST /sandbox/fund
Isi wallet test dengan IDRX di chain sandbox.
Auth: API Key Sandbox
Request:
Response:
POST /sandbox/reset
Reset state chain sandbox (re-fork dari block Base mainnet terbaru).
Auth: API Key Sandbox
GET /sandbox/wallets
Daftar wallet test yang sudah di-fund dengan saldo IDRX dan ETH.
Auth: API Key Sandbox
Response:
Ini adalah akun deterministik Anvil — aman untuk diekspos di sandbox saja.
Informasi Token
GET /tokens
Daftar semua token yang didukung.
Auth: Tidak diperlukan
GET /tokens/:symbol/price
Dapatkan informasi harga token.
Auth: Tidak diperlukan
Response:
Verifikasi Pembayaran
GET /verify/:txHash
Endpoint publik untuk memverifikasi bahwa pembayaran diproses oleh TransX402. Berguna untuk verifikasi server-side tanpa API key.
Auth: Tidak diperlukan
Response:
Health Check
GET /health
Auth: Tidak diperlukan
Response:
Format Error
Semua error mengikuti format yang konsisten:
Kode Error
| Kode | HTTP Status | Deskripsi |
|---|---|---|
invalid_signature | 400 | Verifikasi tanda tangan Permit2 gagal |
insufficient_balance | 400 | Saldo token pembayar kurang |
no_permit2_approval | 400 | Pembayar belum approve kontrak Permit2 |
expired_deadline | 400 | Otorisasi pembayaran sudah kedaluwarsa |
unsupported_token | 400 | Token tidak ada di registry |
unsupported_network | 400 | Jaringan tidak didukung untuk token ini |
simulation_failed | 400 | Simulasi transaksi gagal |
tx_failed | 500 | Transaksi on-chain gagal |
rate_limited | 429 | Terlalu banyak request |
unauthorized | 401 | API key tidak valid atau tidak ada |
Rate Limits
| Endpoint | Limit |
|---|---|
POST /facilitate | 60/menit per IP |
GET /payments/* | 120/menit per API key |
POST /merchants/* | 10/menit per IP |
| Lainnya | 120/menit per IP |