You have your API key ready. Let’s make your first profile enrichment call and inspect the result.
Tip
Don’t have an API key yet? Start with Authentication.
1. Send the request
The Person Profile endpoint retrieves a complete professional profile from a Social URL. It costs 1 credit (cached data).
curl -X POST https://api.reversecontact.com/v2/fetch/persons \
-H "Authorization: Bearer ${RC_API_KEY}" \
-H "Content-Type: application/json" \
-d '{"url": "https://www.social.com/in/janedoe"}'
const response = await fetch("https://api.reversecontact.com/v2/fetch/persons", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.RC_API_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
url: "https://www.social.com/in/janedoe"
})
});
const result = await response.json();
console.log(result.data.firstName, result.data.lastName);
import os
import requests
response = requests.post(
"https://api.reversecontact.com/v2/fetch/persons",
headers={
"Authorization": f"Bearer {os.environ['RC_API_KEY']}",
"Content-Type": "application/json"
},
json={"url": "https://www.social.com/in/janedoe"}
)
result = response.json()
print(result["data"]["firstName"], result["data"]["lastName"])
Tip
Want to test without writing code? Try the API Playground to run requests directly from your browser.
2. Read the response
A successful response returns the full profile inside data:
{
"success": true,
"data": {
"id": "prs_01jbd5vewyenebxgaz869ffe5t",
"publicId": "janedoe",
"firstName": "Jane",
"lastName": "Doe",
"headline": "VP of Marketing at Acme Corp",
"photoUrl": "https://media.licdn.com/dms/image/...",
"isOpenToWork": false,
"location": {
"city": "San Francisco",
"country": "United States"
},
"currentPosition": {
"title": "VP of Marketing",
"companyName": "Acme Corp"
},
"experience": [
{
"title": "VP of Marketing",
"companyName": "Acme Corp",
"startEndDate": { "start": "2021-06-01T00:00:00.000Z", "end": null }
}
],
"skills": ["Marketing Strategy", "B2B SaaS", "Demand Generation"]
},
"error": null,
"quotas": {
"creditsConsumed": 1,
"workspace": {
"credits": { "total": 10000, "used": 1, "left": 9999 }
}
},
"metadata": {
"requestId": "a1b2c3d4-e5f6-4a90-abcd-ef1234567890",
"executionTimeMs": 230
}
}
Start with these key fields:
| Field | What it gives you |
|---|---|
data.firstName / data.lastName |
Full name |
data.headline |
Current role summary |
data.currentPosition |
Job title + company (how it is chosen) |
data.experience |
Full work history with dates |
data.skills |
List of professional skills |
data.location |
City, state, country |
See the Person Profile endpoint for all available fields, and API reference for the full response structure.
3. Handle errors
If the URL is invalid, you get a 422 with zero credits charged:
{
"success": false,
"data": null,
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid LinkedIn profile URL. Expected format: https://linkedin.com/in/username"
}
}
| Issue | Fix |
|---|---|
| Invalid LinkedIn URL | Use the full URL: https://www.linkedin.com/in/username |
401 Unauthorized |
Check your API key. See Authentication |
402 Insufficient credits |
Purchase more credits from the dashboard |
404 Not found |
The profile doesn’t exist or isn’t indexed yet. Try the Live endpoint |
For all error codes and retry strategies, see Error handling & retries.