Trust is the best solution to prevent malicious actions on your platform through APIs.
Verify the validity of your customers' and users' information in seconds: from mobile number to email and personal data.
All the knowledge you need
Here you can find some advice to consider to approach this API. If you prefer, we provide code samples, OAS3 documentation, the ability to try the API live via the Swagger UI or import the entire collection into Postman. We also offer a Sandbox environment where you can experiment with all kinds of requests completely free of charge.
Get the token in the appropriate section before you start.
API trust
Validate phone
POST /mobile-start/{mobile-phone-number}Create a new request, the body post is used to specify "callback" parameters. The system will start a globl HLR lookup on the specified phone number.
Some mobile carriers and network congestion can slow down the request.
If the search takes longer than 10 seconds, you'll get a partial result with a status of "NEW" or "WAIT". Just wait for a notification when the search is finished. You can also check the status manually using the GET method and the provided ID.
Validate email
POST /email-start/{email}Create a new request to validate an email address. The body can specify callback parameters. The system will start an email validation process.
If the validation takes longer than a few seconds, you might get a partial result with status 'NEW' or 'WAIT'. Check status manually using GET /email-start/{id} or wait for callback.
Validate phone (advanced)
POST /mobile-advanced/{mobile-phone-number}Create a new request for an advanced mobile phone validation, including fraud score, carrier, line type, and more. If the validation takes longer than a few seconds, you might get a partial result with status 'NEW' or 'WAIT'. Check status manually using GET /mobile-advanced/{id} or wait for callback.
Validate email (advanced)
POST /email-advanced/{email}Create a new request for an advanced email validation, including fraud score, deliverability, and reputation. If the validation takes longer than a few seconds, you might get a partial result with status 'NEW' or 'WAIT'. Check status manually using GET /email-advanced/{id} or wait for callback.
Validate url (advanced)
POST /url-advanced/{url}Create a new request to scan a URL for phishing, malware, and other threats, and assess its risk score. If the validation takes longer than a few seconds, you might get a partial result with status 'NEW' or 'WAIT'. Check status manually using GET /url-advanced/{id} or wait for callback.
Validate ip (advanced)
POST /ip-advanced/{ip}Create a new request to analyze an IP address for proxy, VPN, or TOR connections, and assess its fraud score and reputation. If the validation takes longer than a few seconds, you might get a partial result with status 'NEW' or 'WAIT'. Check status manually using GET /ip-advanced/{id} or wait for callback.
Retrieve a validation request
GET /mobile-start/{id}Returns a request detail to check the "state"
GET /email-start/{id}
Returns a request detail to check the "state"
GET /mobile-advanced/{id}
Returns a request detail to check the "state"
GET /email-advanced/{id}
Returns a request detail to check the "state"
GET /url-advanced/{id}
Returns a request detail to check the "state"
GET /ip-advanced/{id}
Returns a request detail to check the "state"
- Oas file url https://console.openapi.com/oas/en/trust.openapi.json
- Fork or import with Postman
- Production domain trust.openapi.com
- Sandbox domain test.trust.openapi.com
-
Production Scopes 12
- POST trust.openapi.com/mobile-start
- GET trust.openapi.com/mobile-start
- GET trust.openapi.com/email-start
- POST trust.openapi.com/email-start
- GET trust.openapi.com/mobile-advanced
- GET trust.openapi.com/email-advanced
- GET trust.openapi.com/url-advanced
- GET trust.openapi.com/ip-advanced
- POST trust.openapi.com/mobile-advanced
- POST trust.openapi.com/email-advanced
- POST trust.openapi.com/url-advanced
- POST trust.openapi.com/ip-advanced
-
Sandbox Scopes 12
- POST test.trust.openapi.com/mobile-start
- GET test.trust.openapi.com/mobile-start
- POST test.trust.openapi.com/email-start
- GET test.trust.openapi.com/email-start
- GET test.trust.openapi.com/mobile-advanced
- GET test.trust.openapi.com/email-advanced
- GET test.trust.openapi.com/url-advanced
- GET test.trust.openapi.com/ip-advanced
- POST test.trust.openapi.com/mobile-advanced
- POST test.trust.openapi.com/email-advanced
- POST test.trust.openapi.com/url-advanced
- POST test.trust.openapi.com/ip-advanced
Trust (1.0.0)
Use this API to verify the validity and trustworthiness of data such as email addresses and mobile phone numbers.
Retrive a request
Returns a request detail to check the "state"
Authorizations:
path Parameters
id required | string Example: 66c881896de559cb65055392 request id obtained using the "POST" method |
Responses
Response Schema: application/json
object (mobile-start) | |
success | boolean |
message | string |
error | string |
Request samples
- C + Libcurl
- Csharp + Restsharp
- Go + Native
- Java + Okhttp
- Java + Unirest
- Javascript + Jquery
- Javascript + Xhr
- Node + Native
- Node + Request
- Node + Unirest
- Objc + Nsurlsession
- Ocaml + Cohttp
- Php + Curl
- Php + Http1
- Php + Http2
- Python + Python3
- Python + Requests
- Ruby + Native
- Shell + Curl
- Shell + Httpie
- Shell + Wget
- Swift + Nsurlsession
CURL *hnd = curl_easy_init(); curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET"); curl_easy_setopt(hnd, CURLOPT_URL, "https://trust.openapi.com/mobile-start/%7Bid%7D"); struct curl_slist *headers = NULL; headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN"); curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers); CURLcode ret = curl_easy_perform(hnd);
Response samples
- 200
- 404
- 406
- "data": {
- "isPossible": true,
- "isValid": true,
- "regionCode": "IT",
- "isValidNumberForRegion": true,
- "numberType": "MOBILE",
- "requestedNumber": "00393332114774",
- "formattedNumber": "+393332114774",
- "createdAt": "2024-09-06T13:56:19+00:00",
- "updatedAt": "2024-09-06T13:56:19+00:00",
- "state": "DONE",
- "network": "MNO - Vodafone Italy",
- "originalNetwork": "MNO - TIM (Telecom Italia SpA)",
- "roaming": false,
- "ported": true,
- "country": "Italy",
- "countryPrefix": "39",
- "details": "DELIVERED_TO_HANDSET",
- "id": "66db0a03e8ba8710290e3c0f"
- "success": true,
- "message": "",
- "error": ""
Create a new HLR request
Create a new request, the body post is used to specify "callback" parameters. The system will start a globl HLR lookup on the specified phone number.
Some mobile carriers and network congestion can slow down the request. If the search takes longer than 10 seconds, you'll get a partial result with a status of "NEW" or "WAIT". Just wait for a notification when the search is finished. You can also check the status manually using the GET method and the provided ID.
Authorizations:
path Parameters
mobile-phone-number required | string Example: +393939989747 The mobile phone in complete of the international prefix |
Request Body schema: application/json
object This is our standardized OpenAPI callback system. It enables the configuration of parameters for receiving notifications about status updates of asynchronous requests to this endpoint. |
Responses
Response Schema: application/json
object (mobile-start) | |
success | boolean |
message | string |
error | string |
Request samples
- Payload
- C + Libcurl
- Csharp + Restsharp
- Go + Native
- Java + Okhttp
- Java + Unirest
- Javascript + Jquery
- Javascript + Xhr
- Node + Native
- Node + Request
- Node + Unirest
- Objc + Nsurlsession
- Ocaml + Cohttp
- Php + Curl
- Php + Http1
- Php + Http2
- Python + Python3
- Python + Requests
- Ruby + Native
- Shell + Curl
- Shell + Httpie
- Shell + Wget
- Swift + Nsurlsession
Response samples
- 200
- 406
- "data": {
- "isPossible": true,
- "isValid": true,
- "regionCode": "IT",
- "isValidNumberForRegion": true,
- "numberType": "MOBILE",
- "requestedNumber": "00393332114474",
- "formattedNumber": "+393332114474",
- "createdAt": "2024-09-06T13:56:19+00:00",
- "updatedAt": "2024-09-06T13:56:19+00:00",
- "state": "DONE",
- "network": "MNO - Vodafone Italy",
- "originalNetwork": "MNO - TIM (Telecom Italia SpA)",
- "roaming": false,
- "ported": true,
- "country": "Italy",
- "countryPrefix": "39",
- "details": "DELIVERED_TO_HANDSET",
- "id": "66db0a03e8ba8710290e3c0f"
- "success": true,
- "message": "",
- "error": null
Retrieve an email validation request
Returns an email validation request detail to check the "state" and results.
Authorizations:
path Parameters
id required | string Example: 77e9e92216065fa37f3c9842 Request ID obtained using the POST /email-start/{email} method |
Responses
Response Schema: application/json
object (email-start) | |
success | boolean |
message | string |
error | string |
Request samples
- C + Libcurl
- Csharp + Restsharp
- Go + Native
- Java + Okhttp
- Java + Unirest
- Javascript + Jquery
- Javascript + Xhr
- Node + Native
- Node + Request
- Node + Unirest
- Objc + Nsurlsession
- Ocaml + Cohttp
- Php + Curl
- Php + Http1
- Php + Http2
- Python + Python3
- Python + Requests
- Ruby + Native
- Shell + Curl
- Shell + Httpie
- Shell + Wget
- Swift + Nsurlsession
CURL *hnd = curl_easy_init(); curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET"); curl_easy_setopt(hnd, CURLOPT_URL, "https://trust.openapi.com/email-start/%7Bid%7D"); struct curl_slist *headers = NULL; headers = curl_slist_append(headers, "Authorization: Bearer REPLACE_BEARER_TOKEN"); curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers); CURLcode ret = curl_easy_perform(hnd);
Response samples
- 200
- 404
- 406
- "data": {
- "validSpf": false,
- "validDmarc": true,
- "spfDetails": {
- "domain": "openapi.com",
- "dnsServerUsed": "1.1.1.1",
- "queriedDnsForTxt": true,
- "selectedSpfRecord": "v=spf1 include:spf.mailtrusted.org include:emsd1.com include:mailgun.org -all",
- "formalValidity": {
- "startsWithVspf1": true,
- "hasValidAllMechanism": false,
- "dnsMechanismLookupCount": 10,
- "maxDnsMechanismLookups": 10,
- "voidLookupCount": 0,
- "maxVoidLookups": 2,
- "hasRedirectModifier": false,
- "redirectDomain": null,
- "syntaxErrors": [
- "DNS lookup limit at 'include:_spf2.mailgun.org'."
- "warnings": [ ],
- "explanationDomain": null
- "parsedMechanisms": [
- {
- "term": "include:spf.mailtrusted.org",
- "mechanism": "include",
- "value": "spf.mailtrusted.org",
- "qualifier": "+",
- "lookupCost": 1,
- "isVoidLookup": false,
- "ipsFound": [ ],
- "effectiveResultIfMatched": "PASS",
- "includedReport": {
- "recurse": "all submechanisms included"
- {
- "term": "include:emsd1.com",
- "mechanism": "include",
- "value": "emsd1.com",
- "qualifier": "+",
- "lookupCost": 1,
- "isVoidLookup": false,
- "ipsFound": [ ],
- "effectiveResultIfMatched": "PASS",
- "includedReport": {
- "recurse": "all submechanisms included"
- "allMechanismDetails": null,
- "collectedIpAddresses": {
- "ip4": [
- "207.180.201.22",
- "207.180.222.205",
- "207.180.226.204",
- "etc"
- "ip6": [
- "2001:4860:4000::/36",
- "2404:6800:4000::/36",
- "etc"
- "fromA": [ ],
- "fromMx": [ ]
- "summary": {
- "totalDnsMechanismLookupsUsed": 10,
- "finalProcessingResult": "PERMERROR",
- "evaluationLog": [ ]
- "dmarcDetails": {
- "recordFound": true,
- "record": "v=DMARC1; p=none",
- "dnsQueryDomain": "_dmarc.openapi.com",
- "dnsServerUsed": "8.8.8.8",
- "policy": "none",
- "subdomainPolicy": null,
- "alignmentDkim": "r",
- "alignmentSpf": "r",
- "percentage": 100,
- "reportingUrisAggregate": [ ],
- "reportingUrisFailure": [ ],
- "failureOptions": [ ],
- "errors": [ ],
- "warnings": [ ]
- "createdAt": "2025-05-27T12:58:39+00:00",
- "updatedAt": "2025-05-27T12:58:40+00:00",
- "state": "NEW",
- "id": "6835b6fff6722090d00e74fb"
- "success": true,
- "message": "",
- "error": null
Create a new email validation request
Create a new request to validate an email address. The body can specify callback parameters. The system will start an email validation process. If the validation takes longer than a few seconds, you might get a partial result with status 'NEW' or 'WAIT'. Check status manually using GET /email-start/{id} or wait for callback.
Authorizations:
path Parameters
email required |
Request Body schema: application/json
object This is our standardized OpenAPI callback system. It enables the configuration of parameters for receiving notifications about status updates of asynchronous requests to this endpoint. |
Responses
Response Schema: application/json
object (email-start) | |
success | boolean |
message | string |
error | string |
Request samples
- Payload
- C + Libcurl
- Csharp + Restsharp
- Go + Native
- Java + Okhttp
- Java + Unirest
- Javascript + Jquery
- Javascript + Xhr
- Node + Native
- Node + Request
- Node + Unirest
- Objc + Nsurlsession
- Ocaml + Cohttp
- Php + Curl
- Php + Http1
- Php + Http2
- Python + Python3
- Python + Requests
- Ruby + Native
- Shell + Curl
- Shell + Httpie
- Shell + Wget
- Swift + Nsurlsession
- "callback": {
- "custom": {
- "orderId": "email-check-456"
Response samples
- 200
- 400
- 406
- "data": {
- "validSpf": false,
- "validDmarc": true,
- "spfDetails": {
- "domain": "openapi.com",
- "dnsServerUsed": "1.1.1.1",
- "queriedDnsForTxt": true,
- "selectedSpfRecord": "v=spf1 include:spf.mailtrusted.org include:emsd1.com include:mailgun.org -all",
- "formalValidity": {
- "startsWithVspf1": true,
- "hasValidAllMechanism": false,
- "dnsMechanismLookupCount": 10,
- "maxDnsMechanismLookups": 10,
- "voidLookupCount": 0,
- "maxVoidLookups": 2,
- "hasRedirectModifier": false,
- "redirectDomain": null,
- "syntaxErrors": [
- "DNS lookup limit at 'include:_spf2.mailgun.org'."
- "warnings": [ ],
- "explanationDomain": null
- "parsedMechanisms": [
- {
- "term": "include:spf.mailtrusted.org",
- "mechanism": "include",
- "value": "spf.mailtrusted.org",
- "qualifier": "+",
- "lookupCost": 1,
- "isVoidLookup": false,
- "ipsFound": [ ],
- "effectiveResultIfMatched": "PASS",
- "includedReport": {
- "recurse": "all submechanisms included"
- {
- "term": "include:emsd1.com",
- "mechanism": "include",
- "value": "emsd1.com",
- "qualifier": "+",
- "lookupCost": 1,
- "isVoidLookup": false,
- "ipsFound": [ ],
- "effectiveResultIfMatched": "PASS",
- "includedReport": {
- "recurse": "all submechanisms included"
- "allMechanismDetails": null,
- "collectedIpAddresses": {
- "ip4": [
- "207.180.201.22",
- "207.180.222.205",
- "207.180.226.204",
- "etc"
- "ip6": [
- "2001:4860:4000::/36",
- "2404:6800:4000::/36",
- "etc"
- "fromA": [ ],
- "fromMx": [ ]
- "summary": {
- "totalDnsMechanismLookupsUsed": 10,
- "finalProcessingResult": "PERMERROR",
- "evaluationLog": [ ]
- "dmarcDetails": {
- "recordFound": true,
- "record": "v=DMARC1; p=none",
- "dnsQueryDomain": "_dmarc.openapi.com",
- "dnsServerUsed": "8.8.8.8",
- "policy": "none",
- "subdomainPolicy": null,
- "alignmentDkim": "r",
- "alignmentSpf": "r",
- "percentage": 100,
- "reportingUrisAggregate": [ ],
- "reportingUrisFailure": [ ],
- "failureOptions": [ ],
- "errors": [ ],
- "warnings": [ ]
- "createdAt": "2025-05-27T12:58:39+00:00",
- "updatedAt": "2025-05-27T12:58:40+00:00",
- "state": "NEW",
- "id": "6835b6fff6722090d00e74fb"
- "success": true,
- "message": "",
- "error": null