Skip to main content

Phone Status Check - Detailed Documentation

Use this action to get insights about a phone number such as whether it is active or disconnected, whether its associated device is reachable or unreachable, and its associated device’s roaming status.

API Playground:

  • /phoneStatus
  • /phoneid
  • /phoneRiskScore
  • /verification
  • /verification/{referenceId}
  • /fullPhoneIntelligence
You can try the phoneStatus endpoint here.

Endpoints Overview

  1. Phone Status Check: Retrieve the status and details of a phone number.
  2. Phone ID: Retrieve the ID and details of a phone number.
  3. Phone Risk Score: Retrieve the risk score of a phone number.
  4. Verification: Verify a phone number.
    • Verification: Send a verification code to a phone number.
    • Verification Match: Match the verification code.
  5. Full Phone Intelligence: Retrieve the full intelligence of a phone number.

Authentication

To access the Address Verification API, authentication is required. A Bearer Token must be included in every request.
  • Tokens are valid for 60 minutes and must be refreshed after expiration.
  • Refer to the Authentication for detailed steps on obtaining a token.
  • Include the token in the Authorization header as follows:
Authorization: Bearer YOUR_ACCESS_TOKEN

API Base URL

https://api-umbrella.io/api/services

1. Phone Status Check

Endpoint

POST /phone-service/phoneStatus

Description

Use this action to get insights about a phone number, such as its activity status, device reachability, and roaming status.

Required Headers

HeaderValue
Content-Typeapplication/json
AuthorizationBearer yourAccessToken

Request Body Parameters

FieldTypeRequiredDescription
phoneNumberstringYesThe phone number to check, including country code.

Response Structure

FieldTypeDescription
referenceIdstringUnique reference ID for the transaction.
subResourcestringSub-resource type (e.g., live).
statusobjectTransaction status details.
status.codenumberStatus code (e.g., 300 for success).
status.descriptionstringStatus description (e.g., “Transaction successfully completed”).
status.updatedOnstringTimestamp of the last update (ISO 8601 format).
errorsarrayList of errors, if any.
phoneTypeobjectType of phone number.
phoneType.codestringPhone type code (e.g., 2 for mobile).
phoneType.descriptionstringPhone type description (e.g., “MOBILE”).
blocklistingobjectBlocklisting status of the phone number.
blocklisting.blockedbooleanWhether the number is blocked.
blocklisting.blockCodenumberBlock code (e.g., 0 for not blocked).
blocklisting.blockDescriptionstringBlock description (e.g., “Not blocked”).
numberingobjectPhone number details.
numbering.cleansingobjectCleansed phone number details.
numbering.cleansing.callobjectCall-specific cleansing details.
numbering.cleansing.call.countryCodestringCountry code.
numbering.cleansing.call.phoneNumberstringPhone number.
numbering.cleansing.call.cleansedCodenumberCleansing status code.
numbering.cleansing.call.minLengthnumberMinimum allowed length.
numbering.cleansing.call.maxLengthnumberMaximum allowed length.
numbering.cleansing.smsobjectSMS-specific cleansing details.
numbering.cleansing.sms.countryCodestringCountry code.
numbering.cleansing.sms.phoneNumberstringPhone number.
numbering.cleansing.sms.cleansedCodenumberCleansing status code.
numbering.cleansing.sms.minLengthnumberMinimum allowed length.
numbering.cleansing.sms.maxLengthnumberMaximum allowed length.
numbering.originalobjectOriginal phone number details.
numbering.original.completePhoneNumberstringComplete phone number with country code.
numbering.original.countryCodestringCountry code.
numbering.original.phoneNumberstringPhone number.
locationobjectLocation details of the phone number.
location.citystringCity associated with the phone number.
location.statestringState associated with the phone number.
location.zipstringZIP code associated with the phone number.
location.metroCodestringMetro code associated with the phone number.
location.countystringCounty associated with the phone number.
location.countryobjectCountry details.
location.country.namestringCountry name.
location.country.iso2stringISO 2-letter country code.
location.country.iso3stringISO 3-letter country code.
location.coordinatesobjectGeographic coordinates.
location.coordinates.latitudestringLatitude.
location.coordinates.longitudestringLongitude.
location.timeZoneobjectTime zone details.
location.timeZone.namestringTime zone name.
location.timeZone.utcOffsetMaxstringMaximum UTC offset.
location.timeZone.utcOffsetMinstringMinimum UTC offset.
carrierobjectCarrier details.
carrier.namestringName of the carrier.
liveobjectLive status details.
live.subscriberStatusstringSubscriber status (e.g., ACTIVE).
live.deviceStatusstringDevice status (e.g., REACHABLE).
live.roamingstringRoaming status (e.g., UNAVAILABLE).
live.roamingCountrystringRoaming country name.
live.roamingCountryIso2stringISO 2-letter roaming country code.

Example Request

{
    "phoneNumber": "+486504142304"
}

Example Response

{
  "reference_id": "ABC123XYZ789",
  "sub_resource": "live",
  "status": {
    "code": 300,
    "description": "Transaction successfully completed",
    "updated_on": "2025-08-01T14:32:10Z"
  },
  "errors": [],
  "phone_type": {
    "code": "2",
    "description": "MOBILE"
  },
  "blocklisting": {
    "blocked": false,
    "block_code": 0,
    "block_description": "Not blocked"
  },
  "numbering": {
    "cleansing": {
      "call": {
        "country_code": "49",
        "phone_number": "15123456789",
        "cleansed_code": 100,
        "min_length": 7,
        "max_length": 13
      },
      "sms": {
        "country_code": "49",
        "phone_number": "15123456789",
        "cleansed_code": 100,
        "min_length": 7,
        "max_length": 13
      }
    },
    "original": {
      "complete_phone_number": "+4915123456789",
      "country_code": "49",
      "phone_number": "15123456789"
    }
  },
  "location": {
    "city": "Berlin",
    "state": "Berlin",
    "zip": "10115",
    "metro_code": null,
    "county": "Berlin County",
    "country": {
      "name": "Germany",
      "iso2": "DE",
      "iso3": "DEU"
    },
    "coordinates": {
      "latitude": 52.5200,
      "longitude": 13.4050
    },
    "time_zone": {
      "name": "Europe/Berlin",
      "utc_offset_max": "+2",
      "utc_offset_min": "+1"
    }
  },
  "carrier": {
    "name": "Generic Mobile GmbH"
  },
  "live": {
    "subscriber_status": "ACTIVE",
    "device_status": "REACHABLE",
    "roaming": "UNAVAILABLE",
    "roaming_country": null,
    "roaming_country_iso2": null
  }
}

2. Phone ID

Endpoint

POST /phone-service/phoneid

Description

The Phone ID service provides identity checks and enriched data linked to a phone number. It includes several optional modules:
  • Age Verification – Verifies whether the subscriber meets a specified age threshold. Only available in the US and UK and requires address input via Contact Match.
  • Breached Data – Checks whether the phone number has appeared in known data breaches.
  • Call Forwarding Detection – Detects whether call forwarding is active and under what conditions.
  • Contact Information – Returns known contact details such as name, address, and email.
  • Contact Match – Compares submitted contact data against the carrier’s data and returns a match score.
  • Number Deactivation – Provides information on if and when the number was deactivated.
  • Subscriber Status – Indicates the subscriber’s account state, including type, tenure, and contract status.
  • Porting History – Displays the number’s history of being ported between carriers.
  • Porting Status – Returns the current carrier and whether the number has been recently ported.
  • SIM Swap – Detects SIM card swaps and evaluates the associated risk.

Required Headers

HeaderValue
Content-Typeapplication/json
AuthorizationBearer yourAccessToken

Request Body Parameters

FieldTypeRequiredDescription
phoneNumberstringYesPhone number to query, including country code (no spaces or symbols).
accountLifecycleEventstringNoStage of the user journey. One of: create, sign-in, transact, update, delete.
externalIdstringNoCustomer-defined ID echoed in the response.
originatingIpstringNoEnd user’s IP address (IPv4 or IPv6).
addonsobjectNoAdd-on services to enrich the phone lookup (see table below).
consentobjectNo*Consent record for querying the number — required for certain add-ons.

Add-ons Object Fields

Add-onKeyTypeDescriptionExample Value
Age VerificationageVerifyobjectVerifies subscriber’s age (US/UK only). Requires address information.{"ageThreshold": "21"}
Breached DatabreachedDataobjectChecks whether the phone number has appeared in a data breach.{}
Call ForwardingcallForwardDetectionobjectDetects if call forwarding is enabled and under what conditions.{}
Contact InfocontactobjectReturns known contact details such as name, address, and email.{"email": "test@example.com"}
Contact MatchcontactMatchobjectCompares provided contact info with carrier records and returns a match.{ "firstName": "Jane", "lastName": "Doe", "address": "123 Main St", "city": "Springfield", "postalCode": "12345", "state": "IL", "country": "USA", "inputUsed": "phoneNumber and email" }
Number DeactivationnumberDeactivationobjectIndicates if/when the number was deactivated.{"status": { "code": 2800, "description": "Request successfully completed" }, "carrierName": "Verizon", "lastDeactivated": "2016-04-05T00:00:00Z", "trackingSince": "2014-10-06T00:00:00Z", "recycledSinceLastVerification": "notRecycled" }
Subscriber StatussubscriberStatusobjectProvides subscriber account details like type, tenure, and activation.{}
Porting HistoryportingHistoryobjectShows porting history of the number across carriers.{"pastXDays": "10"}
Porting StatusportingStatusobjectDisplays current carrier and whether the number was recently ported.{}
SIM SwapsimSwapobjectDetects recent SIM changes and evaluates risk.{}

Response Structure

FieldTypeDescriptionSource
statusbooleanIndicates if the API request itself was successful.basic
data.referenceIdstringUnique 32-character hex ID for the transaction (provider-generated).basic
data.externalIdstring | nullCustom ID echoed back if provided in the request.basic
data.status.codeintegerProcessing status code (e.g., 300 for success).basic
data.status.descriptionstringHuman-readable description of the transaction status.basic
data.status.updatedOnstringISO 8601/RFC 3339 timestamp of last update.basic
data.phoneType.codestringPhone type code.phoneType
data.phoneType.descriptionstringDescription of the phone type.phoneType
data.blocklisting.blockedbooleanWhether the number is blocklisted.blocklisting
data.blocklisting.blockCodeintegerBlock status code.blocklisting
data.blocklisting.blockDescriptionstringDescription of the block reason.blocklisting
data.carrier.namestringCarrier name.carrier
data.numbering.originalobjectOriginal number as received (completePhoneNumber/countryCode/phoneNumber).numbering
data.numbering.cleansingobjectCleansed number details for call and sms (countryCode/phoneNumber/minLength/maxLength/cleansedCode).numbering
data.location.citystring | nullCity (may be null).location
data.location.statestring | nullState/region (may be null).location
data.location.zipstring | nullPostal/ZIP code (may be null).location
data.location.countystring | nullCounty (may be null).location
data.location.metroCodestring | nullMetro/PMSA code (U.S.; may be null).location
data.location.country.namestring | nullCountry name.location
data.location.country.iso2string | nullISO-3166-1 alpha-2 code.location
data.location.country.iso3string | nullISO-3166-1 alpha-3 code.location
data.location.coordinates.latitudenumber | nullLatitude (may be null).location
data.location.coordinates.longitudenumber | nullLongitude (may be null).location
data.location.timeZone.namestring | nullIANA time zone name (may be null).location
data.location.timeZone.utcOffsetMaxstring | nullMax UTC offset (e.g., “+1”).location
data.location.timeZone.utcOffsetMinstring | nullMin UTC offset (e.g., “+1”).location

Example Request

{
  "phoneNumber": "11234567890",
  "accountLifecycleEvent": "create",
  "externalId": "CustomExternalID7349",
  "originatingIp": "203.0.113.45",
  "addons": {
    "ageVerify": {
      "ageThreshold": 21
    },
    "contact": {
      "email": "test@example.com"
    },
    "contactMatch": {
      "firstName": "string",
      "lastName": "string",
      "address": "string",
      "city": "string",
      "postalCode": "string",
      "state": "string",
      "country": "string",
      "inputUsed": "email"
    },
    "contactPlus": {
      "billingPostalCode": "95110"
    },
    "numberDeactivation": {
      "carrierName": "Verizon",
      "lastDeactivated": "2016-04-05T00:00:00Z",
      "trackingSince": "2014-10-06T00:00:00Z",
      "status": {
        "code": 2800,
        "description": "Request successfully completed"
      },
      "recycledSinceLastVerification": "notRecycled"
    },
    "portingHistory": {
      "pastXDays": 10
    }
  },
  "consent": {
    "method": 1,
    "timestamp": "2018-05-05T00:00:00Z"
  }
}

Example Response

{
  "status": true,
  "data": {
    "referenceId": "0123456789ABCDEF0123456789ABCDEF",
    "externalId": null,
    "status": {
      "code": 300,
      "description": "Transaction successfully completed",
      "updatedOn": "2025-01-01T00:00:00Z"
    },
    "location": {
      "city": "Countrywide",
      "state": null,
      "zip": null,
      "metroCode": null,
      "county": null,
      "country": {
        "name": "Exampleland",
        "iso2": "EX",
        "iso3": "EXL"
      },
      "coordinates": {
        "latitude": null,
        "longitude": null
      },
      "timeZone": {
        "name": null,
        "utcOffsetMax": "+0",
        "utcOffsetMin": "+0"
      }
    },
    "blocklisting": {
      "blocked": false,
      "blockCode": 0,
      "blockDescription": "Not blocked"
    },
    "numbering": {
      "cleansing": {
        "call": {
          "countryCode": "99",
          "phoneNumber": "5550123456",
          "cleansedCode": 100,
          "minLength": 7,
          "maxLength": 13
        },
        "sms": {
          "countryCode": "99",
          "phoneNumber": "5550123456",
          "cleansedCode": 100,
          "minLength": 7,
          "maxLength": 13
        }
      },
      "original": {
        "completePhoneNumber": "+995550123456",
        "countryCode": "99",
        "phoneNumber": "5550123456"
      }
    },
    "phoneType": {
      "code": "2",
      "description": "MOBILE"
    },
    "carrier": {
      "name": "Example Mobile Ltd"
    }
  }
}

3. Phone Risk Score

Endpoint

POST /phone-service/phoneRiskScore

Description

Phone Risk Score helps detect potentially fraudulent activity by analyzing the transaction risk associated with a phone number. You send a phone number (optionally with an email and/or IP address), and the service evaluates static attributes and behavioral patterns to return a risk.score, a risk.level, and a recommendation — helping you decide whether to allow, flag, or block the transaction. What’s evaluated:
  • Static attributes: phone type, carrier, device ID, VPN/proxy usage, domains, etc.
  • Behavioral signals: unusual usage patterns like high velocity or multiple locations/languages.

Required Headers

HeaderValue
Content-Typeapplication/json
AuthorizationBearer yourAccessToken

Request Body Parameters

FieldTypeRequiredDescription
phoneNumberstringYesThe phone number to check, including country code.
accountLifecycleEventstringYesThe action being evaluated. Accepted values: create, sign-in, transact, update, delete.
externalIdstringNoA customer-generated ID for this transaction. The response echoes this value.
originatingIpstringNoEnd user’s IP address (IPv4 or IPv6). Do not send your own IP.
deviceIdstringNoCase-sensitive device ID.
accountIdstringNoCase-sensitive account ID.
emailAddressstringNoCase-sensitive email address.

Response Structure

FieldTypeDescription
statusbooleanIndicates if the API request was successful.
dataobjectContains the transaction result details.
data.referenceIdstringUnique reference ID for the transaction.
data.externalIdstringExternal reference ID (nullable).
data.statusobjectTransaction status details.
data.status.updatedOnstringTimestamp of the last update (ISO 8601 format).
data.status.codenumberStatus code (e.g., 300 for success).
data.status.descriptionstringStatus description message.
data.numberingobjectOriginal and cleansed phone number details.
data.numbering.originalobjectOriginal phone number information.
data.numbering.original.completePhoneNumberstringComplete phone number in international format.
data.numbering.original.countryCodestringCountry dialing code.
data.numbering.original.phoneNumberstringLocal phone number.
data.numbering.cleansingobjectCleansed phone number details for call and SMS.
data.numbering.cleansing.callobjectCleansed phone number details for calling.
data.numbering.cleansing.call.countryCodestringCountry dialing code after cleansing.
data.numbering.cleansing.call.phoneNumberstringCleansed local phone number for calling.
data.numbering.cleansing.call.cleansedCodenumberResult code of cleansing (e.g., 100 = valid).
data.numbering.cleansing.call.minLengthnumberMinimum valid length of phone number.
data.numbering.cleansing.call.maxLengthnumberMaximum valid length of phone number.
data.numbering.cleansing.smsobjectCleansed phone number details for SMS.
data.numbering.cleansing.sms.countryCodestringCountry dialing code after cleansing.
data.numbering.cleansing.sms.phoneNumberstringCleansed local phone number for SMS.
data.numbering.cleansing.sms.cleansedCodenumberResult code of cleansing (e.g., 100 = valid).
data.numbering.cleansing.sms.minLengthnumberMinimum valid length of phone number.
data.numbering.cleansing.sms.maxLengthnumberMaximum valid length of phone number.
data.riskInsightsobjectRisk assessment details.
data.riskInsights.statusnumberRisk status code.
data.riskInsights.categoryarrayRisk category codes.
data.riskInsights.a2ParrayApplication-to-Person (A2P) risk indicators.
data.riskInsights.p2ParrayPerson-to-Person (P2P) risk indicators.
data.riskInsights.numberTypearrayNumber type risk indicators (if any).
data.riskInsights.iparrayIP-related risk indicators (if any).
data.riskInsights.emailarrayEmail-related risk indicators (if any).
data.phoneTypeobjectPhone type information.
data.phoneType.codestringPhone type code (e.g., 2).
data.phoneType.descriptionstringPhone type description (e.g., “MOBILE”).
data.locationobjectLocation details associated with the phone number.
data.location.citystringCity of the number (if available).
data.location.statestringState or region (nullable).
data.location.zipstringZIP or postal code (nullable).
data.location.metroCodestringMetro code (nullable).
data.location.countystringCounty (nullable).
data.location.countryobjectCountry details.
data.location.country.namestringCountry name.
data.location.country.iso2stringISO 2-letter country code.
data.location.country.iso3stringISO 3-letter country code.
data.location.coordinatesobjectGeographic coordinates.
data.location.coordinates.latitudenumberLatitude (nullable).
data.location.coordinates.longitudenumberLongitude (nullable).
data.location.timeZoneobjectTime zone information.
data.location.timeZone.namestringTime zone name (nullable).
data.location.timeZone.utcOffsetMinstringMinimum UTC offset.
data.location.timeZone.utcOffsetMaxstringMaximum UTC offset.
data.carrierobjectCarrier (telecom provider) details.
data.carrier.namestringCarrier name.
data.blocklistingobjectBlocklisting details.
data.blocklisting.blockedbooleanIndicates if the number is blocklisted.
data.blocklisting.blockCodenumberBlocklisting code (e.g., 0 = not blocked).
data.blocklisting.blockDescriptionstringBlocklisting description.
data.riskobjectOverall risk score and recommendation.
data.risk.levelstringRisk level (e.g., medium-low).
data.risk.recommendationstringRisk handling recommendation (e.g., allow).
data.risk.scorenumberRisk score (numerical value).

Example Request

{
  "phoneNumber": "+436501234567",
  "accountLifecycleEvent": "create",
  "externalId": "1234567890",   
  "originatingIp": "192.168.1.1",
  "deviceId": "1234567890",
  "accountId": "1234567890",
  "emailAddress": "test@example.com" 
}

Example Response

{
    "status": true,
    "data": {
        "referenceId": "3661FDC7EAA8111C93048FA6FB8C300C",
        "externalId": null,
        "status": {
            "updatedOn": "2025-08-06T12:53:53.082687Z",
            "code": 300,
            "description": "Transaction successfully completed"
        },
        "numbering": {
            "original": {
                "completePhoneNumber": "+436501234567",
                "countryCode": "43",
                "phoneNumber": "6501234567"
            },
            "cleansing": {
                "call": {
                    "countryCode": "43",
                    "phoneNumber": "6501234567",
                    "cleansedCode": 100,
                    "minLength": 7,
                    "maxLength": 13
                },
                "sms": {
                    "countryCode": "43",
                    "phoneNumber": "6501234567",
                    "cleansedCode": 100,
                    "minLength": 7,
                    "maxLength": 13
                }
            }
        },
        "riskInsights": {
            "status": 800,
            "category": [
                10010
            ],
            "a2P": [
                22001,
                20011,
                20101
            ],
            "p2P": [
                30201
            ],
            "numberType": [],
            "ip": [],
            "email": []
        },
        "phoneType": {
            "code": "2",
            "description": "MOBILE"
        },
        "location": {
            "city": "Countrywide",
            "state": null,
            "zip": null,
            "metroCode": null,
            "county": null,
            "country": {
                "name": "Austria",
                "iso2": "AT",
                "iso3": "AUT"
            },
            "coordinates": {
                "latitude": null,
                "longitude": null
            },
            "timeZone": {
                "name": null,
                "utcOffsetMin": "+1",
                "utcOffsetMax": "+1"
            }
        },
        "carrier": {
            "name": "T-Mobile Austria GmbH"
        },
        "blocklisting": {
            "blocked": false,
            "blockCode": 0,
            "blockDescription": "Not blocked"
        },
        "risk": {
            "level": "medium-low",
            "recommendation": "allow",
            "score": 301
        }
    }
}

Risk Recommendation Scales

Use the appropriate scale below for interpreting the risk recommendation provided to you, based on which version of Intelligence you used to make your request.

Risk Score Table

risk.score RangeRisk LevelRecommendationComments
0-80lowallowtransaction with insufficient risk indicators*
81-450very-lowallowtransaction with significant confidence-building behavior on-network**
451-500medium-lowflagsuspicious transaction
501-600mediumflagsuspicious transaction
601-800highblockrisky transaction
801-1000very-highblockrisky transaction
* There isn’t enough data yet to confirm that there is a high likelihood that the transaction belongs to a genuine user. However, the transaction also doesn’t have any indicators that it is a suspicious or risky transaction. ** The transaction is assigned the “very-low” risk level because it has enough activity to suggest it likely does belong to a genuine user. This activity means there’s more data to use as the basis for the risk.score.

Reason Codes

These reason codes provide an overall risk assessment for a transaction, based on a combination of weighted trust and risk signals.
CodeNameMeaning
10010low activityNot enough activity or attributes to classify the transaction as either risky or trustworthy.
10020low regular activityTrustworthy category, based on past behavior.
10021regular activityMost trustworthy category, based on past behavior.
10030low-risk irregular activityRisky category, based on past behavior.
10031medium-risk irregular activityHigh-risk category, based on past behavior.
10032high-risk irregular activityHighest-risk category, based on past behavior.
10040irregular number typeThis number has risky static attributes (e.g., VOIP phone type or being on a blocklist).

A2P

Reason codes specific to application-to-person messaging (a2p).
CodeNameMeaningRisk SignalTrust Signal
20001no long-term activityMuch less than expected activity, or none at all, for this number over the past 90 days. Cannot classify.
20002high long-term activityMore than expected activity for this number over the past 90 days.
20003high short-term activityMore than expected activity for this number over the last 24 hours.
20004moderate long-term activityExpected activity for this number over the past 90 days.
20005moderate short-term activityExpected activity for this number over the last 24 hours.
20006sparse long-term activitySparse, regular volume of verification traffic on this number over the past 90 days.
20007continuous long-term activityContinuous, regular volume of verification traffic on this number over the past 90 days.
20008very high long-term activityVery high volume of verification traffic on this number over the past 90 days.
20009very high short-term activityVery high volume of verification traffic on this number over the past 24 hours.
20010no activityVery low volume of verification traffic, or none at all, was ever observed on this number.
20011low long-term activityLow volume of verification traffic on this phone number over the past 90 days.
20012low short-term activityLow volume of verification traffic on this number over the past 24 hours.
20013low activityLess than expected activity for this number.
CodeNameMeaningRisk SignalTrust Signal
20101no range activityVery little or no activity for a risky range this number belongs to (or not in a risky range).
20102low range activitySome activity observed for a risky range this number belongs to over the past 90 days.
20103moderate short-term range activitySignificant risky range activity in the last 24 hours.
20104moderate long-term range activitySignificant risky range activity over the past 90 days.
20105high short-term range activityVery significant activity for a risky range in the last 24 hours.
20106high long-term range activityVery significant activity for a risky range over the past 90 days.
20107very high long-term range activityExtremely high activity for a risky range over the past 90 days.
20108very high short-term range activityExtremely high activity for a risky range in the last 24 hours.
CodeNameMeaningRisk SignalTrust Signal
21001moderate activity on risky servicesSignificant activity on this number to/from risky services over the past 90 days.
21002high activity on risky servicesVery significant activity on this number to/from risky services over the past 90 days.
21004long-term activity on risky servicesVerification traffic with risky services on this number over the past 90 days.
21005short-term activity on risky servicesVerification traffic with risky services on this number over the past 24 hours.
21006high long-term activity on risky servicesHigh volume of verification traffic with risky services on this number over the past 90 days.
21007high short-term activity on risky servicesHigh volume of verification traffic with risky services on this number over the past 24 hours.
21008long-term range activity on risky servicesRisky services verification traffic on the range this number belongs to over the past 90 days.
21009short-term range activity on risky servicesRisky services verification traffic on the range this number belongs to over the past 24 hours.
21010high long-term range activity on risky servicesHigh traffic volume with risky services on this number range over the past 90 days.
21011high short-term range activity on risky servicesHigh traffic volume with risky services on this number range over the past 24 hours.
21012very high short-term activity on risky servicesVery high traffic with risky services on this number over the past 90 days.
21013very high long-term activity on risky servicesVery high traffic with risky services on this number over the past 24 hours.
21014very high short-term range activity on risky servicesVery high risky services traffic on the number’s range over the past 90 days.
21015very high long-term range activity on risky servicesVery high risky services traffic on the number’s range over the past 24 hours.
CodeNameMeaningRisk SignalTrust Signal
21003machine-like activityBehavior suggests this number is operated by a bot. A2P traffic is expected, but the user shouldn’t be automated.
21016machine-like range activityExtremely high verification volume in < 1 hour across the number’s range—indicating potential automation.
CodeNameMeaningRisk SignalTrust Signal
22001seen in the last 1 dayThis number was seen in verification traffic in the last 1 day.
22007seen in the last 7 daysThis number was seen in verification traffic in the last 7 days.
22015seen in the last 15 daysThis number was seen in verification traffic in the last 15 days.
22101seen in the last 1 monthThis number was seen in verification traffic in the last 1 month.
22102seen in the last 2 monthsThis number was seen in verification traffic in the last 2 months.
22103seen in the last 3 monthsThis number was seen in verification traffic in the last 3 months.
22203seen more than 3 months agoThis number was not seen in verification traffic in the last 3 months.

P2P

Reason codes specific to person-to-person messaging (p2p).
CodeNameMeaning
30201No P2P data analyzed.P2P data was not analyzed. Cannot classify.

Number Type

Reason codes related to the number’s type.
CodeNameMeaningRisk SignalTrust Signal
40001premium numberThis is a premium number.
40002VOIP numberThis is a VOIP number.
40003toll-free numberThis is a toll-free number.
40004invalid numberThis is an invalid number.
40005payphone numberThis number is associated with a payphone.
40006voicemail numberThis is a voicemail number.
40007pager numberThis number is associated with a pager.
40008high-risk phone typeRisky phone type not covered by other numberType codes.
40009high-risk carrierThis number is associated with a very risky carrier.
40010medium-risk carrierThis number is associated with a risky carrier.
40011high-risk prefixThis number has a risky prefix.
40012phone too longInvalid number—too long even after cleansing.
40013blacklisted numberThis number has been flagged as a source of fraud.
40014high-risk countryCountry code is associated with disproportionate fraud attacks.
40015technical numberNumber used for telecom company technical purposes (e.g., roaming).
40016number used by applicationTelesign-reserved number is being used inappropriately.
40017number whitelisted by customerYou have flagged this number as safe.
40018phone too shortThis number is too short to be valid.

IP

Reason codes related to activity of the IP address you provided for this number.
CodeNameMeaningRisk SignalTrust Signal
50001moderate short-term activityExpected level of activity for this IP address over the last 24 hours.
50002moderate long-term activityExpected level of activity for this IP address over the past 90 days.
50003moderate short-term activity on risky servicesSignificant short-term activity with risky services.
50004moderate long-term activity on risky servicesSignificant long-term activity with risky services.
50005high short-term activityHigher than expected short-term activity on this IP address.
50006high long-term activityHigher than expected long-term activity on this IP address.
50007high short-term activity on risky servicesVery significant risky short-term activity on this IP.
50008high long-term activity on risky servicesVery significant risky long-term activity on this IP.
50009very high short-term activityVery frequent IP attribute changes on this number in the last 24 hours.
50010very high long-term activityVery frequent IP attribute changes on this number in the last 90 days.
50011short-term activity on risky servicesIP attribute changes tied to risky services over the past 24 hours.
50012long-term activity on risky servicesIP attribute changes tied to risky services over the past 90 days.
50013very high short-term activity on risky servicesVery frequent risky service changes on this IP over 24 hours.
50014very high long-term activity on risky servicesVery frequent risky service changes on this IP over 90 days.
50015anonymous proxyIP address is linked to anonymous proxies.
50016VPNIP address is associated with a VPN.
50017hosting providerIP belongs to a hosting provider — atypical behavior for real users.
50018TOR exit nodeIP address is a known Tor exit node — often used to mask traffic origin.

Email

Reason codes related to activity of the email address you provided for this phone number.
CodeNameMeaningRisk SignalTrust Signal
60001moderate short-term activityExpected level of activity for this email address over the last 24 hours.
60002moderate long-term activityExpected level of activity for this email address over the past 90 days.
60003moderate short-term activity on risky servicesSignificant activity on risky services in the last 24 hours.
60004moderate long-term activity on risky servicesSignificant activity on risky services over the past 90 days.
60005high short-term activityMore than expected short-term activity on this email address.
60006high long-term activityMore than expected long-term activity on this email address.
60007high short-term activity on risky servicesVery significant short-term risky service activity.
60008high long-term activity on risky servicesVery significant long-term risky service activity.
60009very high short-term activityVery high verification traffic in the last 24 hours.
60010very high long-term activityVery high verification traffic in the past 90 days.
60011machine-generated emailBehavior suggests the email is automated or bot-controlled.
60012invalid emailThis email is invalid and likely not used by a genuine end user.
60013disposable email domainEmail from a temporary/disposable email provider.

Phone Type Codes

These codes categorize phone numbers based on their characteristics, such as whether they are fixed lines, mobile, prepaid, or other types.
CodeNameRisk LevelActionDescription
1FIXED_LINELowAllowTraditional landlines and traceable VOIP numbers.
2MOBILEMedium-LowAllowContract-based mobile phones, generally traceable.
3PREPAIDMedium-HighFlagAnonymous, prepaid mobile phones with less traceability.
4TOLL_FREEHighBlockEasily obtained numbers that forward to untraceable destinations.
5VOIPHighBlockNon-fixed, disposable, and untraceable internet-based numbers.
6PAGERHighBlockUnreachable pager numbers often used by fraudsters.
7PAYPHONEHighBlockUntraceable public payphones.
8INVALIDHighBlockThe number is not valid.
9RESTRICTED_PREMIUMHighBlockRestricted or premium numbers like 900, 911, or short codes.
10PERSONALMedium-LowAllowForwarding numbers provided by phone companies, typically low-risk.
11VOICEMAILMedium-HighBlockNumbers that ring directly to voicemail, making verification impossible.
20OTHERMedium-HighBlockMiscellaneous non-US numbers likely input incorrectly or by fraudsters.

Phone Type Override Reason Codes

These codes specify additional reasons for altering the original phone type classification, based on specific characteristics or risk factors identified.
CodeText StringDescription
1Value Added Services (VAS) NumberNumber belongs to a range used for services like virtual numbers, VoIP, or receive-SMS-online.
2Reported Fraud - High-Risk NumberNumber or range was recently involved in telecom fraud, reported by carriers.
5Premium Rate NumberNumber is in a range dedicated to premium rate or special services.
6Publicly Available NumberNumber is published online for disposable use or premium-rate services.
8Carrier Prefix AnalysisNumber matches patterns of non-fixed VoIP, prepaid, or restricted types via prefix analysis.
10SMS-enabled CarrierFixed-line number enabled for SMS, reclassified as Mobile.
11Non SMS-enabled Phone NumberFixed-line number not SMS-enabled, even if carrier supports SMS for others.

4. Verification

4.1 Verification

Endpoint

POST /phone-service/verification

Description

The Messaging API enables you to deliver important verification messages to your users through the channels they use most. For the verification endpoint, supported delivery methods include:
  • SMS: Fast and globally reliable message delivery via standard text messaging.
  • Email: A secure and user-friendly fallback or primary channel for sending verification messages.

Required Headers

HeaderValue
Content-Typeapplication/json
AuthorizationBearer yourAccessToken

Request Body Parameters

FieldTypeRequiredDescription
phoneNumberstringYes for SMSRecipient’s phone number in international format, no spaces or special characters.
methodstringYesThe delivery method to use. Only accepted values: sms or email.
emailstringYes for EMAILRecipient’s email address.
securityFactorstringNoA custom numeric OTP (3–10 digits). If omitted, a 6-digit OTP is auto-generated.
externalIdstringNoCustomer-defined transaction ID. Max length: 100 characters.
messageTemplate.namestringNoTemplate name (lowercase letters and underscores only).
messageTemplate.verificationTemplatestringNoTemplate content to be used for this verification.
voiceLangstringNoLanguage code for OTP delivery (e.g., en-US). Defaults to English if not provided.

Response Structure

FieldTypeDescription
statusbooleanIndicates whether the request was successful (true or false).
data.mobileAppTokenstringToken used to authenticate the mobile app session.
data.recipient.phoneNumberstringRecipient’s phone number in international format.
data.referenceIdstringUnique 32-character hex string that identifies the verification process.
data.statestringCurrent state of the verification process. One of: CREATED, ONGOING, REJECTED, FAILED, VERIFIED, CANCELED.
data.status.codeintegerNumeric code representing the transaction status.
data.status.descriptionstringHuman-readable description of the transaction status.
data.status.updatedOnstringISO 8601 timestamp indicating when the status was last updated.

Example Request

{
    "phoneNumber": "436501234567",
    "method": "email",
    //"method": "sms",
    "email": "test@test.com",
    "externalId": "12312",
    "securityFactor": "12345"
}

Example Response

{
    "status": true,
    "data": {
        "mobileAppToken": "a1378b455f3048059a7be9df6a9da3aa",
        "recipient": {
            "phoneNumber": "436501234567"
        },
        "referenceId": "366691874BD00250933424F72F7C50CB",
        "state": "CREATED",
        "status": {
            "code": 3901,
            "description": "Request in progress",
            "updatedOn": "2025-10-02T10:04:58.505000Z"
        }
    }
}

4.2 Verification Match

Endpoint

PATCH /phone-service/verification/{referenceId}

Description

Use this endpoint to validate the one-time passcode (OTP) provided by the end user and update the state of an active verification process. This action is typically used to finalize a verification by checking whether the user-entered OTP matches the one originally sent via SMS or email. If the OTP is correct, the verification process is marked as VERIFIED. If incorrect, an error is returned and the process may remain ONGOING, FAILED, or another relevant state depending on implementation.

Required Headers

HeaderValue
Content-Typeapplication/json
AuthorizationBearer yourAccessToken

Request Body Parameters

FieldTypeRequiredDescription
securityFactorstringYesThe OTP provided by the end user (3–10 digits). Used to verify whether the entered OTP matches the one previously sent/generated.

Response Structure

FieldTypeDescription
statusbooleanIndicates whether the request was successful (true or false).
data.status.codeintegerNumeric code representing the verification result.
data.status.descriptionstringHuman-readable description of the verification result.

Example Request

{
    "securityFactor": "12345"
}

Example Response

{
    "status": true,
    "data": {
        "status": {
            "code": 3900,
            "description": "Verified"
        }
    }
}

5. Full Phone Intelligence

Endpoint

POST /phone-service/fullPhoneIntelligence

Description

Full Phone Intelligence delivers a comprehensive risk and identity assessment for a phone number in a single API call. It combines behavioral signals, telecom intelligence, and historical data to help you detect fraud, verify identity, and make confident risk decisions. This service analyzes the phone number using various trust and risk indicators such as:
  • Activity patterns (short-term and long-term)
  • Carrier and phone type information
  • SIM swap detection
  • Call forwarding status
  • Deactivation and porting history
  • Known data breaches
  • Active call status
  • Geolocation and time zone data
  • Contact matching and scoring

Required Headers

HeaderValue
Content-Typeapplication/json
AuthorizationBearer yourAccessToken

Request Body Parameters

FieldTypeRequiredDescription
phoneNumberstringYesThe phone number to check, including country code.

Response Structure

FieldTypeDescription
statusbooleanIndicates if the API request was successful.
dataobjectContains the transaction result details.
data.referenceIdstringUnique reference ID for the transaction.
data.externalIdstringExternal reference ID (nullable).
data.statusobjectTransaction status details.
data.status.updatedOnstringTimestamp of the last update (ISO 8601 format).
data.status.codenumberStatus code (e.g., 300 for success).
data.status.descriptionstringStatus description message.
data.numberingobjectOriginal and cleansed phone number details.
data.numbering.originalobjectOriginal phone number information.
data.numbering.original.completePhoneNumberstringComplete phone number in international format.
data.numbering.original.countryCodestringCountry dialing code.
data.numbering.original.phoneNumberstringLocal phone number.
data.numbering.cleansingobjectCleansed phone number details for call and SMS.
data.numbering.cleansing.callobjectCleansed phone number details for calling.
data.numbering.cleansing.call.countryCodestringCountry dialing code after cleansing.
data.numbering.cleansing.call.phoneNumberstringCleansed local phone number for calling.
data.numbering.cleansing.call.cleansedCodenumberResult code of cleansing (e.g., 100 = valid).
data.numbering.cleansing.call.minLengthnumberMinimum valid length of phone number.
data.numbering.cleansing.call.maxLengthnumberMaximum valid length of phone number.
data.numbering.cleansing.smsobjectCleansed phone number details for SMS.
data.numbering.cleansing.sms.countryCodestringCountry dialing code after cleansing.
data.numbering.cleansing.sms.phoneNumberstringCleansed local phone number for SMS.
data.numbering.cleansing.sms.cleansedCodenumberResult code of cleansing (e.g., 100 = valid).
data.numbering.cleansing.sms.minLengthnumberMinimum valid length of phone number.
data.numbering.cleansing.sms.maxLengthnumberMaximum valid length of phone number.
data.riskInsightsobjectRisk assessment details.
data.riskInsights.statusnumberRisk status code.
data.riskInsights.categoryarrayRisk category codes.
data.riskInsights.a2ParrayApplication-to-Person (A2P) risk indicators.
data.riskInsights.p2ParrayPerson-to-Person (P2P) risk indicators.
data.riskInsights.numberTypearrayNumber type risk indicators (if any).
data.riskInsights.iparrayIP-related risk indicators (if any).
data.riskInsights.emailarrayEmail-related risk indicators (if any).
data.phoneTypeobjectPhone type information.
data.phoneType.codestringPhone type code (e.g., 2).
data.phoneType.descriptionstringPhone type description (e.g., “MOBILE”).
data.locationobjectLocation details associated with the phone number.
data.location.citystringCity of the number (if available).
data.location.statestringState or region (nullable).
data.location.zipstringZIP or postal code (nullable).
data.location.metroCodestringMetro code (nullable).
data.location.countystringCounty (nullable).
data.location.countryobjectCountry details.
data.location.country.namestringCountry name.
data.location.country.iso2stringISO 2-letter country code.
data.location.country.iso3stringISO 3-letter country code.
data.location.coordinatesobjectGeographic coordinates.
data.location.coordinates.latitudenumberLatitude (nullable).
data.location.coordinates.longitudenumberLongitude (nullable).
data.location.timeZoneobjectTime zone information.
data.location.timeZone.namestringTime zone name (nullable).
data.location.timeZone.utcOffsetMinstringMinimum UTC offset.
data.location.timeZone.utcOffsetMaxstringMaximum UTC offset.
data.carrierobjectCarrier (telecom provider) details.
data.carrier.namestringCarrier name.
data.blocklistingobjectBlocklisting details.
data.blocklisting.blockedbooleanIndicates if the number is blocklisted.
data.blocklisting.blockCodenumberBlocklisting code (e.g., 0 = not blocked).
data.blocklisting.blockDescriptionstringBlocklisting description.
data.riskobjectOverall risk score and recommendation.
data.risk.levelstringRisk level (e.g., medium-low).
data.risk.recommendationstringRisk handling recommendation (e.g., allow).
data.risk.scorenumberRisk score (numerical value).

Example Request

{
    "phoneNumber": "+436501234567"
}

Example Response

{
    "status": true,
    "data": {
        "referenceId": "3661FDC54750091C93078058241C3036",
        "externalId": null,
        "status": {
            "updatedOn": "2025-08-06T12:53:09.929413Z",
            "code": 300,
            "description": "Transaction successfully completed"
        },
        "numbering": {
            "original": {
                "completePhoneNumber": "+436501234567",
                "countryCode": "43",
                "phoneNumber": "6501234567"
            },
            "cleansing": {
                "call": {
                    "countryCode": "43",
                    "phoneNumber": "6501234567",
                    "cleansedCode": 100,
                    "minLength": 7,
                    "maxLength": 13
                },
                "sms": {
                    "countryCode": "43",
                    "phoneNumber": "6501234567",
                    "cleansedCode": 100,
                    "minLength": 7,
                    "maxLength": 13
                }
            }
        },
        "riskInsights": {
            "status": 800,
            "category": [
                10010
            ],
            "a2P": [
                22007,
                20011,
                20101
            ],
            "p2P": [
                30201
            ],
            "numberType": [],
            "ip": [],
            "email": []
        },
        "phoneType": {
            "code": "2",
            "description": "MOBILE"
        },
        "location": {
            "city": "Countrywide",
            "state": null,
            "zip": null,
            "metroCode": null,
            "county": null,
            "country": {
                "name": "Austria",
                "iso2": "AT",
                "iso3": "AUT"
            },
            "coordinates": {
                "latitude": null,
                "longitude": null
            },
            "timeZone": {
                "name": null,
                "utcOffsetMin": "+1",
                "utcOffsetMax": "+1"
            }
        },
        "carrier": {
            "name": "T-Mobile Austria GmbH"
        },
        "blocklisting": {
            "blocked": false,
            "blockCode": 0,
            "blockDescription": "Not blocked"
        },
        "risk": {
            "level": "medium-low",
            "recommendation": "allow",
            "score": 301
        }
    }
}

Status Codes

Status CodeAssociated Text StringDescription
300Transaction successfully completedThe system was able to obtain all of the requested data.
301Transaction partially completedThe system was able to obtain some of the data, but not all of it.
400Bad RequestMalformed syntax in the request. See error code for specifics.
401UnauthorizedAuthentication failed. See error code for details.
404Not FoundThe server could not find the requested resource.
429Too Many RequestsRate limit exceeded. Too many requests sent in a short period of time.
500Invalid TransactionTransaction not attempted due to a system issue.
503Service UnavailableSystem is temporarily unavailable. Try again later.
I