API reference
People search and contact API
Connecting people. Search for people in plain words, or POST a LinkedIn or GitHub profile link to look up one contact. 1 credit only when we return an email, a phone, or both. MCP for agents is on by default.
Endpoints
Customer endpoints. POST to look up contacts. GET for usage, key info, health, and pricing.
/api/v1/people/search/api/v1/people/searches/api/v1/find/api/v1/usage/api/v1/key/info/api/v1/health/api/pricingQuick start
POST /api/v1/find with a LinkedIn or GitHub profile link. A name helps too. You get emails, phones, and links when we have them.
curl -X POST https://api.invenitor.com/api/v1/find \
-H "Authorization: Bearer pf_live_..." \
-H "Content-Type: application/json" \
-d '{"full_name":"Jordan Lee","linkedin_url":"https://linkedin.com/in/example"}'People search
POST /api/v1/people/search with a plain-language query. You get matching people with role, company, location, and profile links. The search spends a flat number of credits, shown on the pricing page. List past searches with GET /api/v1/people/searches.
curl -X POST https://api.invenitor.com/api/v1/people/search \
-H "Authorization: Bearer pf_live_..." \
-H "Content-Type: application/json" \
-d '{"query":"Senior backend engineers in Bengaluru with Go"}'
# Response (trimmed)
{
"search_id": "...",
"result_count": 100,
"results": [
{ "id": "...", "display_name": "...", "headline": "...", "company": "...", "profile_urls": ["..."] }
],
"credits_used": 20
}Authentication
Pass your API key as a Bearer token in the Authorization header, or use the x-api-key header. Keys start with pf_live_ (production) or pf_test_ (test).
# Bearer token Authorization: Bearer pf_live_xxxxxxxxxxxxxxxx # Or x-api-key header x-api-key: pf_live_xxxxxxxxxxxxxxxx
Request parameters
Send a LinkedIn or GitHub profile URL. A name is recommended. Company and location are optional.
{
"full_name": "Jordan Lee",
"linkedin_url": "https://linkedin.com/in/example",
"company": "Example Co",
"location": "Mumbai, India"
}Response shape
JSON with the primary email, other addresses we found, phones, links, and credit usage.
{
"primary_email": "jordan@example.com",
"secondary_email": null,
"emails": [
{ "email": "jordan@example.com", "confidence": "high" }
],
"phones": [],
"social_links": {
"linkedin": "https://linkedin.com/in/example"
},
"credits_used": 1,
"credits_remaining": 19
}Rate limiting
Five lookups a minute per key, including the free signup credits. If you go faster, we ask you to wait about a minute.
# Response headers (IETF RateLimit-*)
RateLimit-Limit: 5
RateLimit-Remaining: 0
RateLimit-Reset: 1690000000
# When exceeded
HTTP/1.1 429 Too Many Requests
Retry-After: 60
{"detail": "You’re going a bit fast. Please wait about a minute."}Error codes
HTTP status on the response. Customer copy is in the detail field. See each row for a stable page anchor.
400Invalid request body401Missing or invalid API key402Insufficient credits403Key banned or IP not allowed429Rate limit exceeded500Internal server errorSDK Examples
Copy-paste examples in Python, JavaScript, and cURL. Swap the Bearer token for your own key.
import httpx
resp = httpx.post(
"https://api.invenitor.com/api/v1/find",
headers={"Authorization": "Bearer pf_live_..."},
json={
"full_name": "Jordan Lee",
"linkedin_url": "https://linkedin.com/in/example",
}
)
data = resp.json()
print(data["primary_email"])const res = await fetch("https://api.invenitor.com/api/v1/find", {
method: "POST",
headers: {
"Authorization": "Bearer pf_live_...",
"Content-Type": "application/json"
},
body: JSON.stringify({
full_name: "Jordan Lee",
linkedin_url: "https://linkedin.com/in/example"
})
});
const data = await res.json();
console.log(data.primary_email);curl -X POST https://api.invenitor.com/api/v1/find \
-H "Authorization: Bearer pf_live_..." \
-H "Content-Type: application/json" \
-d '{"full_name":"Jordan Lee","linkedin_url":"https://linkedin.com/in/example"}'MCP for agents
Every account includes remote MCP. Agents call the same lookup as REST — 1 credit only when we return an email, a phone, or both. Read /mcp.md for Cursor, Claude, and ChatGPT setup. Longer notes on the connecting people search to an AI agent guide.
Teams and roles
Invite people by email in Settings, then Team. Everyone uses the same credits. Owners and admins can do everything. Members search, open contacts and create keys. Billing buys credits and sees invoices. Viewers only read. The server checks the role on every search, purchase and key request. A key already created keeps working until you revoke it, so revoke it when you lower someone's role.
Credit costs
1 credit only when we return an email, a phone, or both. Social links and company email search are included. Viewing Usage or Billing does not spend credits.
Questions
What is Invenitor?
Invenitor finds people. Say who you need in plain words and see real people with their role, company, experience, skills, and links. Get an email or phone when you pick someone. You can also paste one LinkedIn or GitHub link to reach that person.
Who is it for?
Anyone who needs to reach someone for work. Students, freelancers, founders, salespeople, investors, researchers, and AI agents. It is not a mailbox checker or an email sender.
Do I need a company or a work email?
No. Sign in with any Google account. You do not need a company, a team, or a subscription.
How do I start?
Type who you need and sign in with Google. Add your WhatsApp number and your search runs. New accounts get free credits: enough for one search and a few contacts. No card. Buy more on pricing. API docs: API docs. Agents: MCP guide.
Why do you ask for my WhatsApp number?
One number per account keeps free credits fair for everyone. You add it once.
When do you ask for my address?
Only when you buy credits, because it goes on your invoice. A GSTIN is optional. You never need an address to search.
Will the person know I looked them up?
No. Invenitor does not contact anyone or send messages. You write to them yourself, from your own email or phone.
Can someone remove their details?
Yes. Anyone can ask us to remove their details at the remove page.
What can I search for?
Anyone you can describe. A team lead at a kind of company, a role and a city, a skill and a level of experience, an investor focus, a field of research.
What are the three steps?
01 Describe — Write who you need in plain words: a role, a place, a skill, a company. Or paste a LinkedIn or GitHub link to reach one person. 02 See who we find — see real people with their role, company, experience, skills, and links. Sort them, and list the ones you like. 03 Reach them — Get the email or phone of anyone you pick. You pay only when we find one, it stays in Contacts, and you never pay twice for the same person.
What does one credit buy?
1 credit only when we return an email, a phone, or both. Timeouts and errors do not spend credits. A search that finds nobody is free. A search is a flat price in credits, shown on pricing.
Do I pay twice for the same person?
No. A contact you opened stays in Contacts. Opening the same person again, from any search, is free.
Can my team share credits?
Yes. Invite teammates by link. Everyone searches and opens contacts from the same credits.
Can I use it from my own app or AI agent?
Yes. Every account includes the REST API and MCP. The same key runs people searches, looks up contacts, and checks your balance from Claude, Cursor, or your own code. Docs: API docs.
How do I call the API?
POST the find endpoint with a Bearer key and a LinkedIn or GitHub profile URL in JSON. Copy-paste examples: API docs.
Does Invenitor include MCP?
Yes. Remote MCP is on by default on every account. Wire-up for Cursor, Claude, and other hosts: MCP guide.
What profile URLs work?
Send a public LinkedIn profile URL or a GitHub profile URL. A full name in the JSON body helps narrow the lookup.
Ready to start?
Sign in with Google to get your API key from the dashboard.