Score API - Get started

This page includes general requirements and service details for this product, as well as instructions on how to use all of its actions.

Looking for insights reason codes? Check out Score API - Insights reason code mappings.

Reference page

POST /v1/score/{complete_phone_number}

General requirements

  • Authentication: Basic (easiest to implement) or Digest
  • Endpoint:
  • Encoding: Accepts only UTF-8 unicode characters as inputs.
  • Accepts: application/x-www-form-urlencoded
  • Responds With: application/json
  • Required Headers: Content-Type - application/x-www-form-urlencoded

Understanding your score and related details

The score returned for a phone number is a measure of the risk involved with conducting online business transactions with its registered owner. The score ranges from zero to 1000, with a higher score indicating a higher risk.

The other details related to the score that are returned with it are:

  • Level: An assessment of the level of risk involved with conducting business with the person registered to this phone number.
  • Recommendation: Advice on the safest course of action to follow (to either proceed with the online transaction, to proceed with caution, or to not proceed at all).

What is different about Score 2.0?

Requests to the API can be configured to return either a Score 2.0 result or the legacy Score 1.0 result.

Score 2.0 differs from the original Score in two critical ways:

  • Richer Datasets: Score 2.0 has access to richer datasets, allowing us to use advanced machine learning techniques to discover new patterns.
  • Improved Score Scale: The discovery of more behavioral patterns in Score 2.0 has allowed us to augment existing risk zones (medium, high), while also creating a new risk zone (very low). The users in this new zone have displayed human-like behavior on international telco networks and so have a high likelihood of being genuine users.



Because of the differences described above between Score 1.0 and 2.0, do not use these two response types within the same integration. Although we have kept the API endpoint the same for ease of migration, the new score output is both a substantial improvement and a substantial change. Be sure to do your full due diligence on the effects of using Score 2.0 on your integration, so you can get maximum value from this upgrade. Our customer facing teams are ready to assist you with this integration change.


Insights is a package of data points included in Intelligence 2.0 results with more in-depth details related to the risk presented by the phone number. See Score API - Insights reason code mappings for more detail about each available insight.

Score Scales

Use the appropriate scale below for interpreting the score, based on which version of Score you used to make your request.

Score 2.0

ScoreRisk LevelRecommendationComments
0-80lowallowusers with insufficient risk indicators
81-450very lowallowusers with significant confidence-building behavior on-network
451-500medium-lowflagsuspicious users
501-600mediumflagsuspicious users
601-800highblockrisky users
801-1000very highblockrisky users

Score 1.0

ScoreRisk LevelRecommendation


Request a reputation score for a phone number

Reference Page: POST /v1/score/{complete_phone_number}

Use this action to obtain a reputation score and other relevant information for a specified phone number. The service also provides the data elements you would normally see returned by Telesign Phone ID.

The reference page includes full details for each request parameter and response property.

Try it

If you have been granted access and credentials for Intelligence, you can try a test request on the page POST /v1/score/{complete_phone_number}. You can also get a code snippet for the request.

  1. Click the Auth tab and for Username add your Customer ID. For Password add your API key.
  2. Click the Settings tab. In the complete_phone_number field enter the phone number you want a score for, including the country code but with no special characters or spaces.
  3. Click the Body tab to modify your request parameters, if desired. See POST /v1/score/{complete_phone_number} for full parameter details.
  4. Click Send.
  5. Click the Code Generation tab and use the Language and Library menus to choose the language you want your code snippet in.



Using your account credentials in the API Explorer to request a score results in your account being charged for the transaction.


Example 1: Success


POST /v1/score/15555551212 HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Basic pPF9MAXw9ssP0rkk8sbWf18Fny5Vgqi4F1owcHADr8LXk8PMWIvWqeg419NNXmBtMkaTJi3U5IOhOrNOY1ZXdBv3pLZxn08Rah8mMTGv623wYqmmNRcI5adDVnYbm1ejt2E4JCiMmOFahwcNcy844cpz8dTEWMVo1XthlYf=
account_lifecycle_event=create&request_risk_insights=true&originating_ip=[email protected]

Response (body only)

  "reference_id": "B567DC5D1180011C8952823CF6B40773",
  "status": {
    "updated_on": "2017-02-01T00:33:34.860418Z",
    "code": 300,
    "description": "Transaction successfully completed"
  "numbering": {
    "original": {
      "complete_phone_number": "15555551212",
      "country_code": "1",
      "phone_number": "5555551212"
    "cleansing": {
      "call": {
        "country_code": "1",
        "phone_number": "5555551212",
        "cleansed_code": 105,
        "min_length": 10,
        "max_length": 10
      "sms": {
        "country_code": "1",
        "phone_number": "5555551212",
        "cleansed_code": 105,
        "min_length": 10,
        "max_length": 10
  "phone_type": {
    "code": "8",
    "description": "INVALID"
  "location": {
    "city": "Countrywide",
    "state": null,
    "zip": null,
    "metro_code": null,
    "county": null,
    "country": {
      "name": "United Kingdom",
      "iso2": "GB",
      "iso3": "GBR"
    "coordinates": {
      "latitude": null,
      "longitude": null
    "time_zone": {
      "name": null,
      "utc_offset_min": "0",
      "utc_offset_max": "0"
  "carrier": {
    "name": "Telefonica UK Limited"
  "risk": {
    "level": "high",
    "recommendation": "block",
    "score": 959
  "risk_insights": {
    "status": 800,
    "category": [
    "a2p": [
    "p2p": [
    "number_type": [
    "ip": [
    "email": [

Example 2: Failure

If something goes wrong with your request, the response you get looks like the example below. The exact response properties you see will depend on the type of failure.


POST /v1/score/15555551212 HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: Basic pPF9MAXw9ssP0rkk8sbWf18Fny5Vgqi4F1owcHADr8LXk8PMWIvWqeg419NNXmBtMkaTJi3U5IOhOrNOY1ZXdBv3pLZxn08Rah8mMTGv623wYqmmNRcI5adDVnYbm1ejt2E4JCiMmOFahwcNcy844cpz8dTEWMVo1XthlYf=
account_lifecycle_event=&request_risk_insights=true&originating_ip=[email protected]

Response (body only)

  "reference_id": "B56C5CAC2964010889502ADC56641615",
  "status": {
    "code": 11003,
    "description": "Invalid value for parameter account_lifecycle_event.",
    "updated_on": "2017-03-28T23:05:48.398146Z"


Did this page help you?