API Reference — Events Ingestion
Dokumentasi API lengkap dengan contoh dan kode respons.
Event Structure
Required Fields
Required Fields
string
wajib
Pengenal unik untuk event, digunakan untuk mendeteksi event duplikat saat melakukan retry. Turunkan ID ini dari tindakan yang dilakukan, misalnya customer ID + tindakan + timestamp, sehingga event yang di-retry tetap memiliki ID yang sama. UUID acak baru pada setiap retry dapat menyebabkan event yang sama dihitung dua kali.
string
wajib
Customer ID Dodo Payments. Harus merupakan customer yang valid dan sudah ada.
string
wajib
Jenis event yang cocok dengan nama event meter Anda (peka huruf besar-kecil). Contoh:
api.call, image.generated.Optional Fields
Optional Fields
string
Timestamp ISO 8601 (UTC). Jika tidak disertakan, nilainya secara default adalah waktu server saat ini. Sertakan untuk penagihan yang akurat pada event yang tertunda atau batch. Timestamp yang lebih lama dari 1 jam atau lebih dari 5 menit di masa mendatang akan ditolak.
object
Properti tambahan untuk agregasi dan pemfilteran. Hingga 50 kunci; setiap kunci dapat memiliki panjang hingga 100 karakter dan setiap nilai hingga 500 karakter.
- Nilai numerik:
bytes,tokens,duration_ms - Filter:
endpoint,method,quality
Sending Events
Ingestion Blueprints
Ready-made event patterns for common use cases. Start with a proven blueprint instead of building from scratch.LLM Blueprint
Track AI token usage across OpenAI, Anthropic, Groq, Gemini, and more.
API Gateway Blueprint
Meter API requests with endpoint filtering and rate limiting support.
Object Storage Blueprint
Track file uploads and storage consumption for cloud storage services.
Stream Blueprint
Measure streaming bandwidth for video, audio, and real-time data.
Time Range Blueprint
Bill by elapsed time for serverless functions and compute instances.
View All Blueprints
See all available blueprints with detailed implementation guides.
Best Practices
Use Unique Event IDs
Use Unique Event IDs
Gunakan ID deterministik untuk mencegah duplikasi:
${customerId}_${action}_${timestamp}.Implement Retries
Implement Retries
Lakukan retry pada error 5xx dan
429 dengan exponential backoff. Jangan melakukan retry pada error 4xx lainnya.Include Timestamps
Include Timestamps
Jangan sertakan timestamp untuk event real-time. Sertakan timestamp untuk event yang tertunda atau batch agar akurat.
Monitor Delivery
Monitor Delivery
Track success rates and queue failed events for retry.
Troubleshooting
Events not appearing
Events not appearing
- Nama event harus sama persis dengan meter (peka huruf besar-kecil)
- Customer ID harus ada di akun Anda
- Periksa apakah filter meter tidak mengecualikan event
- Pastikan timestamp masih baru
Authentication errors (401)
Authentication errors (401)
Pastikan API key sudah benar dan gunakan format:
Bearer YOUR_API_KEY.Validation errors (400)
Validation errors (400)
Pastikan semua field yang wajib sudah ada:
event_id, customer_id, event_name.Metadata not aggregating
Metadata not aggregating
- Key metadata harus sama persis dengan “Over Property” pada meter
- Gunakan angka, bukan string:
tokens: 150bukantokens: "150"
Next Steps
Create Meters
Define how your events are aggregated into billable quantities with filters and aggregation functions.
Ingestion Blueprints
Use ready-made blueprints for common use cases like LLM tracking, API gateways, and storage.
Complete Tutorial
Build a full AI image generator with usage-based billing from scratch.
API Reference
Complete API documentation with all parameters, response codes, and interactive testing.