View as Markdown

Get Enrichment Results

GET/v2/enrichments/{id}/results

Reads the results of a completed enrichment created through the API, one row per request item in request order, each tagged with its status; matched rows carry the same person / company object the sync bulk enrich returns. Pages of up to 500 (limit, default 100): send metadata.pagination.next_cursor back as cursor until it is null; status keeps one kind of row. The same items are in the links.jsonl download. Results are kept until results_expires_at (30 days after finished_at). Free; a poll (0 rate-limit units, per-second window only).

How are credits spent?

Reading results is free. Credits were spent while the job ran.

Result statuses

There is one item per request row, in request order, each with your identifier and the row as you sent it in input:

  • matched - found. person (or company) is the same object the sync bulk enrich returns, and matched_by says how. matched_by: "email_finder" means the live finder worked out the email; that person carries the row's name and company plus the email, with id: null.
  • not_matched - nothing found.
  • invalid - the row had no usable lookup; error.message says what to send.
  • failed - a lookup errored on our side; send the row again.
  • not_processed - the job ran out of credits before reaching the row; send it again after a top-up.

Results are available once the job is completed (409 before) and kept for 30 days (results_expires_at, 410 after). Jobs started in the app from a CSV file have no JSON results: download their links.csv. The whole result is also in the job's links.jsonl (one item per line, a signed link valid for an hour; read the job again for a fresh one).

Path parameters

  • idstringrequired

    The enrichment id: the id that a create answers and GET /v2/enrichments lists.

Query parameters

  • cursorstringoptional

    Opaque cursor: metadata.pagination.next_cursor of the previous page. Absent for the first page; the last page answers next_cursor: null.

  • limitintegeroptionalmin: 1max: 500default: 100

    Rows per page.

  • statusenumoptional

    Only the rows with this result status.

    Allowed values: matched not_matched invalid failed not_processed

Responses

  • 200 One page of results.
  • 400 A malformed id or query, or a cursor no page handed out (VALIDATION_ERROR; payload.code says which kind of mistake).
  • 401 Missing, unknown or inactive credentials (UNAUTHORIZED).
  • 404 No enrichment with this id in the workspace (NOT_FOUND).
  • 409 CONFLICT: the job is not completed yet (invalid_state, payload.status names its state), or it was created in the App, whose output is the links.csv file (results_unavailable).
  • 410 The results were removed at results_expires_at (GONE, results_expired).
  • 429 Over the poll rate limit (RATE_LIMIT); wait Retry-After seconds. Sent only where rate limits are enforced for the caller channel.
  • 500 Unexpected server error.

For error handling see Errors. Response objects are described in Person object and Company object.