Kode Error & Penanganan
Memahami dan menangani error API
Format Respons Error
Semua respons error menggunakan format standar:
{
"error": {
"code": "ERROR_CODE",
"message": "Pesan error yang mudah dibaca",
"details": "Konteks tambahan (opsional)"
}
} 💡 Gunakan error.code sebagai kondisi percabangan yang stabil (message dapat berubah)
Kode Status HTTP
200 OK
Permintaan berhasil
201 Created
Pembuatan resource berhasil
400 Bad Request
Parameter permintaan tidak valid
{
"code": "INVALID_REQUEST",
"message": "Format permintaan tidak valid"
} 401 Unauthorized
Belum terautentikasi atau API Key tidak valid
{
"code": "UNAUTHORIZED",
"message": "API key tidak valid atau telah kedaluwarsa"
} 403 Forbidden
Saldo akun tidak mencukupi atau tidak memiliki izin
{
"code": "INSUFFICIENT_BALANCE",
"message": "Saldo akun tidak mencukupi"
} 404 Not Found
Resource tidak ditemukan
{
"code": "ORDER_NOT_FOUND",
"message": "Pesanan tidak ditemukan"
} 409 Conflict
Konflik resource
{
"code": "ADDRESS_EXISTS",
"message": "Alamat sudah ada"
} 429 Too Many Requests
Melebihi batas rate limit API Key
{
"code": "RATE_LIMITED",
"message": "Telah melebihi batas rate limit"
} 500 Internal Server Error
Error server internal
{
"code": "INTERNAL_ERROR",
"message": "Terjadi error yang tidak terduga"
} 503 Service Unavailable
Layanan sementara tidak tersedia (sedang maintenance)
{
"code": "SERVICE_UNAVAILABLE",
"message": "Layanan sementara tidak tersedia"
} Kode Error Umum
| Error Code | Status | Description | Solution |
|---|---|---|---|
| UNAUTHORIZED | 401 | API Key tidak valid, kedaluwarsa, atau telah dicabut | Periksa apakah API Key benar, buat baru jika diperlukan |
| INSUFFICIENT_BALANCE | 403 | Saldo akun tidak mencukupi | Isi ulang akun |
| INVALID_ADDRESS | 400 | Format alamat TRON tidak valid | Periksa apakah alamat adalah alamat TRON yang valid (dimulai dengan T) |
| INVALID_ENERGY_AMOUNT | 400 | Jumlah energi tidak valid | Jumlah energi harus berupa bilangan bulat positif, disarankan 65000 untuk transfer USDT |
| INVALID_DURATION | 400 | Durasi sewa tidak valid | Gunakan durasi yang valid: 1H, 1D, 3D, 7D, 14D, 30D |
| ORDER_NOT_FOUND | 404 | Pesanan tidak ada | Periksa apakah ID pesanan benar |
| ADDRESS_EXISTS | 409 | Alamat sudah ada | Periksa apakah alamat sudah ditambahkan, atau gunakan alamat yang sudah ada |
| RATE_LIMITED | 429 | Melebihi batas rate limit API Key (saat ini hanya berlaku untuk POST /v1/wallet/recharges) | Implementasikan retry dengan exponential backoff, atau kurangi frekuensi panggilan |
Cara Penanganan
| Error | Handling |
|---|---|
| 401 UNAUTHORIZED | Periksa/rotasi API Key |
| 403 INSUFFICIENT_BALANCE | Isi ulang atau kurangi jumlah permintaan |
| 409 ADDRESS_EXISTS | Beralih ke query/penanganan idempoten |
| 429 RATE_LIMITED | Retry dengan backoff (ikuti Retry-After jika ada, jika tidak gunakan exponential backoff) |
| 5xx | Retry + log konteks permintaan |
Panduan Retry
- • maksimum retry: 3 kali
- • backoff: eksponensial (1s, 2s, 4s...)
- • hanya retry 429/5xx
- • jangan retry 4xx (error sisi client)