Multi-field Inputs
Field-by-field guide to the shared Verify and Signals request schema.
Both POST /verify and POST /signals accept the same MultiFieldReq payload. You may send a single identifier or combine as many as you have—our matching pipeline deduplicates inputs and automatically fans out to the relevant checks.
Hashing reminder ‼️When hashing emails always
trim, lowercase, and hash with MD5 or SHA-256. We automatically compare hashed and cleartext inputs, so never send both versions of the same value.
Minimum Core Inputs Required
Every request must include at least one of the following identifier bundles:
| Identifier | Notes |
|---|---|
Name + postal address (name.* and location.*) | Must include both objects so we can locate the individual. |
Email (email or emails[]) | Cleartext, MD5 hash, or SHA-256 hash. |
Phone (phone or phones[]) | E.164 recommended. |
Social handle/ID (profiles[]/profile) | Provide a URL, username, or platform-specific ID. |
The more inputs you supply, the higher the match confidence and the richer the downstream Verify/Signals coverage. If you have multiple identifiers, send them all in the same payload.
Core contact identifiers
| Input | Field(s) | Type | Applies to | Usage & rules |
|---|---|---|---|---|
email, emails[] | string / string[] | Verify & Signals | Accepts cleartext or MD5/SHA-256 hashes. Provide up to 20 entries per request. Arrays let us return expanded linked identifiers. | |
| Phone Number | phone, phones[] | string / string[] | Verify & Signals | Provide E.164 formatted numbers (always include the country/region code). Non-E.164 numbers are normalized on a best-effort basis with a US default. |
| Social Media Handle / ID | profiles[] | object[] | Verify & Signals | Each object can include service, url, username, userid, followers, following, score, or bio. Use this for social URLs, marketplace handles, or user IDs. |
| Work Organization / Title | organization, title | string | Verify & Signals | Optional employer and job title context. Include when you capture business inputs (for example, from work emails or onboarding forms) to improve match precision on professional signals. |
| Name | name.{identifier} | object (Name) | Verify & Signals | Provide structured names whenever you also send a postal address. A name alone does not return data data unless it is paired with a core identifier or postal address. |
| Location/Address | location.{identifier} | object (Location) | Verify & Signals | Postal addresses should always be paired with a name object. Include country and countryCode where possible for best match quality. |
| IP address | ipAddress | string | Verify & Signals | IPv4 or IPv6 of the current session. Used for geolocation consistency, device reputation, and digital checks. |
| Birthday | birthday | string (ISO-8601 date) | Verify & Signals | Use YYYY-MM-DD. Unlocks age-based checks and breach lookups. |
Name
| Field | Description |
|---|---|
name.given | Required when providing an address; the first name (ASCII preferred). |
name.family | Required when providing an address; the last name. |
name.middle | Optional middle name or initial. |
name.full | Free-form full name. Provide alongside the structured fields for best matches. |
Always include at least given and family when submitting a postal address to avoid ambiguous identity matches.
Location
| Field | Description |
|---|---|
location.addressLine1 | Street number and primary line (required with other address parts). |
location.addressLine2 | Apartment, suite, or secondary line. |
location.city | City or locality. |
location.region | Full region or state name. |
location.regionCode | Region abbreviation (e.g., CO, NSW). |
location.postalCode | Postal or ZIP code. |
location.country | Full country name. |
location.countryCode | Two-letter ISO 3166-1 alpha-2 country code. |
Pairing a location with a name counts as a person lookup. Providing partial addresses can refine a
lookup if provided with another core identifier, but cannot be used to lookup a person alone.
Controls and request-time options
| Field(s) | Type | Applies to | Usage & rules |
|---|---|---|---|
countries[] | string[] | Signals | Restrict responses to profiles that include at least one of the supplied ISO 3166-1 alpha-2 country codes. Mutually exclusive with excludedCountries. |
excludedCountries[] | string[] | Signals | Return 204 No Content if any matched identity belongs to the listed countries. Cannot be combined with countries. |
Implementation tips
- Prefer arrays. Use the plural form (
emails[],phones[],profiles[]) even when you only have a single value today. This keeps your payload backward compatible as you add more signals later. - Normalize before hashing. Lowercase, trim whitespace, and collapse unicode lookalikes to ASCII before hashing or sending cleartext strings.
- Send linked attributes together. A name plus postal address and IP address often eliminates false positives and increases Verify's score explainability.
- Country filtering is Signals-only. Verify evaluates every identifier globally. Use
countriesorexcludedCountriesonly when callingPOST /signals.
Example payload
The same JSON body works for both /verify and /signals. Mix and match as many identifiers as you have:
{
"emails": [
"[email protected]",
"92d01f8a6c5f6ad97cd9b9b7912ba0e8"
],
"phones": ["+19175550199"],
"profiles": [
{
"service": "twitter",
"username": "mariatrustywell",
"url": "https://twitter.com/mariatrustywell"
}
],
"name": {
"given": "Maria",
"family": "Trustwell",
"full": "Maria A. Trustwell"
},
"organization": "Northwind Mutual",
"title": "VP, Deposit Risk",
"location": {
"addressLine1": "19 Highview Blvd",
"city": "Brookhaven",
"region": "New York",
"regionCode": "NY",
"postalCode": "11719",
"country": "United States",
"countryCode": "US"
},
"ipAddress": "65.142.71.22",
"birthday": "1982-07-04"
}Updated about 2 hours ago
