Methods
GET
Retrieve Single Number
/backend/api/v1/numbers/ID - fetch number with specified ID.
List Numbers
/backend/api/v1/numbers/ - list all numbers.
/backend/api/v1/customers/ID/numbers/ - list numbers belonging to customer with specified ID.
Additional Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
number | string | No | Search for telephone numbers by exact match |
CRMReference | string | No | Search for numbers by exact CRM reference |
dropped | flag | No | Show only dropped numbers |
active | flag | No | Show only active numbers |
numberType | string | No | Show numbers of the specified type |
droppedSince | datetime | No | Only include numbers dropped since |
reinstatedSince | datetime | No | Only include numbers reinstated since |
featureActive | flag | No | When expanding features, only include active features |
Search Example:
# Find number - spaces and dashes are automatically removed
curl -H "Authorization: Bearer YOUR_API_KEY" \
"/backend/api/v1/numbers?number=02079460000"
# Search works with formatted numbers too
curl -H "Authorization: Bearer YOUR_API_KEY" \
"/backend/api/v1/numbers?number=020%207946%200000"
# Alternative formatting
curl -H "Authorization: Bearer YOUR_API_KEY" \
"/backend/api/v1/numbers?number=020-7946-0000"
# Find only active numbers
curl -H "Authorization: Bearer YOUR_API_KEY" \
"/backend/api/v1/numbers?number=02079460000&active=true"
# Search within a specific customer's numbers
curl -H "Authorization: Bearer YOUR_API_KEY" \
"/backend/api/v1/customers/123/numbers?number=02079460000"
# Find number by CRM reference
curl -H "Authorization: Bearer YOUR_API_KEY" \
"/backend/api/v1/numbers?CRMReference=CRM-12345"
# Find only active numbers by CRM reference
curl -H "Authorization: Bearer YOUR_API_KEY" \
"/backend/api/v1/numbers?CRMReference=CRM-12345&active=true"
# Search within a specific customer's numbers by CRM reference
curl -H "Authorization: Bearer YOUR_API_KEY" \
"/backend/api/v1/customers/123/numbers?CRMReference=CRM-12345"
Search Notes:
- The
numberparameter performs an exact match - Spaces and dashes are automatically removed from the search term
- Formats like
020 7946 0000and020-7946-0000will match02079460000 - The
CRMReferenceparameter performs an exact match - Returns an array containing a single number (or empty array if not found)
- CRM references are unique, so only one result is expected
- Can be used with customer-specific endpoints:
/backend/api/v1/customers/{id}/numbers?number={number}or/backend/api/v1/customers/{id}/numbers?CRMReference={reference} - Combining with filters like
activecan exclude dropped numbers - Optimised for performance using indexed fields
Expand with Filtering Example:
# Get number with only active features included
curl -H "Authorization: Bearer YOUR_API_KEY" \
"/backend/api/v1/numbers/456?expandFeatures=true&featureActive=true"
# List customer's numbers with active features expanded
curl -H "Authorization: Bearer YOUR_API_KEY" \
"/backend/api/v1/customers/123/numbers?expandFeatures=true&featureActive=true"
POST
/backend/api/v1/customers/ID/numbers/ - add a new number to the specified customer, the newly-added number will be returned.
PATCH
/backend/api/v1/numbers/ID - update number with specified ID. The modified number will be returned.
DELETE
/backend/api/v1/numbers/ID - delete number with specified ID.
Actions
Available Actions
drop
Drop (deactivate) a number. This action changes the number’s status to dropped and records the drop date.
Parameters:
status(required) - The status name for the dropped number (e.g., “Dropped”)dateDrop(required) - The date the number was dropped (format: YYYY-MM-DD)cancellationNoticeGivenDate(optional) - The date cancellation notice was given (may affect notice period billing)statusReason(optional) - Text explanation for dropping the numberignoreTrafficNumberType(optional) - Name of the ignore traffic type to apply (automatically creates ignore traffic number entries for call data exclusion)
Example:
curl -X POST https://example.com/backend/api/v1/numbers/123?action=drop \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"status": "Dropped",
"dateDrop": "2025-01-24",
"statusReason": "Customer requested cancellation"
}'
reinstate
Reinstate a previously dropped number, returning it to active status.
Parameters:
status(required) - The status name for the reinstated number (e.g., “Active”)dateReinstate(required) - The date the number is reinstated (format: YYYY-MM-DD)statusReason(optional) - Text explanation for reinstating the number
Example:
curl -X POST https://example.com/backend/api/v1/numbers/123?action=reinstate \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"status": "Active",
"dateReinstate": "2025-01-24"
}'
Response Format
Actions return the updated number object in JSON format, using the same structure as GET requests.
Error Handling
If an action fails, the API will return an appropriate HTTP status code with error details:
{
"error": "Invalid Action",
"error_code": 400502,
"hint": "The action was not performed"
}
Common error codes:
400501- Action not recognised400502- Action failed to execute400503- Missing required parameters403xxx- Permission denied
Fields
| Field | Name | Type | Description |
|---|---|---|---|
| customerID | Customer | Text | The ID of the customer who owns this number |
| numberType | Number Type | Preset Value | The type of this number (e.g., geographic, non-geographic, mobile) |
| number | Number | Text | The telephone number as sold to the customer |
| extension | Extension | Text | Extension number associated with this telephone number |
| lines | Lines | Number | Number of telephone lines associated with this number |
| description | Description | Text | Description of this number |
| site | Site | Text | Site where this number is billed |
| campaign | Campaign | Text | Marketing campaign associated with this number |
| target | Target | Text | Target destination for calls to this number |
| alphaRef | Alpha Ref | Text | Alphabetic reference code for this number |
| status | Number Status | Preset Value | Status name for this number |
| statusChangedStamp | Status Changed Date | Date | Date when the status of this number was last changed |
| updatedDate | Dropped / Reinstated Date | Date | Date when this number was most recently dropped or reinstated |
| statusReason | Status Reason | Preset Value | Reason for the current status of this number |
| cancellationNoticeGivenDate | Cancellation Notice Given | Date | Date when cancellation notice was given for this number |
| annualIncreaseReferenceDate | Annual Increase Reference Date | Date | Date when the next annual increase is due for this number |
| annualIncreaseProfile | Annual Increase Profile | Preset Value | Annual increase profile name for this number |
| customerProducts | Customer Products | Preset Value(s) | Products associated with this number |
| internalUse | Internal Use | Text | Internal notes or references for this number |
| CRMReference | CRM Reference | Text | Reference for this number in the CRM system |
| CDRNumber | CDR Number | Text | Alternative number used in Call Detail Records |
| CDRNumberCallTypeDirectionFlag | Call Leg | Preset Value | Direction of calls for this CDR number |
| useCallTypeOriginationTypeFlag | Call Origination Type | Preset Value | Type of call origination for this number |
| CDRNumberChargeBand | Charge Band | Text | Charging band applied to calls for this number |
| CDRNumber2 | Second CDR Number | Text | Second alternative number used in Call Detail Records |
| CDRNumberCallTypeDirectionFlag2 | Second Call Leg Type | Preset Value | Direction of calls for the second CDR number |
| useCallTypeOriginationTypeFlag2 | Second Call Origination Type | Preset Value | Type of call origination for the second CDR number |
| CDRNumberChargeBand2 | Second Charge Band | Text | Charging band applied to calls for the second CDR number |
| CDRNumber3 | Third CDR Number | Text | Third alternative number used in Call Detail Records |
| CDRNumberCallTypeDirectionFlag3 | Third Call Leg Type | Preset Value | Direction of calls for the third CDR number |
| useCallTypeOriginationTypeFlag3 | Third Call Origination Type | Preset Value | Type of call origination for the third CDR number |
| CDRNumberChargeBand3 | Third Charge Band | Text | Charging band applied to calls for the third CDR number |
| CDRNumber4 | Fourth CDR Number | Text | Fourth alternative number used in Call Detail Records |
| CDRNumberCallTypeDirectionFlag4 | Fourth Call Leg Type | Preset Value | Direction of calls for the fourth CDR number |
| useCallTypeOriginationTypeFlag4 | Fourth Call Origination Type | Preset Value | Type of call origination for the fourth CDR number |
| CDRNumberChargeBand4 | Fourth Charge Band | Text | Charging band applied to calls for the fourth CDR number |
| soldBy | Sold By | Preset Value | User who sold this number |
| soldDate | Date Sold | Date | Date when this number was sold |
| enteredDate | Entered Date | Date | Date when this number was entered into the system |
| saleType | Sale Type | Preset Value | Type of sale for this number |
| postcode | Postcode | Text | Postcode associated with this number |
| websiteDesigner | Website Designer | Preset Value | |
| firstDraftDate | 1st Draft Date | Date | |
| contractEndDate | Contract End Date | Date | Date when the contract for this number ends |
| callCarrier | Call Carrier | Preset Value | Carrier used for calls with this number |
| lineCarrier | Line Provider | Preset Value | Provider of the line for this number |
| carrierCallAllocation | Bill Calls From | Preset Value | Specifies how calls are allocated to this number |
| carrierReference | Carrier Reference/ID | Text | Reference or ID used by the carrier for this number |
| PIN | Carrier PIN | Text | PIN associated with this number at the carrier |
| carrierServiceType | Carrier Service Type | Text | Type of service provided by the carrier for this number |
| carrierSubAccount | Carrier Sub-Account | Text | Sub-account at the carrier for this number |
| fixedFeeTariff | Fixed Fee Tariff | Preset Value | Fixed fee tariff applied to this number |
| inboundTariff | Inbound Tariff | Preset Value | Tariff applied to inbound calls |
| inboundMarkup | Inbound Markup | Number | Percentage markup applied for inbound calls when the selected tariff has no rate |
| nationalTariff | National Tariff | Preset Value | Tariff applied to national calls |
| nationalMarkup | National Markup | Number | Percentage markup applied for national calls when the selected tariff has no rate |
| mobileTariff | Mobile Tariff | Preset Value | Tariff applied to mobile calls |
| mobileMarkup | Mobile Markup | Number | Percentage markup applied for mobile calls when the selected tariff has no rate |
| nongeographicTariff | Non-geographic Tariff | Preset Value | Tariff applied to non-geographic calls |
| nongeographicMarkup | Non-geographic Markup | Number | Percentage markup applied for non-geographic calls when the selected tariff has no rate |
| serviceNumbersTariff | Service Numbers Tariff | Preset Value | Tariff applied to service number calls |
| serviceNumbersMarkup | Service Numbers Markup | Number | Percentage markup applied for service number calls when the selected tariff has no rate |
| internationalTariff | International Tariff | Preset Value | Tariff applied to international calls |
| internationalMarkup | International Markup | Number | Percentage markup applied for international calls when the selected tariff has no rate |
| extendedInternationalTariff | Extended International Tariff | Preset Value | |
| extendedInternationalMarkup | Extended International Markup | Number | Percentage markup applied for extended international calls when the selected tariff has no rate |
| surchargesTariff | Surcharges Tariff | Preset Value | Tariff applied to surcharges |
| surchargesMarkup | Surcharges Markup | Number | Percentage markup applied for surcharges when the selected tariff has no rate |
| bespokeTariff1 | Bespoke Tariff 1 | Preset Value | Tariff applied to bespoke tariff 1 calls |
| bespokeTariff1Markup | Bespoke Tariff 1 Markup | Number | Percentage markup applied for bespoke tariff 1 calls when the selected tariff has no rate |
| bespokeTariff2 | Bespoke Tariff 2 | Preset Value | Tariff applied to bespoke tariff 2 calls |
| bespokeTariff2Markup | Bespoke Tariff 2 Markup | Number | Percentage markup applied for bespoke tariff 2 calls when the selected tariff has no rate |
| fallbackMarkupSuggested | Fallback Suggested Retail Markup | Number | Suggested retail markup applied as a last resort when rates are missing and no per-class markup applies |
| fallbackMarkup | Fallback Markup | Number | Wholesale markup applied as a last resort when rates are missing and no per-class markup applies |
| discountPlanAllowancePoolName | Allowance Pool Name | Text | Name of the allowance pool for discount plans |
| discountPlan1 | Discount Plan 1 | Preset Value | First discount plan applied to this number |
| discountPlan2 | Discount Plan 2 | Preset Value | Second discount plan applied to this number |
| discountPlan3 | Discount Plan 3 | Preset Value | Third discount plan applied to this number |
| discountPlan4 | Discount Plan 4 | Preset Value | Fourth discount plan applied to this number |
| lowInvoiceActionValue | Pad Calls To | Currency | Minimum value to pad call charges to on invoices |
| creditLimit | Credit Limit | Currency | Credit limit for this number |
| expectedSpend | Expected Spend | Currency | Expected monthly spending for this number |
| displayWith | Display With | Text | Groups this number with others on bills and reports |
| shortBillPages | Short Bill Pages | Preset Value(s) | Pages to include in short bills for this number |
| longBillPages | Long Bill Pages | Preset Value(s) | Pages to include in long bills for this number |
| loginFlagsAllow | Allow | Preset Value(s) | Array of statistics names allowed for this number |
| loginFlagsDeny | Deny | Preset Value(s) | Array of statistics names denied for this number |
| id | Number ID | Text | The unique identifier for this number |