Output Sample

The B2B2C Crosswalk Append API returns application/json. Response headers include x-versium-query-id (the query id, useful when contacting support) and x-credits-remaining.

fielddescription
versionAPI version.
match_countsBillable match count per output for this request, including crosswalk. Outputs that were requested but did not match are reported as 0.
num_matchesSum of all values in match_counts.
num_resultsNumber of result records: 0 or 1.
query_idUnique id for the request.
query_timeSeconds spent processing the request.
input_queryThe recognized inputs echoed back.
resultsArray containing at most one composite record.
errorsArray of error strings. Present only when errors occurred.

Result record fields

Empty fields and empty collections are omitted from the record entirely, so a field's absence means no data was found for it.

fieldoutputtypenotes
EmailAddrJSONB2Bbusiness_emailarray of objectsEach item has EmailAddr.
PhoneJSONB2Cconsumer_mobilearray of objectsEach item has Phone, LineType, and where available Carrier, CarrierParent, CustomerType, PaymentType. Up to cfg_max_phones_b2c items.
EmailAddrJSONB2Cconsumer_emailarray of objectsEach item has EmailAddr. Up to cfg_max_emails_b2c items.
AddressB2C, CityB2C, StateB2C, ZipB2C, CountryB2Cconsumer_addressstringFlat scalar fields for the residential address.

Collections are always JSON arrays, never JSON-encoded strings.

Output based on a match

{
    "versium": {
        "version": "2.0",
        "match_counts": {
            "business_email": 1,
            "consumer_mobile": 1,
            "consumer_email": 1,
            "consumer_address": 1,
            "crosswalk": 1
        },
        "num_matches": 5,
        "num_results": 1,
        "query_id": "3f8a1c9e2b7d4a6f8e1c0b5d7a9f2e4c",
        "query_time": 1.284,
        "input_query": {
            "first": "Jane",
            "last": "Doe",
            "city": "Lincoln",
            "state": "NE"
        },
        "results": [
            {
                "EmailAddrJSONB2B": [
                    { "EmailAddr": "[email protected]" }
                ],
                "PhoneJSONB2C": [
                    {
                        "Phone": "5551234567",
                        "LineType": "Mobile",
                        "Carrier": "CELLCO PARTNERSHIP DBA VERIZON WIRELESS - NE",
                        "CarrierParent": "Verizon"
                    }
                ],
                "EmailAddrJSONB2C": [
                    { "EmailAddr": "[email protected]" }
                ],
                "AddressB2C": "123 MAIN ST",
                "CityB2C": "LINCOLN",
                "StateB2C": "NE",
                "ZipB2C": "68507",
                "CountryB2C": "US"
            }
        ]
    }
}

Output based on no match

A request that runs successfully but finds nothing is a zero-result response, not an error. It returns 200, and every requested output is reported as 0.

{
    "versium": {
        "version": "2.0",
        "match_counts": {
            "business_email": 0,
            "consumer_mobile": 0,
            "crosswalk": 0
        },
        "num_matches": 0,
        "num_results": 0,
        "query_id": "0f0e0d0c0b0a09080706050403020100",
        "query_time": 0.742,
        "input_query": {
            "first": "Jane",
            "last": "Doe",
            "city": "Lincoln",
            "state": "NE"
        },
        "results": []
    }
}

Billing

You are charged per match, not per request. A request that returns no results costs nothing.

match_counts keyCreditsCharged
business_email2Once per matched record.
consumer_mobile1Once per matched record, regardless of how many numbers are returned.
consumer_email1Per email address returned. Two consumer emails cost two credits.
consumer_address1Once per matched record.
crosswalk1Once per record that returns any consumer contact point (mobile, email, or address). Not charged when only business_email is requested or when no consumer data is found.

Error responses

When an error occurs, the response object contains an errors property, an array of strings.

{
    "versium": {
        "version": "2.0",
        "match_counts": {},
        "num_matches": 0,
        "num_results": 0,
        "query_id": "48f9238aba984c4597df74f405c97527",
        "query_time": 0.031,
        "results": [],
        "errors": [
            "b2b2cAppend requires one of the following input combinations: [[\"li_url\"],[\"first\",\"last\",\"city\",\"state\"]]"
        ]
    }
}

HTTP status codes

The API attempts to return an HTTP status code for every request. When an error code is returned, check the errors property for details.

CodeDescriptionFix
200Successful request and response. Includes zero-result responses.
400The request is not structured correctly or is missing required parameters — no valid input combination, missing or invalid output[], a cfg_required value that is not a subset of output[], or a cfg_max_* value outside 1–10.Correct the request parameters.
401Unauthenticated — the API key provided is invalid.Use a valid API key.
402Insufficient credits.Contact your account representative.
429Requests are exceeding the rate limit.Reduce the number of requests per second.
500Something broke on the server. The errors property may not be present, and the response object itself may not be returned.Retry the request, then contact customer service.

Notes and limits

  • US-only. Non-US records return zero results rather than an error.
  • One input record per request; there is no multi-record mode on this endpoint.
  • Consumer phone results are mobile-only.
  • Each request runs several internal lookups in sequence, so it is slower than a single-source append. Allow generous client-side timeout headroom.
  • Email validation runs as part of every request, and consumer email candidates are ranked deliverable-first.
  • Consumer email, consumer address, and mobile phone are derived from the crosswalked consumer identity, so they depend on the consumer match succeeding — a business email can match while all three consumer outputs come back empty.