Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.pubrio.com/llms.txt

Use this file to discover all available pages before exploring further.

The People Contact Lookup API answers the question “who does this email/phone/name belong to?” Hand it an identifier, get back a people_search_id and the matched person’s profile — without having to run a search first.
curl -X POST https://api.pubrio.com/redeem/people/contact/lookup \
  -H "pubrio-api-key: $PUBRIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "email": "[email protected]" }'

When to use Contact Lookup

Use Contact Lookup when you have an identifier and want to find the person:
  • An email landed in your inbox — who sent it, what company, what title?
  • A phone number rang on your sales line — match it to a known contact
  • A CSV of leads with names and companies but no Pubrio IDs — resolve them all to people_search_ids
  • Form submission with email + name — enrich into a full contact record
If instead you have a people_search_id (or LinkedIn URL) and want the email + phone for that person, use People Redeem — it’s the forward direction.

Two flavors

EndpointUse when
POST /redeem/people/contact/lookupSingle lookup — one identifier per request.
POST /redeem/people/contact/lookup/batchBatch lookup — up to your subscription’s bulk size limit per request, processed in parallel.
Both endpoints return the same match metadata per record (see Match metadata below).

Quick start

curl -X POST https://api.pubrio.com/redeem/people/contact/lookup \
  -H "pubrio-api-key: $PUBRIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "email": "[email protected]" }'
Response:
{
  "data": {
    "profile": {
      "credit": 450375,
      "topup_credit": 235236,
      "total_credit_cost": 1
    },
    "peoples": [
      {
        "people_search_id": "e37ccf38-ea8f-422e-9874-cb23b15e8fe4",
        "first_name": "King",
        "last_name": "Lai",
        "people_name": "King Lai",
        "company_name": "Pubrio",
        "domain": "pubrio.com",
        "match": {
          "confidence": "exact",
          "input": { "value": "[email protected]", "type": "email-work" },
          "is_duplicate_input": false
        }
      }
    ]
  }
}

Lookup modes

You can match a person in two ways:

Exact match — by email or phone

The default. Pass email or phone; Pubrio matches on the normalized contact value. This always returns match.confidence: "exact" when it hits.
{ "email": "[email protected]" }
{ "phone": "+15551234567" }

Similarity match — by name + domain or company

If you don’t have a deterministic identifier, you can fall back to similarity matching. Pass first_name, last_name, plus either domain or company, and set is_enable_similarity_search: true.
{
  "first_name": "King",
  "last_name": "Lai",
  "domain": "pubrio.com",
  "is_enable_similarity_search": true
}
Pubrio first tries to find an exact email/phone hit; if none exists and similarity is enabled, it ranks candidates by name proximity within the company domain (or, if domain is omitted, the company match). Returned matches carry match.confidence: "similarity_domain" or "similarity_company" so you can filter by certainty. You can combine both: pass an email and a name + domain. The exact email match wins; the name fields become a fallback only if the email doesn’t resolve.

Match metadata

Every returned record includes a match object describing how the hit was made:
FieldValuesMeaning
match.confidenceexactDirect email/phone match. Highest confidence.
similarity_domainName-based match anchored to a known company domain.
similarity_companyName-based match anchored to a company name (no domain).
match.input{ value, type }Echoes the identifier that produced the hit, so you can show “matched on [email protected]” in your UI.
match.is_duplicate_inputbooleantrue when the same identifier appeared earlier in a batch — the lookup is performed only once and the duplicate isn’t charged.
Use match.confidence to gate downstream actions: e.g., auto-enroll only exact matches into a sequence; route similarity_* matches to manual review.

Batch lookup

Submit up to your subscription’s bulk size limit in one request. Each entry takes the same identifiers as the single-lookup body.
curl -X POST https://api.pubrio.com/redeem/people/contact/lookup/batch \
  -H "pubrio-api-key: $PUBRIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "peoples": [
      { "email": "[email protected]" },
      { "first_name": "John", "last_name": "Smith", "domain": "example.com" }
    ],
    "is_enable_similarity_search": true
  }'
The batch is synchronous — the response contains all resolved records in the same order as the input. Unmatched inputs are dropped from the response (they don’t appear at all and aren’t charged).

Credit cost

1 credit per billable match. Specifically:
  • A successful match (exact or similarity) → 1 credit
  • No match → 0 credits
  • Duplicate input within a batch → 0 credits (resolved once, charged once)
This makes Contact Lookup an order of magnitude cheaper than Redeem — you’re paying to identify a person, not to unlock their contacts. If after looking up you also need their email/phone, redeem the returned people_search_id.

Common patterns

Inbound email enrichment

On every inbound email, look up the sender. Surface their company, title, and people_search_id in your CRM or helpdesk view.

CSV-to-CRM resolution

Resolve a CSV of name + company rows to canonical people_search_ids. Ones that don’t match exact get a similarity attempt automatically.

Form submission enrichment

Hand off { email } from your marketing form. Get back the company, title, and a Pubrio ID you can route through scoring rules.

Lookup → redeem pipeline

Two-step flow: cheap lookup (1 credit) to identify the person, then full redeem (5–10 credits) only for matches above a confidence threshold.

FAQ

No — Contact Lookup returns the person’s profile (people_search_id, name, company, domain, title, etc.) plus match metadata. To get the verified contacts themselves, pass the returned people_search_id to Redeem.
similarity_domain means we anchored the name match to a known company domain — strongest of the similarity tiers. similarity_company means we anchored to a company name with no canonical domain — slightly less reliable, since multiple unrelated companies can share a name.
No. Unmatched inputs are silently dropped from the response and not billed.
The duplicate is detected server-side, the lookup runs once, and you’re charged once. The duplicate entry is flagged with match.is_duplicate_input: true in the response.
The cap is set on your subscription as people_contact_enrichment_bulk_size. Most plans allow 100+ per call; reach out if you need a higher ceiling.
Not on Contact Lookup. Use Redeem with linkedin_url if you have a LinkedIn profile and want both the resolution and the contacts in one call.
Phone is matched on a normalized form. International (E.164) is the most reliable input. Domestic-format numbers may match if the country can be inferred, but E.164 (+15551234567) avoids ambiguity.

People Redeem

Forward direction: spend credits to unlock email + phone for a known people_search_id or LinkedIn URL.

People Search

Find people who match a job/company/location filter.

People Lookup

Resolve a single person’s full profile from a known identifier.

Pricing

Credit costs across all endpoints, by plan tier.