The X-Request-Id header
Every authenticated response includes an X-Request-Id HTTP header containing a UUID that uniquely identifies the request. This value is also mirrored inside the response body as meta.requestId. Save it when you contact support — it lets the team locate the exact request in logs instantly.
Sync response (HTTP 200)
Fast operations complete within the request lifecycle and return HTTP 200. When an endpoint uses an envelope, thedata field holds the endpoint-specific payload.
Async accepted response (HTTP 202)
Long-running operations — batch enrichment, search, and deep research — are accepted immediately and processed in the background. The response contains everything you need to poll for the result.| Field | Type | Description |
|---|---|---|
id | string | Unique ID for the background job |
operationId | string | Unique ID for the background job |
status | string | Always "queued" on acceptance |
pollUrl | string | Fully-qualified URL to poll for status and result |
meta.requestId | string | Correlates to the X-Request-Id header |
pollUrl directly in subsequent GET requests. See Operation status response below for the shape returned while polling.
Operation status response (GET /api/operations/:id)
Poll this endpoint after receiving a 202 to check progress and retrieve the result when the job finishes.
Operation statuses
queued
The job has been accepted and is waiting for a worker to pick it up.
processing
A worker is actively running the job. Check
progress (0–100) for completion
percentage.succeeded
The job finished successfully. Read the result from the
result field.failed
The job encountered an unrecoverable error. Details are in the
error field.partial_success
The job completed but some sub-tasks did not succeed.
result contains
whatever was produced.cancelled
The job was cancelled before it completed.
| Field | Type | Description |
|---|---|---|
id | string | Operation ID matching the operationId from the 202 response |
status | string | Current status (see table above) |
progress | integer | null | Completion percentage (0–100), or null if not yet tracked |
result | object | null | Result payload when status is "succeeded" or "partial_success" |
error | object | null | Error detail when status is "failed" |
Search result metadata
Search operations return aresult object with data and meta fields when they finish. For people search scoped to target accounts, the metadata can include safe target-account status fields:
| Field | Values | Meaning |
|---|---|---|
targetAccountSearchMode | linkedin_company_page, profile_current_company, unavailable | How the search constrained people to the requested account. |
targetAccountOutcome | provided_linkedin_handle, verified_linkedin_handle, unverified_or_conflicting_linkedin_candidates, unresolved | The LinkedIn company-handle resolution outcome. Use targetAccountSearchMode to see whether people were matched through a company page, current profile company text, or no available path. |
providerOutcome | hit, empty_clean, empty_partial_failure | Whether the selected provider returned usable rows, returned no rows, or completed with partial provider failure. |
message | string | A short user-facing explanation for empty or unavailable paths. |
companyMatchEvidence:
| Value | Meaning |
|---|---|
company_page | The person matched via a LinkedIn company page constraint. |
profile_current_job | The person matched via current profile company text for the requested account. |