Provero Logo

Multi-Validation

Validate multiple inputs in a single call (email, phone, TPS, IP fraud, IP geolocation, and name). Only supplied fields are processed and only corresponding result blocks are returned.

Response mapping: Each nested object in the response mirrors its standalone validator’s response. For full field descriptions and examples, see the corresponding single-validator panes: Email Validation, Phone Validation, TPS Check, Name Screening, IP Fraud, and GeoIP.

Endpoint

POST
https://api.provero.io/api/validate/multiple

Headers

Authorization: Bearer REPLACE_WITH_API_TOKEN
Content-Type: application/json
Accept: application/json


Request Body

Field Type Required Description
email object No Full email validation docs.
phone object No Full phone validation docs.
address object No Full UK postcode verification docs.
tps object No Full TPS validation docs.
ip object No Full IP validation docs.
breach object No Full breach validation docs.
name object No Full name screening docs.
geoip object No Full GEOIP validation docs.
Request Body example (JSON)
{
    "email": {
        "email": "test@example.com"
    },
    "phone": {
        "phone": "441234567890",
        "roaming": true,
        "route": "detailed"
    },
    "address": {
        "postcode": "LS18 5HY"
    },
    "tps": {
        "phone": "441234567890"
    },
    "ip": {
        "ip": "8.8.8.8",
        "user_agent": "Mozilla/5.0",
        "user_language": "en"
    },
    "breach": {
        "type": "email",
        "value": "example@email.com"
    },
    "name": {
        "name": "John Doe"
    },
    "geoip": {
        "ip": "8.8.8.8",
        "address": "London",
        "geoMatch": true
    }
}

Code Examples

import requests

payload = {
    "email": {
        "email": "test@example.com"
    },
    "phone": {
        "phone": "441234567890",
        "roaming": true,
        "route": "detailed",
    },
    "address": {
        "postcode": "LS18 5HY"
    },
    "tps": {
        "phone": "441234567890"
    },
    "ip": {
        "ip": "8.8.8.8",
        "user_agent": "Mozilla/5.0",
        "user_language": "en"
    },
    "breach": {
        "type": "email",
        "value": "test@example.com"
    },
    "geoip": {
        "ip": "8.8.8.8",
        "address": "London",
        "geoMatch": true
    }
}

url = "https://api.provero.io/api/validate/multiple"
headers = {
    "Authorization": "Bearer REPLACE_WITH_API_TOKEN",
    "Content-Type": "application/json",
    "Accept": "application/json"
}

response = requests.post(url, headers=headers, json=payload)
print(response.status_code)
print(response.json())
<?php
$payload = [
    "email" => [
        "email" => "test@example.com"
    ],
    "phone" => [
        "phone" => "441234567890",
        "roaming" => true,
        "route" => "detailed",
    ],
    "address" => [
        "postcode" => "LS18 5HY"
    ],
    "tps" => [
        "phone" => "441234567890"
    ],
    "ip" => [
        "ip" => "8.8.8.8",
        "user_agent" => "Mozilla/5.0",
        "user_language" => "en"
    ],
    "breach" => [
        "type" => "email",
        "value" => "test@example.com"
    ],
    "geoip" => [
        "ip" => "8.8.8.8",
        "address" => "London",
        "geoMatch" => true
    ]
];

$curl = curl_init();
curl_setopt_array($curl, [
    CURLOPT_URL => "https://api.provero.io/api/validate/multiple",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POSTFIELDS => json_encode($payload),
    CURLOPT_HTTPHEADER => [
        "Authorization: Bearer REPLACE_WITH_API_TOKEN",
        "Content-Type: application/json",
        "Accept: application/json"
    ]
]);

$response = curl_exec($curl);
if (curl_errno($curl)) {
    echo 'Error:' . curl_error($curl);
}
curl_close($curl);
echo $response;
const payload = {
    "email": {
        "email": "test@example.com"
    },
    "phone": {
        "phone": "441234567890",
        "roaming": true,
        "route": "detailed",
    },
    "address": {
        "postcode": "LS18 5HY"
    },
    "tps": {
        "phone": "441234567890"
    },
    "ip": {
        "ip": "8.8.8.8",
        "user_agent": "Mozilla/5.0",
        "user_language": "en"
    },
    "breach": {
        "type": "email",
        "value": "test@example.com"
    },
    "geoip": {
        "ip": "8.8.8.8",
        "address": "London",
        "geoMatch": true
    }
};

fetch("https://api.provero.io/api/validate/multiple", {
  method: "POST",
  headers: {
    "Authorization": "Bearer REPLACE_WITH_API_TOKEN",
    "Content-Type": "application/json",
    "Accept": "application/json"
  },
  body: JSON.stringify(payload)
})
  .then(r => r.json())
  .then(console.log)
  .catch(console.error);
curl -X POST https://api.provero.io/api/validate/multiple \
  -H "Authorization: Bearer REPLACE_WITH_API_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "email": {
        "email": "test@example.com"
    },
    "phone": {
        "phone": "441234567890",
        "roaming": true,
        "route": "detailed",
    },
    "address": {
        "postcode": "LS18 5HY"
    },
    "tps": {
        "phone": "441234567890"
    },
    "ip": {
        "ip": "8.8.8.8",
        "user_agent": "Mozilla/5.0",
        "user_language": "en"
    },
    "breach": {
        "type": "email",
        "value": "test@example.com"
    },
    "geoip": {
        "ip": "8.8.8.8",
        "address": "London",
        "geoMatch": true
    }
}'

Response Examples

Success
{
    "email": {
        "emailAddress": "test@example.com",
        "isSyntaxValid": true,
        "isMailboxDeliverable": false,
        "isCatchAll": false,
        "typoSuggestion": false,
        "isDisposable": false,
        "isRoleBased": false,
        "riskLevel": "HIGH",
        "failureReason": "missing_mx"
    },
    "phone": {
        "results": [
            {
                "to": "+441234567890",
                "mccMnc": "23420",
                "imsi": "23420",
                "originalNetwork": {
                    "networkName": "Telefonica UK",
                    "networkPrefix": "1234",
                    "countryName": "United Kingdom of Great Britain and Northern Ireland",
                    "countryPrefix": "44",
                    "networkId": ""
                },
                "status": {
                    "groupId": 3,
                    "groupName": "DELIVERED",
                    "id": 5,
                    "name": "DELIVERED_TO_HANDSET",
                    "description": "The message has reached the recipient\u2019s device successfully."
                },
                "roaming": false,
                "ported": true,
                "portedNetwork": {
                    "networkName": "Hutchison 3G UK (20)",
                    "networkPrefix": "1234",
                    "countryName": "United Kingdom of Great Britain and Northern Ireland",
                    "countryPrefix": "44",
                    "networkId": ""
                },
                "error": {
                    "groupId": 0,
                    "groupName": "Ok",
                    "id": 0,
                    "name": "NO_ERROR",
                    "description": "The request was processed without any issues.",
                    "permanent": false
                }
            }
        ]
    },
    "address": {
        "valid": true,
        "postcode": "LS18 5HY",
        "address": {
            "Address1": "Otley Old Road",
            "Address2": "Horsforth",
            "Address3": "",
            "Address4": "",
            "Town": "Leeds",
            "County": "West Yorkshire",
            "Postcode": "LS18 5HY",
            "PremiseData": "Greengates Cattery|Greengates Stables|;The S Cayton Motor Co|The Barn/Greengates Farm|;|Greengates Farm|;"
        }
    },
    "tps": {
        "phone": "441234567890",
        "result": false
    },
    "ip": {
        "value": "8.8.8.8",
        "proxy": false,
        "isp": "Google",
        "organization": "Google DNS",
        "asn": "15169",
        "host": "dns.google",
        "countryCode": "US",
        "city": "Mountain View",
        "region": "California",
        "isCrawler": false,
        "connectionType": "none",
        "latitude": "37.38999939",
        "longitude": "-122.06999969",
        "zipCode": "N/A",
        "timezone": "America/Los_Angeles",
        "vpn": false,
        "tor": false,
        "activeVpn": false,
        "activeTor": false,
        "recentAbuse": false,
        "abuseVelocity": "none",
        "botStatus": false,
        "mobile": false,
        "fraudScore": 0,
        "highRiskAttacks": null,
        "sharedConnection": null,
        "dynamicConnection": null,
        "securityScanner": null,
        "trustedNetwork": null,
        "operatingSystem": "UNK UNK",
        "browser": "UNK UNK",
        "deviceModel": "N/A",
        "deviceBrand": "N/A",
        "frequentAbuser": null
    },
    "breach": {
        "value": "test@email.com",
        "type": "email",
        "leaks": [
            {
                "name": "Adobe",
                "domain": "adobe.com",
                "breachDate": "2013-10-04",
                "description": "User profile and password hints were exposed."
            }
        ]
    },
    "geoip": {
        "country": "United States",
        "regionName": "Virginia",
        "city": "Ashburn",
        "zip": "20149",
        "lat": 39.03,
        "lon": -77.5,
        "ip": "8.8.8.8",
        "distance": {
            "km": 3598.695068406005,
            "mi": 2236.1247533505075
        },
        "geoMatch": {
            "country": false,
            "city": false
        }
    }
}
Validation Error - Invalid Email
{
    "message": "The email field must be a valid email address.",
    "errors": {
        "email.email": [
            "The email field must be a valid email address."
        ]
    }
}
Validation Error - Invalid Phone
{
    "message": "The string supplied did not seem to be a phone number.",
    "errors": {
        "phone.phone": [
            "The string supplied did not seem to be a phone number."
        ],
        "phone.ported": [
            "The phone.ported field must be true or false."
        ],
        "phone.roaming": [
            "The phone.roaming field must be true or false."
        ],
        "phone.route": [
            "The route value must be one of: standard, detailed, playground"
        ]
    }
}
Validation Error - Invalid Address
{
    "message": "The address.postcode field must not be greater than 255 characters.",
    "errors": {
        "address.postcode": [
            "The address.postcode field must not be greater than 255 characters."
        ]
    }
}
Validation Error - TPS Number Invalid
{
    "message": "The string supplied did not seem to be a phone number.",
    "errors": {
        "tps.phone": [
            "The string supplied did not seem to be a phone number."
        ]
    }
}
Validation Error - Fraud detection Invalid
{
    "message": "The ip.ip field must be a valid IP address.",
    "errors": {
        "ip.ip": [
            "The ip.ip field must be a valid IP address."
        ]
    }
}
Validation Error - geoip Invalid
{
    "message": "The ip field is required when geoip is true.",
    "errors": {
        "geoip.ip": [
            "The geoip.ip field must be a valid IP address."
        ],
        "geoip.geoMatch": [
            "The geoip.geo match field must be true or false."
        ]
    }
}
Application Error
{
    "requestError": {
        "serviceException": {
            "messageId": "Error message",
            "code": "400"
        }
    }
}

Response Body

Success structure

Field Name Type Example Always Present Description
email object {"emailAddress":"test@example.com","isSyntaxValid":true} No Email validation result. See the Email Validation pane for full field list.
phone object {"results":[{"status":{"name":"REJECTED_NETWORK"}}]} No Phone validation result. See the Phone Validation pane.
tps object {"phone":"tel:+44-1302-778473","result":false} No TPS check result. See the TPS pane.
ip object {"proxy":false,"fraudScore":0} No Fraud detection result. See the IP Fraud pane.
geoip object {"country":"United States","city":"Ashburn","distance":{"km":3597.32}} No Geolocation (and optional distance/match). See the GeoIP pane.
name object {"fullName":"John Doe","isValid":true,"isProfane":false,"riskLevel":"LOW"} No Name fraud/identity check result.

Error structure

Field Name Type Example Always Present Description
message string The email field must be a valid email address. No Top-level validation message.
errors object {"email":["The email field must be a valid email address."]} No Per-field validation errors.
requestError object {"serviceException":{"messageId":"Error message","code":"400"}} No Application/service errors container.