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 Redeem People API turns a people_search_id (or LinkedIn URL) into the full set of verified contacts — work email, personal email, phone — for that person. You only spend credits when contact data is actually returned.
curl -X POST https://api.pubrio.com/redeem/people \
  -H "pubrio-api-key: $PUBRIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "people_search_id": "e37ccf38-ea8f-422e-9874-cb23b15e8fe4",
    "people_contact_types": ["email-work", "phone"]
  }'

When to use Redeem

Use Redeem when you already know who the person is and you need their contact details:
  • You ran People Search and want to unlock contacts for the matches
  • You have a LinkedIn profile URL and want to reach out to the person
  • You have a people_search_id from a previous Pubrio response
If instead you have an email or phone and want to find the matching person, use People Contact Lookup — it’s the reverse direction and 1 credit per match.

Three flavors

EndpointUse whenBehavior
POST /redeem/peopleOne person at a timeSynchronous. Returns contacts in the response.
POST /redeem/people/batch2–N people in one shotAsynchronous. Returns a redeem_query_id immediately.
POST /redeem/people/batch/queryPolling for batch resultsReturns the full result set when the batch completes.
The batch flow is the right pattern for any list-driven workflow — CSV uploads, sequence enrollment, CRM sync — because it parallelizes the contact-resolution work server-side.

Quick start — single redeem

curl -X POST https://api.pubrio.com/redeem/people \
  -H "pubrio-api-key: $PUBRIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "people_search_id": "e37ccf38-ea8f-422e-9874-cb23b15e8fe4",
    "people_contact_types": ["email-work", "phone"]
  }'
Response:
{
  "data": {
    "profile": {
      "credit": 450376,
      "topup_credit": 235237,
      "total_credit_cost": 15
    },
    "peoples": [
      {
        "people_search_id": "e37ccf38-ea8f-422e-9874-cb23b15e8fe4",
        "emails": [
          { "value": "[email protected]", "type": "email-work", "status": "Verified" }
        ],
        "phones": [
          { "value": "+15551234567", "type": "phone", "status": null }
        ]
      }
    ]
  }
}
profile echoes your post-charge balance and the credits this call cost, so you can update an in-app meter without a separate /profile/usage round-trip.

Identifiers

You can identify the person to redeem in two ways:
IdentifierDescription
people_search_idUUID returned by any Pubrio search/lookup endpoint. Cheapest and most reliable — no resolution step.
linkedin_urlA LinkedIn profile URL (e.g., https://www.linkedin.com/in/jane-doe-123). Pubrio resolves it to a people_search_id first; if the profile is new, this can include a one-time external enrichment step.
people_contact_types is the contract for what you want back. Mix any of email-work, email-personal, phone — you’re charged per type returned, not per type requested. Asking for ["email-work", "phone"] and getting only email-work back charges only for the email.

Bulk redeem (async pattern)

For more than one person, use the batch flow. It runs each redeem in parallel server-side and avoids the per-request roundtrip cost. Step 1 — submit:
curl -X POST https://api.pubrio.com/redeem/people/batch \
  -H "pubrio-api-key: $PUBRIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "peoples": [
      "540574d1-ff74-475b-aea2-f8ae643b806d",
      "e37ccf38-ea8f-422e-9874-cb23b15e8fe4"
    ],
    "people_contact_types": ["email-work", "phone"]
  }'
{
  "data": {
    "redeem_query_id": "a046c1da-b3d4-4ca1-aca6-1dd8c8055701",
    "is_completed": false,
    "estimated_time": 6,
    "estimated_time_type": "second"
  }
}
Step 2 — poll:
curl -X POST https://api.pubrio.com/redeem/people/batch/query \
  -H "pubrio-api-key: $PUBRIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "redeem_query_id": "a046c1da-b3d4-4ca1-aca6-1dd8c8055701" }'
When is_completed is true, the response contains the full peoples array with resolved contacts and the total credit cost for the batch.
Poll at the cadence reported by estimated_time. Polling tighter than the estimate just wastes round-trips — the work isn’t done yet.

Credit costs

Credits are deducted per contact returned, not per request. Pricing per record:
Contact typeCredits per record
email-work / email-personal5
phone10
If a person has no work email and you only requested email-work, you’re charged nothing for that record. If you requested both an email and a phone and Pubrio returns both, you’re charged for both. See the full pricing table for plan-specific rates.

Common patterns

Search → redeem pipeline

Run People Search, let the user pick rows in your UI, then send the selected people_search_ids through /redeem/people/batch. Charge only for what’s used.

LinkedIn-URL paste flow

Accept a list of LinkedIn URLs from a CRM export or browser extension. Submit them via /redeem/people (single) or build a small batch wrapper.

Sequence enrollment

Before adding contacts to an outbound cadence, redeem email-work only — keeps cost predictable while feeding deliverable addresses to your sender.

CRM enrichment

Map existing CRM records to people_search_id (via People Lookup), then redeem in batch on a schedule.

FAQ

No. Credits are deducted per record returned. If a person has no work email available, you pay nothing for that contact slot — even if you asked for it.
Duplicates are deduplicated server-side. You’re charged once.
Pubrio attempts a one-time external resolution. If the profile resolves, normal redeem pricing applies. If it doesn’t, no credits are charged.
Pubrio re-verifies email and phone records on a rolling basis. Each contact comes with a status field (Verified, null, etc.) so you can filter to only verified records on your end.
Yes — people_contact_types is an array. Pass exactly the types you want; you’re only billed on what’s returned.
Above ~3 records, batch wins on latency and on per-record reliability. The batch endpoint runs fan-out internally and parallelizes any external enrichment hops, so a 50-record batch is closer to a 5-second wall-clock than 50 × per-request RTT.

People Contact Lookup

Reverse-lookup: find a person from an email, phone, or name + domain. 1 credit per match.

People Search

Find people who match a profile (title, location, company size, technologies, etc.).

People Lookup

Resolve a single person’s full profile from an identifier — no contact unlock.

Pricing

Credit costs across all endpoints, by plan tier.