Overview
What your dialers can draw from right now.
Live traffic
Caller-ID requests per minute from each client over the last hour. Updates every 5 seconds.
Coverage by state
Green bar = share of that state’s DIDs in batches that are live now.
DIDs by supplier
Recent denied requests
Requests the API refused because the IP isn’t on a client’s list, is blocked, or sent no key. Block an address or add it to a client from here.
Overview
Your caller-ID pool and today’s traffic. This account can view everything here but can’t change settings; contact support for changes.
Live traffic
Caller-ID requests per minute from your dialers over the last hour.
Your batches
Allowed dialer IPs
Requests from any other address are refused.
Batches
Each batch runs live for its run period, rests, then comes back on its own. New batches start paused: activate them now, or schedule a start time. A daily limit of 0 means no limit; once a DID reaches its limit it sits out until midnight.
New batch
DIDs
The caller IDs in your batches. Click a column heading to sort.
Upload, move, switch off or delete numbers. Files can be .txt, .csv or .xlsx; any column holding 10- or 11-digit US numbers is picked up, and the leading 1 is dropped.
Bulk upload
Bulk delete
Every number in the file or list is removed from all batches.
| DID | State | Batch | Supplier | On | Today | Uses | Last used |
|---|
Clients & IP access
Each client gets an API key, a list of IPs allowed to use it, and the batches it draws caller IDs from. A client with no IPs listed can’t make requests.
New client
Clients
Unauthorized access attempts
IPs that tried the caller-ID API without being on a client’s list. Each new address raises an alert on the dashboard and in Discord.
Blocked IPs
Blocked addresses can’t reach the API or this admin page, even if a client allows them.
Rejections
Calls the far end refused (SIP 603, 607 or 608, or hangup cause 21), reported by your dial plan when a call doesn’t connect. Rates are worked out against the caller IDs the portal handed out. A DID that keeps getting rejected usually has a reputation problem, so check its registration with Hiya, First Orion and the other registries before using it again.
Flagged DIDs
0 selected| DID | State | Batch | Clients | Rejections | SIP codes | Reputation | Last rejection | On |
|---|
Call log
Every failed call your dial plan reported: who dialed what, from which caller ID, and what the carrier sent back. Click a heading to sort.
| Time | Client | Dialed | Caller ID | Match | Batch | Route | Status | SIP | Cause | Caller ID rejections | Lead |
|---|
By day
Failure codes
By route
By batch
By supplier
DIDs with the most rejections
0 selected| DID | State | Batch | Calls | Rejected | Rate | On |
|---|
Usage
Caller IDs handed out to each client, requests that got no caller ID, and requests refused by a client’s rate limit. Days run midnight to midnight in the portal’s time zone ().
Totals
By month
By day
Alerts
The portal checks these every minute. Every alert shows on the dashboard until someone acknowledges it, and also posts to Discord when a webhook is set. Each alert repeats at most once per cooldown period.
Open alerts
Recent alerts
Staff & audit log
Who can sign in to the portal, what each role can do, and a record of every change.
Staff accounts
What each role can do
| Role | View everything | Batches, DIDs, blocking IPs, acknowledging alerts | Clients, API keys, signups, alert settings | Staff accounts |
|---|---|---|---|---|
| Owner | Yes | Yes | Yes | Yes |
| Admin | Yes | Yes | Yes | No |
| NOC | Yes (API keys hidden) | Yes | No | No |
| Viewer | Yes (API keys hidden) | No | No | No |
| Client | Only its own DIDs, calls and usage | No | No | No |
Audit log
| When | Who | Role | Action | On | Details | IP |
|---|
Dialer setup
Point VICIdial’s carrier dial plan at the portal so every outbound call gets a caller ID from the client’s live batches.
1. API request
Returns just the 10-digit DID, or an empty 404 when nothing is live (the call then keeps the campaign’s default caller ID). Add &format=json to see the match details.
2. VICIdial carrier dial plan
Admin → Carriers → your carrier → Dialplan Entry. The lines after Dial() report how each call went, which feeds the Rejections page and its call log. To record the SIP code (603, 608…), set storesipcause=yes under [general] in sip.conf and reload. Without it the SIP column stays empty and only the hangup cause is stored.
If the portal returns nothing, the call hangs up. To dial with the campaign’s default caller ID instead, change the Hangup() under invalid to Goto(next).
3. Try it
4. Monitoring
Point Uptime Kuma (or any uptime checker) at the health address. It returns 503 if the portal can’t reach its database. Prometheus or Grafana Agent can scrape the metrics address; allow your monitoring server with METRICS_IPS or METRICS_TOKEN.
A client that goes over its requests-per-second limit gets HTTP 429 with an empty body, so the dial plan treats it like no caller ID.