Skip to content

Current account balance.

GET  /api/v1/user/balance  · Permission: balance.read

Terminal window
curl https://restlink23telecom.com/api/v1/user/balance \
-H "X-API-Key: $API_KEY"
200 OK
{
"balance": 1250.50,
"currency": "EUR",
"updated": "2026.02.13 10:15:00"
}

When the balance is zero or negative, the response additionally contains "credit_blocked": true — SMS sending is blocked until you top up.

Every send request is pre-checked against your balance. If it would exceed the available funds you get 402 INSUFFICIENT_BALANCE with the estimated cost breakdown:

402 Payment Required
{
"status": false,
"error_code": "INSUFFICIENT_BALANCE",
"description": "Insufficient balance",
"balance": 0.42,
"estimated_cost": 1.07,
"currency": "EUR",
"total_recipients": 100,
"billable_recipients": 98,
"segments": 2
}

Balance, pricing and payments are served from a background-refreshed cache. If the cache is unavailable, the API still returns HTTP 200 but flags degradation via response headers:

HeaderValuesMeaning
X-Sms-Gateway-Statuspartial, unavailableData quality indicator
X-Sms-Gateway-Reasoncache_disabled, cache_miss_refresh_failedMachine-readable reason

These headers are absent on healthy responses. Degraded balance responses look like {"balance": 0, "currency": "EUR", "unavailable": true, "reason": "…"} — check the unavailable flag before alerting on a zero balance.

Poll balance once every few minutes at most (the cache refreshes on its own cadence), alert on credit_blocked: true, and ignore zero-balance readings that carry the unavailable: true flag.