/v2/campaigns/lead-finder/importReveals (or reuses cached reveals of) email + optionally mobile for the given people, then saves them to your account-wide Saved Leads — the same list Add leads to campaign pulls from. This is the "export" step for people, same idea as Save companies.
| Authorization | Bearer YOUR_API_KEY |
| Content-Type | application/json |
| Field | Type | Required | Description |
|---|---|---|---|
| personIds | string[] | Required | 1–20,000 person IDs from a Search people result. |
| leads | object[] | Optional | Per-person hints (firstName, lastName, company, jobTitle, wantMobile, etc.) carried over from the search result — anything not in here is lost once saved, since the reveal call itself only returns name/company/email/mobile. |
| label | object | Optional | { name, color } — which Saved Leads group to file these under. Omitted defaults to "Sourced Leads". |
| skipSave | boolean | Optional | true to only reveal + cache (still spends credits) without creating a Saved Leads row — for callers about to save the lead somewhere else themselves. |
curl -X POST "https://api.stynar.com/v2/campaigns/lead-finder/import" \
-H "Authorization: Bearer esk_your_key_here" \
-H "Content-Type: application/json" \
-d '{"personIds":["prs_a1b2c3"],"leads":[{"personId":"prs_a1b2c3","firstName":"Jane","lastName":"Doe","company":"Acme Inc","wantMobile":false}]}'{
"imported": 1,
"skipped": {
"duplicatesInFile": [],
"duplicatesInDB": [],
"invalidRows": [],
"smartFiltered": {
"bounced": [],
"unsubscribed": [],
"complaint": [],
"alreadyContacted": []
}
},
"truncated": false
}| Status | Code | Meaning |
|---|---|---|
| ✕ 402 | INSUFFICIENT_CREDITS | Not enough credits to reveal the requested people. |
| ✕ 401 Unauthorized | UNAUTHORIZED | Missing, malformed, unknown, revoked, or expired key. |
| ✕ 403 Forbidden | API_ACCESS_DISABLED | API access is turned off for your account. |
| ✕ 403 Forbidden | INSUFFICIENT_SCOPE | The key doesn't have the scope this endpoint requires. |
| ✕ 404 Not Found | NOT_FOUND | Unknown route, or a resource that doesn't exist / isn't yours. |
| ✕ 409 Conflict | CONFLICT | The action can't be applied to the resource's current state. |
| ✕ 429 Too Many Requests | RATE_LIMIT_EXCEEDED | Per-minute or per-second limit hit. |
| ✕ 429 Too Many Requests | QUOTA_EXCEEDED | Monthly quota exhausted. |
| ✕ 500 Internal Server Error | INTERNAL_ERROR | Something broke on Stynar's end. |