{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"663776f1-97cb-4718-a159-43a6b151c216","name":"Phronesis API v1","description":"[Phronesis](https://www.phronesis.net) provides a platform to small and mid-size companies that helps give certainty to the complex task of validating their customers. We help banks, payment providers, insurance companies, retailers, fintech, lending, logistics specialists and more fight fraud by identifying and verifying their mobile customers.  \n\nAs the digital economy expands, more and more security challenges are presented to these businesses. There is a need to know, with absolute certainty, that their customers are genuine and are presenting valid information when applying for, or accessing products & services.\n\n[Phronesis](https://www.phronesis.net) blends trusted data provided by UK mobile operators with our own proprietary validation techniques to help companies make better decisions. We call this Network Biometrics™.\n\nThe Phronesis API suite allows you to programatically access data stored by telecommunications providers in relation to a given number.\n\nThe easiest way to get started with the various API calls is to click on the Run in Postman button present at the top of the resource page and use the Postman App to send requests.\n\n# Overview\n\n1. You need a valid API\\_token and API\\_secret to send request to the API endpoint. These will have been provided to you during the onboarding process.\n2. The API will only accept and respond to secure communications using HTTPS\n3. Response to every request is in the [JSON format](https://en.wikipedia.org/wiki/JSON) and as such the API will only accept requests with the Content-Type set to application/json. An invalid JSON request or Content-type will result in a `400 Bad request`.\n4. The API calls will respond with appropriate [HTTP status codes](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes) and a suitable `status` and `status_description` for all requests. Generally a `200 OK` indicates the transaction has been successful.\n\n# API endpoints\n\nDepending on your account plan you will get access to one or more of the following API platforms.\n\n| Account Plan | API endpoint                        |\n|--------------|-------------------------------------|\n| Test         | https://dev.api.phronesis.tech/     |\n| Developer    | https://sandbox.api.phronesis.tech/ |\n| Live         | https://api.phronesis.tech/         | \n\n# Authentication and Authorisation\n\n1. A combination of API token and secret is required to make a request to the API. The token and secret form part of the payload of each request.\n2. Access to some of the API require the pre-approval of a suitable use case with the mobile operators. Applying for a use case is done through your customer portal. Submission of an invalid use case will result in a `400 Bad request` with a status of `213 Invalid use case identifier`.\n2. For ease of use inside Postman, you could store your API key in an [environment variable](https://www.getpostman.com/docs/environments) called API\\_token and API\\_secret and this [Collection](https://www.getpostman.com/docs/collections) will automatically use it to make API calls.\n3. Authentication errors will result in a `401 Unauthorized` response code with the `status` and `status\\_description` giving further feedback on the error.\n4. Access to the Administration and Provisioning APIs require an API\\_token with admin privileges.\n\n# Support\n\nPlease use the [service desk](https://backoffice.phronesis.net:8443/servicedesk/customer/portal/3) to request assistance or email [support@phronesis.net](mailto:support@phronesis.net)\n\n<a name=\"API-status-codes-reference\"></a>\n# API status codes reference\n\n| HTTP status code | Status code | Status description | Status type |\n|:----------------:|:-----------:|:-------------------|:------------|\n| 200 | 0   | transaction successful | Success |\n| 200 | 305 | subscriber absent, data may be incomplete | Temporary |\n| 200 | 306 | unknown subscriber, data may be incomplete | Fatal |\n| 200 | 308 | teleservice not provisioned for subscriber | Temporary |\n| 200 | 309 | call or SMS facility barred for subscriber | Fatal |\n| 200 | 310 | call or SMS facility not currently supported in serving network | Temporary |\n| 202 | 300 | call Forward check failed | Temporary | \n| 202 | 301 | SIM swap check failed | Temporary |\n| 202 | 302 | country check failed | Temporary |\n| 202 | 303 | user information check failed | Temporary |\n| 202 | 304 | vicinity check failed | Temporary |\n| 202 | 307 | no coverage for country | Fatal | \n| 400 | 103 | bad request | Fatal |\n| 400 | 104 | invalid Content-Type header | Fatal |\n| 400 | 207 | invalid parameters | Fatal |\n| 400 | 208 | invalid postcode parameter | Fatal |\n| 400 | 209 | invalid name parameter | Fatal |\n| 400 | 210 | invalid address parameter | Fatal |\n| 400 | 211 | invalid birthdate parameter | Fatal |\n| 403 | 212 | MNO access not authorised | Fatal | \n| 400 | 213 | invalid use case identifier | Fatal |\n| 400 | 214 | invalid number parameter | Fatal |\n| 401 | 100 | user account not found | Fatal |\n| 401 | 101 | authentication failed | Fatal \n| 401 | 102 | user account suspended | Fatal |\n| 401 | 106 | admin privileges required for this API | Fatal |\n| 401 | 200 | IP address not whitelisted | Fatal |\n| 401 | 204 | product not provisioned for your account | Fatal | \n| 401 | 206 | product availability suspended for your account | Temporary |\n| 403 | 802 | datasource temporarily not available | Temporary | \n| 404 | 804 | resource not found | Fatal |\n| 404 | 404 | subscriber opted out of service | Fatal |\n| 404 | 405 | invalid number | Fatal |\n| 404 | 807 | subscriber data unavailable | Temporary |\n| 405 | 105 | method not allowed | Fatal |\n| 408 | 806 | datasource query time out | Temporary |\n| 502 | 803 | datasource query failed | Fatal |\n| 502 | 805 | database subsystem error | Fatal |\n| 503 | 201 | request was throttled. submission limits exceeded | Temporary |\n| 503 | 202 | request was throttled. submission limits exceeded | Temporary |\n| 503 | 203 | request was throttled. submission limits exceeded | Temporary |\n| 503 | 800 | database subsystem unavailable | Temporary |\n| 503 | 801 | datasource permanently unavailable | Fatal |\n| 503 | 808 | service not available for MVNO | Fatal | \n\n# API input parameters reference\n\n| Parameter | Description | Type | Validation regex |\n|:----------|:------------|:-----|:-----------|\n| API\\_token | your API key | *string* | ```^\\w{0,64}$``` |\n| API\\_secret| your API secret | *string* | ```^\\w{0,64}$``` |\n| use\\_case  | your use case authorisation identifier for the API request. | *string* | ```^[0-9a-f\\-]{36}$``` |\n| correlation\\_id | A correlation identifier provided by the customer and used to uniquely track the transactions end to end. The value provided will be echoed back in the responses. | *string* | ```^\\w{0,64}$``` |\n| number | a valid number in [E.164](https://en.wikipedia.org/wiki/E.164) format | *string* | ```^\\d{10,15}$``` |\n| first\\_name | the subscriber's first name. Case or special characters are not important, the API will normalise before submission. | *string* | ```^\\w{1,20}$``` |\n| surname | the subscriber's surname. Case or special characters are not important, the API will normalise before submission.| *string* | ```^\\w{1,20}$``` |\n| house\\_number | the subscriber's house number. | *string* | ```^\\w{1,20}$``` |\n| house\\_name | the subscriber's house name (if house number is not available). | *string* | ```^\\w{1,80}$``` |\n| postcode | the subscriber's postcode | *string* | ```^\\w{1,7}$``` |\n| date\\_of\\_birth | the subscriber's date of birth in [hyphenated little endian](https://en.wikipedia.org/wiki/Date_format_by_country) format (e.g. 01-12-2000). | *string* | ```^[0123]+[0-9]+\\-[01]+[012]+\\-[0-9]{4}\\-$``` |\n| from | the originator of the text message | *string* | ```^\\w{1,16}$``` |\n| on\\_success | the content of the text message to send if checks succeed. | *string* | ```^\\w{1,160}$``` |\n| on\\_failure | the content of the text message to send if checks fail. | *string* | ```^\\w{1,160}$``` |\n      \n# API output parameters reference\n\n| Parameter | Description | Type | Validation regxex |\n|:----------|:------------|:-----|:------------------|\n| transaction\\_id | a unique transaction identifier to track the request and response in UUID V4 format. | *string* | ```^[0-9a-f\\-]{36}$``` |\n| status | The outcome of the request, 0 on success or an [error code](#API-status-codes-reference). | *string* | ```^\\d{1,3}$``` |\n| status\\_message| a textual representation of the `status`. | *string* | ```^.{1,255}$``` |\n| number | echoes the input number in [E.164](https://en.wikipedia.org/wiki/E.164) format | *string* | ```^\\d{10,15}$``` |\n| number\\_ID | a unique subscriber identifier related and unique to a SIM card. In most cases this will be a SHA236 hashed version of the IMSI. | *string* | ```^\\w{64}$``` |\n| number\\_ID\\_updated\\_on | the date and time when the routing information was last updated. In [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations) format | *string* | ```^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]\\|0[1-9])-(3[01]\\|0[1-9]\\|[12][0-9])T(2[0-3]\\|[01][0-9]):([0-5][0-9]):([0-5][0-9])(\\\\.[0-9]+)?(Z)?$``` |\n| roaming\\_country | the country the subscriber is currently in. Returned in [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2) format (e.g. GB). | *string* | ```^\\w{0,64}$``` |\nhas_unconditional | indicates if unconditional call forwarding is set (true) or not (false)  | *boolean* | ```^(true\\|false)$``` |\n| is\\_valid_| indicates if the subscriber's number is valid (true) or not (false) | *boolean* | ```^(true\\|false)$``` |\n| is_roaming | indicates if the subscriber is roaming (true) or not (false)  | *boolean* | ```^(true\\|false)$``` |\n| is\\_lost\\_or\\_stolen| indicates if the subscriber number is lost or stolen (true) or not (false) | *boolean* | ```^(true\\|false)$``` |\n| is\\_online| indicates if the subscriber is on the network (true) or not (false). **Note that it is possible for the subscriber to appear online for a period of time after disconnecting from the network.** | | ```^(true\\|false)$``` |\n| is\\_swapped| indicates if the subscriber identify has changed (true) or not (false) | *boolean* | ```^(true\\|false)$``` |\n| MCC | the subscriber's [mobile country code](https://en.wikipedia.org/wiki/Mobile_country_code). | *string* | ```^\\d{3}$```|\n| MNC | the subscriber's [mobile country code](https://en.wikipedia.org/wiki/Mobile_country_code). | *string* | ```^\\d{2,3}$```|\n| ported\\_from | the network operator the subscriber ported from initially. | *string* | ```^\\w{1,50}$```|\n| SPN | the current network operator of the subscriber. | *string* | ```^\\w{1,50}$```|\n| prefix | the prefix of the subscriber's number matching its number range owner (see **prefix_owner**).| *string* | ```^\\d{1,7}$```|\n| prefix\\_owner | the network operator the subscriber's number belongs to. | *string* | ```^\\w{1,50}$```|\n| SRI\\_updated\\_on | the time and date the subscriber's routing information was acquired. In [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations) format. | *string* | ```^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]\\|0[1-9])-(3[01]\\|0[1-9]\\|[12][0-9])T(2[0-3]\\|[01][0-9]):([0-5][0-9]):([0-5][0-9])(\\\\.[0-9]+)?(Z)?$``` |\n| name\\_match | whether the name of the subscriber is correct (true) or not (false) | *boolean* | ```^(true\\|false)$``` |\n| name\\_data\\_available | whether the name of the subscriber is available to match (true) or not (false) | *boolean* | ```^(true\\|false)$``` |\n| first_name\\_match | whether the first name of the subscriber is correct (true) or not (false) | *boolean* | ```^(true\\|false)$``` |\n| first_name\\_data\\_available | whether the first name of the subscriber is available to match (true) or not (false) | *boolean* | ```^(true\\|false)$``` |\n| last_name\\_match | whether the last name of the subscriber is correct (true) or not (false) | *boolean* | ```^(true\\|false)$``` |\n| last_name\\_data\\_available | whether the last name of the subscriber is available to match (true) or not (false) | *boolean* | ```^(true\\|false)$``` |\n| address\\_match| whether the address of the subscriber is correct (true) or not (false) | *boolean* | ```^(true\\|false)$``` |\n| address\\_data\\_available| whether the address of the subscriber is available to match (true) or not (false) | *boolean* | ```^(true\\|false)$``` |\n| postcode\\_match| whether the postcode of the subscriber is correct (true) or not (false) | *boolean* | ```^(true\\|false)$``` |\n| postcode\\_data\\_available| whether the postcode of the subscriber is available to match (true) or not (false) | *boolean* | ```^(true\\|false)$``` |\n| birthdate\\_match| whether the date of birth of the subscriber is correct (true) or not (false) | *boolean* | ```^(true\\|false)$``` |\n| birthdate\\_data\\_available| whether the date of birth of the subscriber is available to match (true) or not (false) | *boolean* | ```^(true\\|false)$``` |\n| contract\\_type | the contract type of the subscriber. | *string* | ```^(PAYG\\|PAYM\\|Business)$``` |\n| country\\_name | the country name the subscriber is registered in. | *string* | ```^\\w{0,64}$``` |\n| country\\_code | the country code the subscriber is registered in. Returned in [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2) format (e.g. GB). | *string* | ```^\\w{0,64}$``` |\n| country\\_dial\\_code | the country dial code of the subscriber. | *string* | ```^\\d{1,3}$```|\n| minutes | the time in minutes since the acquisition of the subscriber's location. | *string* | ```^\\w{1,50}$```|\n| meters | the distance in meters between the geographical centre of the postcode submitted and the cell tower that the subscriber is attached to. | *string* | ```^\\d{1,10}$```|\n| location\\_type | if available, the level of accuracy in decreasing order. | *string* | ```^(CellTower\\|CellTowerGroup\\|IsoCountry\\|NoHandsetFix)$``` |\n| timestamp | the time of acquisition of the location information in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations) format. | *string* | ```^(-?(?:[1-9][0-9]*)?[0-9]{4})-(1[0-2]\\|0[1-9])-(3[01]\\|0[1-9]\\|[12][0-9])T(2[0-3]\\|[01][0-9]):([0-5][0-9]):([0-5][0-9])(\\\\.[0-9]+)?(Z)?$``` |\n\n# API UK coverage\n\n* X: available\n* X (TBA): in implementation stage\n* Roadmap date stated otherwise\n\n| API | Vodafone UK | EE UK | H3G UK | O2 UK | Notes |\n|:----|:-----------:|:-----:|:------:|:-----:|:-----:|\n| servingNetwork | X | X | X | X ||\n| numberValidity | X | X | X | X ||\n| numberRangeOwner | X | X | X | X ||\n| portedStatus | X | X | X | X ||\n| roamingStatus | X | X | X | Q3-2020 ||\n| roamingCountry | X (TBA) | X (TBA) | X (TBA) | X (TBA) ||\n| callForward | X | X | X | X ||\n| SIMStatus | X | X | X | X ||\n| locationVicinity | X | X | X | X ||\n| SmartSM - Basic | X | X | X |  X ||\n| SmartSM - Standard | X | X | X | X ||\n| SmartSM - Assured | X | X | X |  X ||\n| MNO - Match | X | X | X | X | first and last name & postcode match only available on EE |\n\n# API reference\n","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"11369171","collectionId":"663776f1-97cb-4718-a159-43a6b151c216","publishedId":"UzJESyhn","public":true,"publicUrl":"https://developer.api.v1.phronesis.tech","privateUrl":"https://go.postman.co/documentation/11369171-663776f1-97cb-4718-a159-43a6b151c216","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"EF5B25"},"documentationLayout":"classic-double-column","customisation":null,"version":"8.10.0","publishDate":"2022-07-01T14:07:48.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{},"logos":{}},"statusCode":200},"environments":[],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/768118b36f06c94b0306958b980558e6915839447e859fe16906e29d683976f0","favicon":"https://phronesis.tech/favicon.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"}],"canonicalUrl":"https://developer.api.v1.phronesis.tech/view/metadata/UzJESyhn"}