Request a Phone Enrichment
Starts an asynchronous lookup of mobile and direct-dial phone numbers for a LinkedIn profile. Returns immediately with a request _id and a status of pending; a provider waterfall then runs in the background, validating each candidate number and completing on the first one that clears validation. The result is delivered either by polling GET /v1/api/enrichment/phone/{id} or via the optional callback_url webhook. A completed lookup that returns at least one number costs 1 enrichment credit; a completed lookup with an empty list, and every not-found result, are free. Phone and email enrichment share one credit pool, and a positive balance is required.
_id and a status of pending. Behind it runs a provider waterfall: each data provider in turn is asked for a number, every candidate is validated, and the request completes on the first number that clears validation. Collect the result either by polling the returned _id, or by providing a callback_url that we POST to when the lookup finishes.
completed result with an empty phone_numbers list, and every not-found result, are free. Phone and email enrichment draw on the same credit pool — check the balance with Get Enrichment Credits. The request is rejected with 402 if the team has no remaining credits.Request Body
Example Request
Response (201)
_id — it is the handle for polling and the identifier referenced in the callback as request_id.
external_id is held against your request and returned in the callback only. It is not echoed in this response, nor in the polling response.Callback payload
If you supplied acallback_url, we POST a JSON body to it once the lookup resolves:
contact, while the poll response returns phone_numbers at the top level.
status is either completed or not-found — a phone enrichment never calls back with failed. On not-found, contact is usually null; when the profile is known but no provider was eligible to be queried, contact is present with the numbers already on file. Delivery is attempted up to 3 times with backoff; if every attempt fails, fall back to polling.
Errors
Authorizations
Team-scoped API key generated in the Salesfinity dashboard under Settings -> Connections & API. A missing or invalid key returns HTTP 403.
Body
LinkedIn profile URL. Must be a linkedin.com/in/ URL.
"https://www.linkedin.com/in/username"
Optional. Webhook URL POSTed when the enrichment finishes. Retried up to 3 times.
"https://example.com/webhooks/enrichment"
Optional. Echoed back in the callback payload for client-side correlation. It is not returned by this endpoint or by the polling endpoint.
256"lead-42"
Response
Enrichment request accepted. Poll the returned _id, or wait for the callback.
Enrichment request ID. Use this to poll GET /v1/api/enrichment/phone/{id}, and to match the request_id in the callback.
"507f1f77bcf86cd799439011"
Current state of the request. completed means the waterfall finished; not-found means no number passed validation. Phone enrichment never resolves to failed.
pending, processing, completed, not-found The LinkedIn profile URL the request was created with.
"https://www.linkedin.com/in/username"
The username extracted from the LinkedIn URL.
"username"
Always contact for phone enrichment.
contact Every number held for the profile, not only the ones this request discovered. Populated only when status is completed; an empty array otherwise. Absent from the response to POST /v1/api/enrichment/phone.
"2026-08-27T10:15:04.221Z"
"2026-08-27T10:16:38.904Z"