How credits work
Every API call consumes credits from your balance. Credits never expire.
| Endpoint | Credits |
|---|---|
POST /v1/email/validate |
1 |
POST /v1/phone/validate (offline) |
1 |
POST /v1/phone/validate (HLR=true) |
5 |
POST /v1/ip/intel |
1 |
POST /v1/verify |
3 |
POST /v1/batch |
1 per row (same as per-endpoint) |
Plans
| Plan | Credits | Price | Notes |
|---|---|---|---|
| Free | 1,000 / month | $0 | Refreshes monthly |
| Pay-as-you-go 10k | 10,000 | $5 | One-time top-up |
| Pay-as-you-go 100k | 100,000 | $40 | One-time top-up |
| Pay-as-you-go 500k | 500,000 | $150 | One-time top-up |
| Subscription 50k | 50,000 / month | $20/mo | Auto-renews |
| Subscription 250k | 250,000 / month | $80/mo | Auto-renews |
| Subscription 1M | 1,000,000 / month | $250/mo | Auto-renews |
Checking balance
curl https://api.checkharbor.com/v1/ping \
-H "X-Api-Key: chk_live_..."
{ "ok": true, "credits_remaining": 4820 }
Insufficient credits
When your balance hits zero, the API returns:
{
"error": {
"code": "insufficient_credits",
"message": "Not enough credits. Top up at console.checkharbor.com/billing."
}
}
HTTP status: 402
Rate limits
The API enforces per-key rate limits. When exceeded:
{
"error": {
"code": "rate_limited",
"message": "Too many requests. Retry after 1 second."
}
}
HTTP status: 429