---
updatedAt: 2026-08-24T19:21:49.000Z
agentTools:
  projectIndex: https://api-documentation.versium.com/llms.txt
---

# Try the API

Each request must supply either `li_url`, or all four of `first`, `last`, `city`, and `state`. A LinkedIn URL is the most specific identity signal and produces the best match rates.

You are charged per match, not per request. A request that returns no results costs nothing. Default rates: business_email 2 credits, consumer_mobile 1, consumer_email 1 **per address returned**, consumer_address 1, crosswalk 1. The crosswalk charge applies once per record that returns any consumer contact point.

# OpenAPI definition

```json
{
  "openapi": "3.0.3",
  "info": {
    "title": "B2B2C Crosswalk Append API",
    "version": "1.0",
    "description": "Resolves a business contact's identity from a LinkedIn URL or name plus city and state, then crosswalks it to consumer contact data. Returns the business email address plus the consumer mobile phone, consumer email address, and consumer postal address for the same individual.\n\nUS-only. One input record per request; at most one result record is returned."
  },
  "servers": [
    {
      "url": "https://api.versium.com/v2/b2b2cAppend"
    }
  ],
  "security": [
    {
      "apiKey": []
    }
  ],
  "paths": {
    "/": {
      "get": {
        "operationId": "b2b2cCrosswalkAppend",
        "summary": "Try the API",
        "description": "Each request must supply either `li_url`, or all four of `first`, `last`, `city`, and `state`. A LinkedIn URL is the most specific identity signal and produces the best match rates.\n\nYou are charged per match, not per request. A request that returns no results costs nothing. Default rates: business_email 2 credits, consumer_mobile 1, consumer_email 1 **per address returned**, consumer_address 1, crosswalk 1. The crosswalk charge applies once per record that returns any consumer contact point.",
        "parameters": [
          {
            "name": "output[]",
            "in": "query",
            "required": true,
            "description": "One or more outputs to append. Repeat the parameter once per output.",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "business_email",
                  "consumer_mobile",
                  "consumer_email",
                  "consumer_address"
                ]
              }
            },
            "style": "form",
            "explode": true,
            "example": [
              "business_email",
              "consumer_mobile"
            ]
          },
          {
            "name": "li_url",
            "in": "query",
            "description": "LinkedIn profile URL. Satisfies the required-input rule on its own.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "first",
            "in": "query",
            "description": "Person's first name. Required as part of the first/last/city/state combination.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "last",
            "in": "query",
            "description": "Person's last name. Required as part of the first/last/city/state combination.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "city",
            "in": "query",
            "description": "City name. Required as part of the first/last/city/state combination.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "state",
            "in": "query",
            "description": "US state two-letter abbreviation. Required as part of the first/last/city/state combination.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "zip",
            "in": "query",
            "description": "5-digit US ZIP code. Optional; improves match precision.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "address",
            "in": "query",
            "description": "House/building number and street. Optional; used to refine the consumer email lookup.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "country",
            "in": "query",
            "description": "2 letter country code (only US is supported at present). Non-US records return zero results.",
            "schema": {
              "type": "string",
              "default": "US"
            }
          },
          {
            "name": "email",
            "in": "query",
            "description": "Known email address for the individual. Accepted but not currently used as an identity signal.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cfg_required",
            "in": "query",
            "description": "Return a result only if these outputs matched. Comma means AND, semicolon means OR. Must be a subset of the values sent in `output[]`. If the requirement is not satisfied, the whole response is a zero-result response and nothing is charged.",
            "schema": {
              "type": "string"
            },
            "example": "consumer_mobile;consumer_email"
          },
          {
            "name": "cfg_max_emails_b2c",
            "in": "query",
            "description": "Maximum number of consumer email addresses to return. Consumer email is charged per address returned, so this parameter affects cost.",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 10,
              "default": 1
            }
          },
          {
            "name": "cfg_max_phones_b2c",
            "in": "query",
            "description": "Maximum number of consumer mobile numbers to return. Consumer mobile is charged once per matched record regardless of how many numbers come back.",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 10,
              "default": 1
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful request. A request that runs but finds nothing is a zero-result response, not an error.",
            "headers": {
              "x-versium-query-id": {
                "description": "Unique id for the request. Include it when contacting support.",
                "schema": {
                  "type": "string"
                }
              },
              "x-credits-remaining": {
                "description": "Credits remaining on the account after this request.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Response"
                },
                "example": {
                  "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": "JANE.DOE@EXAMPLECORP.COM"
                          }
                        ],
                        "PhoneJSONB2C": [
                          {
                            "Phone": "4022536502",
                            "LineType": "Mobile",
                            "Carrier": "CELLCO PARTNERSHIP DBA VERIZON WIRELESS - NE",
                            "CarrierParent": "Verizon"
                          }
                        ],
                        "EmailAddrJSONB2C": [
                          {
                            "EmailAddr": "JANE.DOE@GMAIL.COM"
                          }
                        ],
                        "AddressB2C": "4016 N 68TH ST",
                        "CityB2C": "LINCOLN",
                        "StateB2C": "NE",
                        "ZipB2C": "68507",
                        "CountryB2C": "US"
                      }
                    ]
                  }
                }
              }
            }
          },
          "400": {
            "description": "The request is missing required parameters or is not structured correctly: 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.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Response"
                },
                "example": {
                  "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\"]]"
                    ]
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthenticated - the API key provided is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Response"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient credits.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Response"
                }
              }
            }
          },
          "429": {
            "description": "Requests are exceeding the rate limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Response"
                }
              }
            }
          },
          "500": {
            "description": "Something broke on the server. The `errors` property may not be present, and the response object itself may not be returned.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Response"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "apiKey": {
        "type": "apiKey",
        "name": "x-versium-api-key",
        "in": "header"
      }
    },
    "schemas": {
      "Response": {
        "type": "object",
        "properties": {
          "versium": {
            "type": "object",
            "properties": {
              "version": {
                "type": "string",
                "description": "API version."
              },
              "match_counts": {
                "type": "object",
                "description": "Billable match count per output for this request. Outputs that were requested but did not match are reported as 0.",
                "properties": {
                  "business_email": {
                    "type": "integer"
                  },
                  "consumer_mobile": {
                    "type": "integer"
                  },
                  "consumer_email": {
                    "type": "integer",
                    "description": "Counts each consumer email address returned."
                  },
                  "consumer_address": {
                    "type": "integer"
                  },
                  "crosswalk": {
                    "type": "integer",
                    "description": "1 when the record returned any consumer contact point. Not selectable via output[]; reported and charged automatically."
                  }
                }
              },
              "num_matches": {
                "type": "integer",
                "description": "Sum of all values in match_counts."
              },
              "num_results": {
                "type": "integer",
                "description": "Number of result records: 0 or 1."
              },
              "query_id": {
                "type": "string",
                "description": "Unique id for the request."
              },
              "query_time": {
                "type": "number",
                "description": "Seconds spent processing the request."
              },
              "input_query": {
                "type": "object",
                "description": "The recognized inputs echoed back.",
                "additionalProperties": {
                  "type": "string"
                }
              },
              "results": {
                "type": "array",
                "description": "Array containing at most one composite record.",
                "items": {
                  "$ref": "#/components/schemas/Record"
                }
              },
              "errors": {
                "type": "array",
                "description": "Present only when errors occurred.",
                "items": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "Record": {
        "type": "object",
        "description": "Empty fields and empty collections are omitted entirely, so a field's absence means no data was found for it.",
        "properties": {
          "EmailAddrJSONB2B": {
            "type": "array",
            "description": "Business email addresses. Returned for output business_email.",
            "items": {
              "type": "object",
              "properties": {
                "EmailAddr": {
                  "type": "string"
                }
              }
            }
          },
          "PhoneJSONB2C": {
            "type": "array",
            "description": "Consumer mobile phones, up to cfg_max_phones_b2c. Mobile lines only. Returned for output consumer_mobile.",
            "items": {
              "type": "object",
              "properties": {
                "Phone": {
                  "type": "string"
                },
                "LineType": {
                  "type": "string"
                },
                "Carrier": {
                  "type": "string"
                },
                "CarrierParent": {
                  "type": "string"
                },
                "CustomerType": {
                  "type": "string"
                },
                "PaymentType": {
                  "type": "string"
                }
              }
            }
          },
          "EmailAddrJSONB2C": {
            "type": "array",
            "description": "Consumer email addresses, up to cfg_max_emails_b2c. Returned for output consumer_email.",
            "items": {
              "type": "object",
              "properties": {
                "EmailAddr": {
                  "type": "string"
                }
              }
            }
          },
          "AddressB2C": {
            "type": "string",
            "description": "Residential house/building number and street. Returned for output consumer_address."
          },
          "CityB2C": {
            "type": "string",
            "description": "Residential city. Returned for output consumer_address."
          },
          "StateB2C": {
            "type": "string",
            "description": "Residential state. Returned for output consumer_address."
          },
          "ZipB2C": {
            "type": "string",
            "description": "Residential ZIP code. Returned for output consumer_address."
          },
          "CountryB2C": {
            "type": "string",
            "description": "Residential country. Returned for output consumer_address."
          }
        }
      }
    }
  }
}
```