Number Insights Transition Guide
As the Vonage Number Insights API has evolved, its capabilities for phone number intelligence have been consolidated into the newer Identity Insights API, offering greater flexibility, combined insights in a single request, and modern support for real-time carrier data and fraud prevention features.
As part of this consolidation, the Number Insights API will effectively sunset in February 2027. After this date, Number Insights will be deprecated. To avoid service disruption and to benefit from unified insights, new network features like SIM Swap and Subscriber Match, and ongoing enhancements, customers are strongly encouraged to migrate their existing Number Insights integrations to Identity Insights ahead of this deadline.
This guide helps you migrate your existing implementations that use these Number Insights services to the equivalent Identity Insights requests:
- Number Insights Basic
- Number Insights Standard
- Number Insights Advanced
Common Concepts
The table below shows how the legacy Number Insights endpoints / attributes align with Identity Insights:
| Legacy Number Insights | Identity Insights Equivalent |
|---|---|
| Basic: number formatting | Format |
Standard/Advanced: original_carrier | Original Carrier insight |
Standard/Advanced: current_carrier | Current Carrier insight |
These are explained in further detail below.
Phone Number Format
In Number Insights, the Basic endpoint provided formatted representations of phone numbers (national and international), and basic validation.
In Identity Insights, this is supported by the Format insight, returning number formatting and validation details within a structured model.
Original Carrier
Legacy Standard and Advanced Number Insights returned an original_carrier object containing carrier details reflecting the network to which the number was initially assigned.
Identity Insights maintains this capability under its Original Carrier insight with similar fields such as name, country, network type, and identifiers.
Current Carrier
Number Insights exposed a current_carrier object indicating the carrier to which a mobile number is currently associated (including number portability where supported).
Identity Insights continues with its Current Carrier insight, reflecting live assignment for mobile numbers.
Roaming and reachability
Number Insights Advanced exposed roaming and reachability information. These fields were derived from HLR (Home Location Register) based lookups, a legacy approach that is increasingly constrained by privacy regulations and technical limitations across the industry, making this data source unreliable.
Identity Insights moves away from HLR-based data sources and instead relies on Network APIs, which provide more reliable and real-time information by querying mobile networks directly. However, availability and geographic coverage for these Network API–backed insights are currently limited, and they are only exposed through Vonage Virtual Operator.
In Identity Insights, these capabilities are provided through the Roaming and Reachability insights.
Error Handling
How Error Handling Worked in Number Insights
In legacy Number Insights (Basic, Standard, Advanced), error handling was normally request-level:
- The HTTP status code reflected the overall success or failure of the request.
- If the request succeeded (for example, HTTP 200), the request itself was considered successful and processing was completed, although some individual fields might still be missing depending on number type, coverage, or data availability.
- If the request failed, no partial data was returned.
- Errors were communicated via top-level fields such as
status,status_message, or HTTP error responses.
This model assumed all-or-nothing execution.
How Error Handling Works in Identity Insights
Identity Insights introduces a multi-status response model.
Each requested insight (for example format, original_carrier, current_carrier) is processed independently and returns its own status information.
As a result:
- The HTTP response can succeed (e.g. HTTP 200) even if one or more insights failed.
- Some insights may return valid data while others return errors
- Applications must inspect the status of each insight individually.
Identity Insights: Making the API Call
Identity Insights allows you to request multiple insights in one payload. Here’s an example that replaces legacy Number Insight API request for Basic, Standard and Advanced requests:
curl -X POST https://api-eu.vonage.com/identity-insights/v1/requests \
-H "Authorization: Bearer $JWT" \
-H "Content-Type: application/json" \
-d '{
"phone_number": "14040000000",
"purpose": "FraudPreventionAndDetection",
"insights": {
"format": {},
"original_carrier": {},
"current_carrier": {}
}
}'
Note: You must use a JWT authorization token for Identity Insights calls, not the api_key/api_secret style used by legacy Number Insight API. For more information on JWTs, see the Authentication guide.
Response Structure
A typical Identity Insights response includes attributes for each enabled insight. For example:
{
"request_id": "aaaaaaaa-bbbb-cccc-dddd-0123456789ab",
"insights": {
"format": {
"country_code": "US",
"country_name": "United States",
"country_prefix": "1",
"offline_location": "Georgia",
"time_zones": [
"America/New_York"
],
"number_international": "+14040000000",
"number_national": "(404) 000-0000",
"is_format_valid": true,
"status": {
"code": "OK",
"message": "Success"
}
},
"original_carrier": {
"name": "AT&T Mobility",
"network_type": "MOBILE",
"country_code": "US",
"network_code": "310090",
"status": {
"code": "OK",
"message": "Success"
}
},
"current_carrier": {
"name": "AT&T Mobility",
"network_type": "MOBILE",
"country_code": "US",
"network_code": "310090",
"status": {
"code": "OK",
"message": "Success"
}
},
}
}
Fields match legacy semantics but are returned under a single JSON structure, simplifying your parsing.
Summary Checklist
When migrating:
- Replace legacy Basic / Standard / Advanced Number Insights calls with a single Identity Insights call.
- Include the format insight for number formatting and validation.
- Include both
original_carrierandcurrent_carrierinsight objects to preserve legacy carrier data semantics. - Update your authorization to use JWT.