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
    • Voice firewall
      • Get started
      • Quickstart
        • What you get
        • Before you start
        • Test with a recording
        • Connect your switch
        • Switch notes
        • Twilio and Telnyx
        • Send text instead of audio
      • Verdicts
        • Read a verdict
        • What to do with a verdict
        • Block a caller
        • Events and webhooks
      • Honeypot
        • Hand a call over
        • Audio, events, and limits
      • Reference
        • Endpoints
        • Errors
        • Limits and thresholds
        • Production checklist
      • REST
        • What this deployment can do
        • List the verdict categories
        • List the honeypot personas
        • Score a transcript or a recording
        • List your recent sessions
        • Get one session with verdict and intel
        • Twilio voice URL for a screened number
        • Preview the Twilio TwiML
        • Telnyx voice URL for a screened number
        • Twilio voice URL for a honeypot number
        • Telnyx voice URL for a honeypot number
      • WebSocket
        • Live scam filter stream
        • Honeypot stream
    • 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
    • 15 days spam CSV snapshot
      GET
    • Spam score + HLR
      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
    • Upload contacts
  • Fraud prevention
    • Ported date
    • Porting history
    • Online presence
    • KYC user identity
  • Business Caller ID
    • Get started
    • Quickstart
      • Announce a call
      • Verify at INVITE
      • What you get
    • Verdicts
      • Show the name and logo
      • Read a verdict
    • REST
      • Verify the calling number
      • Fetch the logo
      • Announce a call
  • DID monitoring
    • Get started
    • Reference
      • Statuses and labels
      • Webhooks
      • Billing and limits
      • Errors
    • REST
      • Submit numbers
      • List number status
      • Read one number
      • Remove a number
      • Read the check schedule
      • Set the check schedule
      • Save the webhook URL
      • Read the webhook
      • Delete the webhook
      • Send a test event
      • Rotate the webhook secret
    • Number flagged
    • Number cleared
  • Signer reputation by SPC
    GET
  • Signers ranked by score
    GET
  • Schemas
    • Spam protection
      • Spam score request
      • Business info
      • Carrier info
      • Complaint (without number)
      • Daily spam reports request
      • Complaint (with phone)
    • Signer
    • SubmitResponse
    • Monitoring
    • Number
    • NumberListResponse
    • OneNumberResponse
    • ScheduleResponse
    • WebhookWriteResponse
    • WebhookReadResponse
    • FlaggedEvent
    • ClearedEvent
    • EventData
    • Error
    • AuthError
    • ScheduleRequest
    • WebhookRequest
    • RemovedResponse
    • WebhookTestResponse
  1. Reference

Errors

Organized by what you see, not by cause.

HTTP endpoints#

StatusMeaningWhat to do
400Bad input. The message says what is wrong.Fix the request. It used no credits.
401Missing or wrong API key.Send your key in the X-Auth header.
403The plan does not allow the request. The number limit is full, or the plan is Free and the request is about webhooks.Remove numbers, or change to a larger plan.
404The number is not monitored, no webhook is saved, or no numbers were submitted yet.Check the number and the path. Submit numbers before you read the schedule.
429More than 60 write requests in one minute.Wait one minute. Then send the request again.
502CallerAPI could not connect to your webhook endpoint, or the endpoint did not reply to the test event in 10 seconds.Make your endpoint reply with a 2xx status in 10 seconds.
503Monitoring is not available at this time.Send the request again later.
Every error body is {"status": "error", "message": "..."}. A 401 for a missing or wrong key is different. Its body is {"error": "Missing API key"} or {"error": "Invalid API key"}.

Error messages#

StatusmessageCause
400invalid request bodyThe body is not valid JSON, or a field has the wrong type.
400send at most 100,000 numbers per callToo many numbers in one submit request. Split the list.
400send the number in E.164, like +14155552671The {phone} in the path is not a valid E.164 number.
400unknown status filterstatus is not pending, clean, flagged, or unknown.
400unknown listlist_id is not a list of this account.
400this cursor belongs to a different filterYou changed status or list_id between pages. Start again without cursor.
400use an https URL on port 443 or 8443 that points at the public internetThe webhook URL does not follow the rules. See the Webhooks page.
400choose every N hours or fixed timesmode is not interval or times.
400choose 15 or 30 minutes, or 1, 2, 3, 4, 6, 8, 12 or 24 hoursinterval_minutes is not an allowed value.
400choose 1 to 24 different timestimes is empty, has more than 24 values, or has the same time two times.
400use times like 09:00A time is not in the HH:MM format.
400choose at least one dayweekdays is empty, has a value that is not 1 to 7, or has the same day two times.
400the end time has to be after the startend is the same as start or before it.
400unknown timezonetimezone is not an IANA time zone.
400no check falls between the start and end time with this interval. Widen the hours or pick a shorter intervalNo check fits between start and end.
400no check falls in the next weekThe schedule has no check in the next 7 days.
401missing accountThe account for this key was not found. Contact support.
403this plan monitors at most N numbersThe submit request goes over the number limit. CallerAPI added no numbers. See the Billing and limits page.
403webhooks are not included on the free planThe account is on the Free plan.
404not foundThe number is not monitored, or no numbers were submitted yet.
404no webhook is savedSave a webhook URL first.
429too many writes. Wait a minute and try again.More than 60 POST, PUT, or DELETE requests in one minute.
502the endpoint did not respondThe connection to your endpoint failed, or it did not reply in 10 seconds.
503monitoring unavailableA temporary problem on the CallerAPI side.

Invalid numbers#

A submit request does not fail for an invalid number. CallerAPI puts the number in invalid with a reason and adds the other numbers.
reasonCause
malformedCallerAPI cannot read the input as a phone number.
invalid_numberThe number is not valid for its country.
unknown_countryThe input has no + and default_country is missing, or the country code is not known.
impossible_lengthThe number has too many or too few digits.
too_long_inputThe input is longer than 64 characters.
not_in_planThe area code or exchange is not in the numbering plan.
service_codeThe area code or exchange is a service code, like 911 or 411. A service code cannot make calls.
fictionalThe number is in the 555-0100 to 555-0199 range. This range is for fiction and examples.
unallocatedThe area code and exchange are not assigned to a carrier.
The input field shows your input. CallerAPI cuts it at 64 characters.

Webhook#

What you seeCause
No events at allNo status changed. Webhooks send only number.flagged and number.cleared. Send GET /api/did-monitoring/v1/numbers to see all results.
No event for a number that became cleanThe number was not flagged before the check, or it went from flagged to unknown before clean.
The same event two timesDelivery is at least one time. Use id to find duplicates.
Events out of orderRetries can change the order. Use data.checked_at.
Signature does not matchYou used the parsed JSON instead of the raw body, you did not use the full secret with whsec_, or you used the old secret more than 24 hours after a rotation.
active is falseCallerAPI turned off the webhook after 50 failed attempts in a row, or after 3 days of failures. Fix the endpoint and save the URL again.
Save returns 400The URL is not https, the port is not 443 or 8443, or the host resolves to a private address.

Checks#

What you seeCause
Numbers stay pendingThe first pass is running, at about 80 numbers a minute. Or the account has no credits.
state is pausedThe account has no credits, or the schedule uses more credits than the plan includes. See the Billing and limits page.
state is offenabled is false. Send PUT /api/did-monitoring/v1/schedule with "enabled": true.
Status is unknownThe check did not finish. The next pass checks the number again. The check used 1 credit.
Modified at 2026-10-29 10:43:45
Previous
Billing and limits
Next
Submit numbers
Built with