1. Reference
CallerAPI Documentation
  • Quickstart
  • Use cases
    • For carriers (MNOs/MVNOs)
    • CPaaS platforms
    • Cloud communications providers
    • SIP trunking providers
    • PBX/Cloud PBX
    • UCaaS vendors
  • Account
    • Balance and email
      GET
  • Spam protection
    • Daily spam reports
      • Webhook
        • Subscribe to daily reports
        • Unsubscribe from daily reports
        • List webhook subscriptions
        • Manual dispatch of reports
        • Test webhook
      • REST
        • Fetch daily spam reports
    • Spam score + HLR
      GET
    • 15 days spam CSV snapshot
      GET
  • Mobile SDK
    • Get started
    • Quickstart
      • What you get
      • Get your keys
      • Android
      • iOS
      • Flutter
      • React Native
      • Check it works
    • Call screening
      • What each platform can do
      • Android call screening
      • iOS prerequisites
      • iOS add the extension
      • iOS test on device
    • Reference
      • Methods
      • Errors
      • Limits and billing
      • Troubleshooting
  • Data partners
    • Partner tems & docs
    • Upload spam reports
      POST
    • Upload contacts
      POST
  • Fraud prevention
    • Ported date
      GET
    • Porting history
      GET
    • Online presence
      GET
    • KYC user identity
      POST
  • Schemas
    • Spam protection
      • Spam score request
      • Business info
      • Carrier info
      • Complaint (without number)
      • Daily spam reports request
      • Complaint (with phone)
  1. Reference

Limits and billing

What you are billed for#

Devices with call blocking enabled, not lookups.
The count is the number of distinct devices that reported in during a calendar month with the feature turned on. One device that runs a thousand lookups counts once. A device that runs none still counts, if it reported in.
setFeatureEnabled(false) takes a device out of the count. Use it when a user turns your caller ID feature off, so you do not pay for them.

Sandbox and active#

Every app you create starts in sandbox.
SandboxActive
PriceFreeAgreed per device
Device cap200 in a calendar monthThe cap you agreed
Lookup dataThe same real dataThe same real data
Rate limitsThe sameThe same
How you get itSelf-service, right awayContact us
Sandbox is not a test mode with fake answers. Lookups return the same data as production. The only difference is the cap.

What happens at the cap#

Devices already counted this month keep working. New devices are refused with 402 and sandbox_limit_reached.
The failure looks strange in the field. Your existing testers are fine while every new install fails, so check your device count before you debug anything else.

Going live#

Contact us to agree a price. We switch your app to active and set your cap.
No code changes. Nothing in your app refers to sandbox or active.

Rate limits#

Per device unless stated. Hitting one returns 429 with a Retry-After header.
WhatLimit
Lookups120 per minute
Authentication5 per minute, and 10 per minute per IP address
Usage report6 per hour
Block list download5 per minute
The lookup limit allows a burst of call screening while making bulk downloads of the data impractical. Normal use never reaches it.
If you hit the authentication limit during development, you are probably restarting the app in a loop. A session lasts 30 minutes, so a normal app authenticates rarely.

Other limits#

WhatLimit
Apps per account, self-service50
Session length30 minutes, refreshed by the SDK
Default usage report interval24 hours
Lookup timeout2500 ms, configurable on Android and iOS
Background transfer timeout30000 ms, configurable on Android and iOS

Where to read your usage#

https://callerapi.com/dashboard/sdk-setup. Select your app. The card shows devices this month, the platform we detected, and the SDK version you are running.

Why your dashboard can read zero while lookups work#

On Android, lookups need SDK_KEY and SDK_SECRET. Device counting needs CLIENT_KEY as well.
Leave out CLIENT_KEY and everything works, while the dashboard stays empty and you are billed for nothing. That sounds good until an audit. Add all three.
On iOS, add the extension usage report by calling bootstrap with your lcidClientKey. See iOS add the extension.

Keeping the count honest for users who never open your app#

Usage reports normally ride along with app launches. A user who installs your app and never opens it again still uses the feature. The extension and the screening service run without your app.
Two things keep that reported:
Android: nothing to do. The SDK schedules the report itself.
iOS: pass heartbeatTaskIdentifier to bootstrap, and list it in BGTaskSchedulerPermittedIdentifiers in your Info.plist. Without it, reporting stops when the user stops opening your app.

Which region your data comes from#

Every SDK talks to https://api.callerapi.com by default. Live Caller ID on iOS 18 talks to pir.callerapi.com and pat.callerapi.com.
Contact us if you need a regional endpoint, or hosts reserved for your company. On Android you can then point the SDK with the API_BASE manifest entry, and on iOS with apiBase in CallerAPIConfig.
Modified at 2026-07-29 23:18:55
Previous
Errors
Next
Troubleshooting
Built with