1. DID monitoring
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
      POST
    • Upload contacts
      POST
  • 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. DID monitoring

Get started

DID monitoring checks your own phone numbers for spam and scam flags. You submit your numbers one time. CallerAPI checks each number on a schedule and keeps the last result. When a number becomes flagged, or becomes clean again, CallerAPI sends an event to your webhook.
You do not run the checks. You do not call an endpoint for each number. You read the results when you need them, and you get an event when a result changes.

What you need#

1.
Your API key from the dashboard. It is the same key as the rest of the CallerAPI API.
2.
Credits on the account. Each check of a number uses 1 credit. See the Billing and limits page.
3.
For webhooks, a paid plan and an HTTPS URL on port 443 or 8443. Webhooks are not available on the Free plan.

Authentication#

Send your API key in the X-Auth header on every request.
X-Auth: YOUR_API_KEY
Base URL: https://api.callerapi.com/api/did-monitoring/v1
Every JSON response has "status": "success" with data, or "status": "error" with a message. A missing or wrong key returns 401 with an error field. See the Errors page.

Quick start#

Step 1: submit your numbers#

Send your numbers in E.164 format. You can send at most 100,000 numbers in one request.
{
  "status": "success",
  "data": {
    "added": 1,
    "duplicates": 0,
    "invalid": [],
    "monitoring": {
      "state": "scheduled",
      "schedule": "Every 24 hours",
      "next_check_at": "2026-10-30T00:00:00Z"
    }
  }
}
Each new number starts as pending. CallerAPI checks new numbers in a first pass, at about 80 numbers a minute. After the first pass, CallerAPI checks each number one time a day. If you set a schedule in the dashboard before, CallerAPI keeps that schedule. To change the schedule, see Step 4.

Step 2: read the results#

This request returns all your numbers with the result of the last check. It is the full result set. Webhooks send only changes.
{
  "status": "success",
  "data": {
    "counts": {"total": 1, "flagged": 1, "clean": 0, "pending": 0, "unknown": 0},
    "numbers": [
      {
        "phone": "+13058901598",
        "status": "flagged",
        "label": "Spam or scam risk",
        "status_changed_at": "2026-10-29T08:02:11Z",
        "last_checked_at": "2026-10-29T08:02:11Z",
        "next_check_at": "2026-10-30T00:00:00Z"
      }
    ],
    "next_cursor": null
  }
}
When next_cursor is not null, send it as cursor to get the next page. Add status=flagged to get only the flagged numbers. This request does not use credits.
The Statuses and labels page tells you what each status means.

Step 3: add a webhook#

Save one HTTPS URL for the account.
{
  "status": "success",
  "data": {
    "url": "https://hooks.example.com/callerapi",
    "active": true,
    "secret": "whsec_REPLACE_WITH_YOUR_SECRET"
  }
}
Keep the secret in a safe place. CallerAPI shows it one time only. Use it to check the signature of each event.
Send a test event to your URL:
The response gives the HTTP status that your endpoint returned. The Webhooks page shows the events, the headers, and the signature check.

Step 4: set the check schedule (optional)#

The default is one check a day, every day, in UTC. To check every hour, send this request:
The response contains a credit estimate for one month. More checks use more credits. See the Billing and limits page.

Endpoints#

MethodPathPurpose
POST/numbersSubmit numbers
GET/numbersList number status
GET/numbers/{phone}Read one number
DELETE/numbers/{phone}Remove a number
GET/scheduleRead the check schedule
PUT/scheduleSet the check schedule
PUT/webhookSave the webhook URL
GET/webhookRead the webhook
DELETE/webhookDelete the webhook
POST/webhook/testSend a test event
POST/webhook/rotate-secretRotate the webhook secret
All paths start with /api/did-monitoring/v1. Each endpoint page has the request fields, the response schema, and examples.

Where to go when something breaks#

The Errors page lists what you see and what causes it. Read it before you open a support ticket.
Modified at 2026-10-29 10:42:45
Previous
Announce a call
Next
Statuses and labels
Built with