Authentication
Pass your secret key in the X-API-Key header on every request. Keys are issued from your dashboard once access is granted.
# every request carries your key curl https://api.persistdata.com/v1/account \ -H "X-API-Key: sk_live_..."
Base URL
https://api.persistdata.com/v1
Credits & billing
Credits are deducted only when a record is found. Not-founds, errors, and cache misses cost zero. Identical lookups within five minutes are served from cache and never re-charged.
| Operation | Endpoint | Credits |
|---|---|---|
| Profile enrich | /v1/person/enrich | 2 |
| Company enrich | /v1/company/enrich | 1 |
| Email finder | /v1/email/find | 5 |
| People search | /v1/people/search | 10 |
| Cached lookup | /v1/cached/person | 1 |
Enrich a person
Resolve a LinkedIn URL or identifier into a structured profile: name, title, current company, role history, location, and reach. Sales Navigator URLs are normalized automatically.
curl https://api.persistdata.com/v1/person/enrich \ -H "X-API-Key: sk_live_..." \ -H "Content-Type: application/json" \ -d '{"url":"linkedin.com/in/janedoe"}' # 200 OK { "found": true, "credits_charged": 2, "person": { "name": "Jane Doe", "title": "VP Sales", "company": "Northwind", "location": "Austin, TX" }, "balance": 4998 }
Find an email
Return one deliverable, verified business email for a person. You are charged only when we return a confident match.
curl https://api.persistdata.com/v1/email/find \ -H "X-API-Key: sk_live_..." \ -H "Content-Type: application/json" \ -d '{"url":"linkedin.com/in/janedoe"}' # 200 OK (not found -> {"found":false,"credits_charged":0}) { "found": true, "email": "jane@northwind.com", "credits_charged": 5 }
Enrich a company coming soon
Headcount, industry, location, and firmographics for a company by domain or name. The cached firmographic tier serves repeat lookups at the lowest cost.
Account
Check your plan and remaining credit balance.
{ "account": "acme", "plan": "growth", "balance": 4998 }Errors
| Status | Code | Meaning |
|---|---|---|
| 401 | invalid_api_key | Missing or unrecognized key |
| 402 | insufficient_credits | Balance below the cost of the call |
| 429 | rate_limited | Too many requests this minute |
| 400 | missing_url | No target URL or identifier provided |
Rate limits
Requests are limited per key, by plan. A 429 includes a retry_after_seconds field. Burst beyond your limit is rejected rather than queued, so your spend stays predictable.