Garuda Dev¶
Portal developer dan merchant di Garuda Wallet. Integrasi mesin memakai API key prabayar gdk_….
Paket API key¶
| Paket | Biaya | Durasi |
|---|---|---|
| Bulanan | 100 GDC | 30 hari |
| 3 Bulan | 270 GDC | 90 hari |
| Tahunan | 900 GDC | 365 hari |
- Beli dan kelola key di wallet: Garuda Dev.
- Secret
gdk_…hanya ditampilkan sekali. - Header:
X-Garuda-Dev-Key(alternatif:Authorization: BeareratauX-Api-Key). - Setelah masa berlaku habis, API mengembalikan
401(api_key_expired). Buat key baru untuk perpanjang. - Maksimal 5 key aktif per wallet (key kedaluwarsa tidak dihitung).
- 30% biaya paket dibakar, 70% ditahan operasional. Lihat Burn GDC.
Biaya daftar webhook baru: 1 GDC (sekali saat URL pertama disimpan).
Base URL¶
- Production:
https://api.garudachain.id/api/v1/garuda-dev - Explorer ringkas: explorer.garudachain.id/api
Endpoint (API key)¶
| Method | Path | Scope | Deskripsi |
|---|---|---|---|
| GET | /v1/dashboard |
dashboard:read |
Ringkasan merchant |
| GET | /v1/invoices |
invoices:read |
Daftar invoice |
| POST | /v1/invoices |
invoices:write |
Buat invoice + payUrl |
Endpoint (wallet session)¶
| Method | Path | Deskripsi |
|---|---|---|
| GET | /summary/:address |
Dashboard + keys + webhooks |
| POST | /keys |
Buat API key |
| POST | /keys/revoke |
Cabut key |
| POST | /webhooks |
Simpan URL sandbox |
| POST | /webhooks/test |
Kirim webhook.test |
Contoh cepat¶
curl -sS https://api.garudachain.id/api/v1/garuda-dev/v1/invoices \
-H "Content-Type: application/json" \
-H "X-Garuda-Dev-Key: gdk_…" \
-d '{"customerLabel":"Pelanggan Toko","amountIdr":85000,"note":"Pesanan #42"}'
Respons berisi invoice.payUrl untuk dikirim ke pelanggan.
Webhook¶
Setelah pembayaran sukses, server mengirim POST ke URL sandbox Anda.
- Events:
payment.completed,invoice.paid,webhook.test - Header:
X-Garuda-Event,X-Garuda-Signature: sha256=<hmac> - Verifikasi memakai raw body UTF-8, bukan objek JSON yang di-reparse.
const crypto = require("crypto");
function verify(rawBody, signatureHeader, secret) {
const expected = crypto.createHmac("sha256", secret).update(rawBody).digest("hex");
const got = String(signatureHeader || "").replace(/^sha256=/, "");
return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(got));
}
Burn platform¶
GET /api/v1/fees/burns mengembalikan kebijakan burn (30% / 70%) dan agregat per sumber, termasuk garuda_dev, Garuda Pay, Garuda ID, PPOB, mint karya, bridge, dan turnamen.
OpenAPI tag GarudaDev: docs/openapi.yaml → GET /api/v1/openapi.json.