curl --request POST \
--url https://api.pubrio.com/redeem/people/contact/lookup/batch \
--header 'Content-Type: application/json' \
--header 'pubrio-api-key: <api-key>' \
--data '
{
"peoples": [
{
"email": "[email protected]"
},
{
"first_name": "John",
"last_name": "Smith",
"domain": "example.com"
}
],
"is_enable_similarity_search": true,
"profile_id": 123
}
'import requests
url = "https://api.pubrio.com/redeem/people/contact/lookup/batch"
payload = {
"peoples": [
{ "email": "[email protected]" },
{
"first_name": "John",
"last_name": "Smith",
"domain": "example.com"
}
],
"is_enable_similarity_search": True,
"profile_id": 123
}
headers = {
"pubrio-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'pubrio-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
peoples: [
{email: '[email protected]'},
{first_name: 'John', last_name: 'Smith', domain: 'example.com'}
],
is_enable_similarity_search: true,
profile_id: 123
})
};
fetch('https://api.pubrio.com/redeem/people/contact/lookup/batch', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.pubrio.com/redeem/people/contact/lookup/batch",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'peoples' => [
[
'email' => '[email protected]'
],
[
'first_name' => 'John',
'last_name' => 'Smith',
'domain' => 'example.com'
]
],
'is_enable_similarity_search' => true,
'profile_id' => 123
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"pubrio-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.pubrio.com/redeem/people/contact/lookup/batch"
payload := strings.NewReader("{\n \"peoples\": [\n {\n \"email\": \"[email protected]\"\n },\n {\n \"first_name\": \"John\",\n \"last_name\": \"Smith\",\n \"domain\": \"example.com\"\n }\n ],\n \"is_enable_similarity_search\": true,\n \"profile_id\": 123\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("pubrio-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.pubrio.com/redeem/people/contact/lookup/batch")
.header("pubrio-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"peoples\": [\n {\n \"email\": \"[email protected]\"\n },\n {\n \"first_name\": \"John\",\n \"last_name\": \"Smith\",\n \"domain\": \"example.com\"\n }\n ],\n \"is_enable_similarity_search\": true,\n \"profile_id\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pubrio.com/redeem/people/contact/lookup/batch")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["pubrio-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"peoples\": [\n {\n \"email\": \"[email protected]\"\n },\n {\n \"first_name\": \"John\",\n \"last_name\": \"Smith\",\n \"domain\": \"example.com\"\n }\n ],\n \"is_enable_similarity_search\": true,\n \"profile_id\": 123\n}"
response = http.request(request)
puts response.read_body{
"data": {
"profile": {
"credit": 450374,
"topup_credit": 235236,
"total_credit_cost": 2
},
"peoples": [
{
"people_search_id": "e37ccf38-ea8f-422e-9874-cb23b15e8fe4",
"people_name": "King Lai",
"company_name": "Pubrio",
"domain": "pubrio.com",
"match": {
"confidence": "exact",
"input": {
"value": "[email protected]",
"type": "email-work"
},
"is_duplicate_input": false
}
},
{
"people_search_id": "1c4f0a9d-9a8e-4ab0-9b07-2cd09c4a3a6b",
"people_name": "John Smith",
"company_name": "Example",
"domain": "example.com",
"match": {
"confidence": "similarity_domain",
"input": {
"value": "example.com",
"type": "domain"
},
"is_duplicate_input": false
}
}
]
}
}{
"code": 40001,
"message": "Errors and codes will vary depending on the scenario, please see the documentation for information.",
"details": {}
}{
"error": "Request rate limit exceeded. Please wait and try again later."
}{
"error": "An unexpected error occurred on the server."
}Contact Lookup - Bulk
Batch version of /redeem/people/contact/lookup. Submit up to your subscription’s bulk size limit in a single request. Each entry in peoples accepts the same identifiers as the single-lookup body. Charges 1 credit per billable match — duplicate inputs and unmatched entries are not charged.
curl --request POST \
--url https://api.pubrio.com/redeem/people/contact/lookup/batch \
--header 'Content-Type: application/json' \
--header 'pubrio-api-key: <api-key>' \
--data '
{
"peoples": [
{
"email": "[email protected]"
},
{
"first_name": "John",
"last_name": "Smith",
"domain": "example.com"
}
],
"is_enable_similarity_search": true,
"profile_id": 123
}
'import requests
url = "https://api.pubrio.com/redeem/people/contact/lookup/batch"
payload = {
"peoples": [
{ "email": "[email protected]" },
{
"first_name": "John",
"last_name": "Smith",
"domain": "example.com"
}
],
"is_enable_similarity_search": True,
"profile_id": 123
}
headers = {
"pubrio-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'pubrio-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
peoples: [
{email: '[email protected]'},
{first_name: 'John', last_name: 'Smith', domain: 'example.com'}
],
is_enable_similarity_search: true,
profile_id: 123
})
};
fetch('https://api.pubrio.com/redeem/people/contact/lookup/batch', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.pubrio.com/redeem/people/contact/lookup/batch",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'peoples' => [
[
'email' => '[email protected]'
],
[
'first_name' => 'John',
'last_name' => 'Smith',
'domain' => 'example.com'
]
],
'is_enable_similarity_search' => true,
'profile_id' => 123
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"pubrio-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.pubrio.com/redeem/people/contact/lookup/batch"
payload := strings.NewReader("{\n \"peoples\": [\n {\n \"email\": \"[email protected]\"\n },\n {\n \"first_name\": \"John\",\n \"last_name\": \"Smith\",\n \"domain\": \"example.com\"\n }\n ],\n \"is_enable_similarity_search\": true,\n \"profile_id\": 123\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("pubrio-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.pubrio.com/redeem/people/contact/lookup/batch")
.header("pubrio-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"peoples\": [\n {\n \"email\": \"[email protected]\"\n },\n {\n \"first_name\": \"John\",\n \"last_name\": \"Smith\",\n \"domain\": \"example.com\"\n }\n ],\n \"is_enable_similarity_search\": true,\n \"profile_id\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pubrio.com/redeem/people/contact/lookup/batch")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["pubrio-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"peoples\": [\n {\n \"email\": \"[email protected]\"\n },\n {\n \"first_name\": \"John\",\n \"last_name\": \"Smith\",\n \"domain\": \"example.com\"\n }\n ],\n \"is_enable_similarity_search\": true,\n \"profile_id\": 123\n}"
response = http.request(request)
puts response.read_body{
"data": {
"profile": {
"credit": 450374,
"topup_credit": 235236,
"total_credit_cost": 2
},
"peoples": [
{
"people_search_id": "e37ccf38-ea8f-422e-9874-cb23b15e8fe4",
"people_name": "King Lai",
"company_name": "Pubrio",
"domain": "pubrio.com",
"match": {
"confidence": "exact",
"input": {
"value": "[email protected]",
"type": "email-work"
},
"is_duplicate_input": false
}
},
{
"people_search_id": "1c4f0a9d-9a8e-4ab0-9b07-2cd09c4a3a6b",
"people_name": "John Smith",
"company_name": "Example",
"domain": "example.com",
"match": {
"confidence": "similarity_domain",
"input": {
"value": "example.com",
"type": "domain"
},
"is_duplicate_input": false
}
}
]
}
}{
"code": 40001,
"message": "Errors and codes will vary depending on the scenario, please see the documentation for information.",
"details": {}
}{
"error": "Request rate limit exceeded. Please wait and try again later."
}{
"error": "An unexpected error occurred on the server."
}Authorizations
Body
Array of lookup specs. Each entry accepts the same identifiers as the single-lookup body (email, phone, or first_name + last_name + domain/company when similarity search is enabled). Capped by your subscription's bulk size limit.
Show child attributes
Show child attributes
[
{ "email": "[email protected]" },
{
"first_name": "John",
"last_name": "Smith",
"domain": "example.com"
}
]
When true, falls back to a name-based similarity match if no exact email/phone hit is found. Requires first_name, last_name, and either domain or company.
true
Optional. An identifier for the user profile (workspace) making the request. This is no longer required as the API key already includes your workspace information. If provided, it helps in associating the lookup with a specific user, allowing for data retrieval and credit tracking.
Check out user details endpoints under the Profile tab for more information.
Response
Successful response containing matched people and per-record match metadata.
Response info depends on specific endpoint.

