Skip to content

Number KPIs

Track telephone number allocation, utilisation, and distribution across your platform. These KPIs provide crucial insights for capacity planning and number type analysis.

Returns total number counts along with customer allocation statistics.

Endpoint

GET /backend/kpi/numbers/

Example Request

Terminal window
curl -X GET "https://companyname.callstats.net/backend/kpi/numbers/" \
-H "Authorization: Bearer YOUR_KPI_KEY"

Example Response

[
{
"number_customer_count": 2150,
"number_count": 5847
}
]

Groups numbers by their current operational status.

Endpoint

GET /backend/kpi/numbers/byStatus/

Example Request

Terminal window
curl -X GET "https://companyname.callstats.net/backend/kpi/numbers/byStatus/" \
-H "Authorization: Bearer YOUR_KPI_KEY"

Example Response

[
{
"number_status": "Active",
"number_customer_count": 2050,
"number_count": 5234
},
{
"number_status": "Suspended",
"number_customer_count": 45,
"number_count": 85
},
{
"number_status": "Dropped",
"number_customer_count": 0,
"number_count": 528
}
]

Groups numbers by dealer for inventory tracking.

Endpoint

GET /backend/kpi/numbers/byDealer/

Example Request

Terminal window
curl -X GET "https://companyname.callstats.net/backend/kpi/numbers/byDealer/" \
-H "Authorization: Bearer YOUR_KPI_KEY"

Example Response

[
{
"number_dealer": "DEALER01",
"number_customer_count": 750,
"number_count": 1850
},
{
"number_dealer": "DEALER02",
"number_customer_count": 500,
"number_count": 1250
},
{
"number_dealer": "DIRECT",
"number_customer_count": 900,
"number_count": 2747
}
]

Categorises numbers by their type (geographic, non-geographic, mobile, etc.).

Endpoint

GET /backend/kpi/numbers/byType/

Example Request

Terminal window
curl -X GET "https://companyname.callstats.net/backend/kpi/numbers/byType/" \
-H "Authorization: Bearer YOUR_KPI_KEY"

Example Response

[
{
"number_type": "Geographic",
"number_customer_count": 1500,
"number_count": 3500
},
{
"number_type": "Non-Geographic",
"number_customer_count": 850,
"number_count": 1847
},
{
"number_type": "Mobile",
"number_customer_count": 200,
"number_count": 500
}
]

Shows numbers added (createdByPeriod) or dropped (droppedByPeriod) over time. Use the interval parameter to choose the bucket size (day, week, month, quarter, year; defaults to month), and add further dimensions with groupBy if you want the series split by type or dealer.

Endpoint

GET /backend/kpi/numbers/createdByPeriod/
GET /backend/kpi/numbers/droppedByPeriod/

Example Request

Terminal window
curl -X GET "https://companyname.callstats.net/backend/kpi/numbers/droppedByPeriod/?interval=month&groupBy=type" \
-H "Authorization: Bearer YOUR_KPI_KEY"

Example Response

[
{
"number_period": "2026-05",
"number_type": "Geographic",
"number_customer_count": 12,
"number_count": 31
},
{
"number_period": "2026-06",
"number_type": "Geographic",
"number_customer_count": 9,
"number_count": 24
}
]

Groups numbers by their Date Sold, the date recorded against the number rather than the date it was created on the platform. Use it for sales reporting, where the question is when a number was sold rather than when it was set up.

Endpoint

GET /backend/kpi/numbers/soldByPeriod/

Example Request

Terminal window
curl -X GET "https://companyname.callstats.net/backend/kpi/numbers/soldByPeriod/?interval=month&groupBy=dealer" \
-H "Authorization: Bearer YOUR_KPI_KEY"

Numbers with no Date Sold are left out of this series entirely, so its total can be lower than createdByPeriod over the same range. Where you want every number, group on createdByPeriod instead.

This is a different question from droppedByPeriod, which uses the activity stamp recorded when the number was dropped rather than an operator-chosen date.

Refine your results using these filter parameters:

ParameterTypeDescriptionExample
activebooleanInclude only active numbersactive=true
excludeDroppedbooleanExclude dropped numbers (alias for active)excludeDropped=true
droppedbooleanInclude only dropped numbersdropped=true
dealerCodestringFilter by specific dealer codedealerCode=DEALER01
numberTypestringFilter by number typenumberType=geographic
numberTypeIDinteger listFilter by one or more number type IDsnumberTypeID=3,4
numberTypeGroupstringFilter by number type group namenumberTypeGroup=Geographic
statusstringFilter by number status namestatus=Live
statusIDinteger listFilter by one or more status IDsstatusID=1,2
dealerstringFilter by dealer namedealer=Direct
soldbooleanInclude only numbers with a Date Soldsold=true
minSoldDatedateNumbers sold on or after this dateminSoldDate=2026-01-01
maxSoldDatedateNumbers sold on or before this datemaxSoldDate=2026-01-31

Active Numbers by Type

Terminal window
curl -X GET "https://companyname.callstats.net/backend/kpi/numbers/byType/?active=true" \
-H "Authorization: Bearer YOUR_KPI_KEY"

Geographic Numbers Only

Terminal window
curl -X GET "https://companyname.callstats.net/backend/kpi/numbers/?numberType=geographic" \
-H "Authorization: Bearer YOUR_KPI_KEY"

Unassigned Numbers

Terminal window
curl -X GET "https://companyname.callstats.net/backend/kpi/numbers/?dealerCode=" \
-H "Authorization: Bearer YOUR_KPI_KEY"

Dropped Numbers by Dealer

Terminal window
curl -X GET "https://companyname.callstats.net/backend/kpi/numbers/byDealer/?dropped=true" \
-H "Authorization: Bearer YOUR_KPI_KEY"

Monitor number allocation and availability:

Terminal window
# Check overall number availability
curl -X GET "https://companyname.callstats.net/backend/kpi/numbers/" \
-H "Authorization: Bearer YOUR_KPI_KEY"
# Analyse by number type for specific capacity
curl -X GET "https://companyname.callstats.net/backend/kpi/numbers/byType/" \
-H "Authorization: Bearer YOUR_KPI_KEY"

Track number allocation and availability:

Terminal window
# Overall allocation by type
curl -X GET "https://companyname.callstats.net/backend/kpi/numbers/byType/" \
-H "Authorization: Bearer YOUR_KPI_KEY"
# Active numbers only
curl -X GET "https://companyname.callstats.net/backend/kpi/numbers/?active=true" \
-H "Authorization: Bearer YOUR_KPI_KEY"

Understand distribution and usage patterns:

Terminal window
# All number types
curl -X GET "https://companyname.callstats.net/backend/kpi/numbers/byType/" \
-H "Authorization: Bearer YOUR_KPI_KEY"
# Active non-geographic numbers
curl -X GET "https://companyname.callstats.net/backend/kpi/numbers/?numberType=non_geographic&active=true" \
-H "Authorization: Bearer YOUR_KPI_KEY"

Track dropped numbers to identify issues:

Terminal window
# Dropped numbers by type
curl -X GET "https://companyname.callstats.net/backend/kpi/numbers/byType/?dropped=true" \
-H "Authorization: Bearer YOUR_KPI_KEY"
# All dropped numbers
curl -X GET "https://companyname.callstats.net/backend/kpi/numbers/?dropped=true" \
-H "Authorization: Bearer YOUR_KPI_KEY"
  1. Inventory Monitoring - Set alerts for low number availability by type
  2. Utilisation Tracking - Monitor the ratio of allocated to available numbers
  3. Type Distribution - Ensure balanced inventory across number types based on demand
  4. Churn Prevention - Track dropped number patterns to identify and address issues early

Common number types in the UK market:

  • Geographic - Local area numbers (01/02 ranges)
  • Non-Geographic - National rate, freephone, and premium numbers (03/08/09 ranges)
  • Mobile - Mobile numbers (07 range)
  • Special Services - Short codes and special service numbers