Skip to main content
API Gateway Blueprint mengirimkan event penggunaan ke Dodo Payments untuk setiap panggilan API yang ditangani layanan Anda, dan meter Count mengubah event tersebut menjadi biaya per panggilan untuk setiap pelanggan. Gunakan ini untuk melacak penggunaan endpoint API, memberikan informasi untuk batas rate, dan menagih penggunaan API. Blueprint ini tersedia dalam package npm @dodopayments/ingestion-blueprints sebagai trackAPICall(), yang mengirimkan satu event per panggilan, dan createBatch(), yang mengantrekan event untuk volume request yang tinggi.

Kasus Penggunaan

API Gateway Blueprint sesuai untuk skenario berikut:

API-as-a-Service

Lacak panggilan per pelanggan pada platform API dan kenakan biaya berdasarkan jumlah panggilan.

Rate Limiting

Catat volume panggilan setiap pelanggan untuk memberikan informasi bagi batas rate berbasis penggunaan. Blueprint ini mencatat penggunaan, tetapi tidak menerapkan batas.

Performance Monitoring

Catat waktu respons dan status codes pada setiap event, sehingga tingkat error berada di samping data penagihan.

Multi-Tenant SaaS

Tagih pelanggan atas konsumsi API mereka di berbagai endpoint.
Setiap event memerlukan customer ID Dodo Payments dari pelanggan yang Anda tagih, yang dimulai dengan cus_. Simpan ID tersebut bersama record pengguna saat membuat pelanggan, lalu teruskan sebagai customerId.

Mulai Cepat

Untuk melacak panggilan API, instal package, buat meter, lalu kirim event untuk setiap panggilan.
1

Install the SDK

Instal package Dodo Payments Ingestion Blueprints:
2

Get Your API Keys

Buat API key Dodo Payments di Developer → API Keys dalam dashboard Dodo Payments, lalu simpan di environment variable DODO_PAYMENTS_API_KEY. Gunakan test mode key selama proses pengembangan. Test mode key hanya berfungsi dengan test_mode.
3

Create a Meter

Dalam dashboard Dodo Payments, buka Products → Meters, lalu klik Create Meter. Atur field berikut:
  • Meter Name: nama deskriptif, seperti API Calls.
  • Event Name: api_call, atau nama yang Anda pilih. Nama tersebut harus sama persis dengan eventName dalam kode Anda (case-sensitive).
  • Aggregation Type: Count, untuk menagih berdasarkan jumlah panggilan.
  • Measurement Unit: unit yang ditampilkan pada invoice, seperti calls.
Untuk hanya menghitung panggilan tertentu, aktifkan Enable Event Filtering dan tambahkan kondisi pada metadata keys seperti endpoint, method, atau status_code.
4

Track API Calls

Buat satu instance Ingestion dengan API key dan event name Anda, lalu pilih pattern: satu event per panggilan, batch untuk volume tinggi, atau middleware Express.js yang melacak setiap request. Dalam middleware, req.user berasal dari authentication middleware Anda, dan id harus berupa customer ID Dodo Payments. Request tanpa pengguna yang sudah sign in dikirim dengan customer ID anonymous, yang tidak cocok dengan pelanggan mana pun.

Konfigurasi

Konfigurasi Ingestion

Teruskan opsi berikut ke new Ingestion():
string
wajib
API key Dodo Payments Anda dari dashboard.
string
Mode environment: test_mode atau live_mode. Default-nya adalah test_mode. Sebaliknya, Dodo Payments SDK menggunakan default live_mode, jadi tetapkan live_mode secara eksplisit di production.
string
wajib
Event name yang cocok dengan Event Name meter Anda (case-sensitive). Setiap event yang dikirim instance ini akan menggunakan nama tersebut.

Opsi Pelacakan Panggilan API

Teruskan opsi berikut ke trackAPICall() dan batch.add():
string
wajib
Customer ID Dodo Payments yang akan ditagih untuk panggilan tersebut, misalnya cus_123.
object
Metadata opsional tentang panggilan API, seperti endpoint, method, status code, dan waktu respons. Setiap nilai harus berupa string, number, atau boolean. API menolak nested objects, arrays, dan nilai null.

Konfigurasi Batch

createBatch(ingestion, options) mengantrekan event di memory dan mengembalikan object dengan tiga method: add() mengantrekan event, flush() mengirim event yang diantrekan, dan cleanup() mengirim event tersebut serta menghentikan timer. Flush mengirimkan satu ingest request per event secara paralel.
number
Jumlah event yang diantrekan yang memicu flush segera. Default: 100.
number
Jumlah milidetik untuk menunggu setelah add() terakhir sebelum batch melakukan flush. Setiap add() akan memulai ulang timer. Default: 5000 (5 detik).

Praktik Terbaik

Gunakan Batching untuk Volume Tinggi: Untuk aplikasi dengan traffic tinggi, gunakan createBatch(). batch.add() segera mengembalikan hasil, sehingga pelacakan tidak menambah latensi pada request handler Anda.
Batch menyimpan event di memory hingga melakukan flush, dan tidak mencoba ulang event yang gagal dikirim. Flush otomatis mencatat error dengan console.error. Pemanggilan flush() atau cleanup() akan melemparnya.
Bersihkan Batch saat Shutdown: Panggil batch.cleanup() saat aplikasi Anda dimatikan, agar event yang tertunda di-flush dan tidak hilang.
Terakhir diubah pada 26 September 2026