---
title: "Get the results of a task"
method: GET
path: "/v2/tasks/{taskId}/results"
tags: ["Bulk"]
---

# Get the results of a task

`GET /v2/tasks/{taskId}/results`

## Request

- Base URL: `https://api.reversecontact.com`
- URL: `https://api.reversecontact.com/v2/tasks/{taskId}/results`
- Auth: HTTP bearer

The results of an enrich_persons task, one per item, in the order sent, streamed. format=csv (default) is the file the dashboard downloads: your columns come first (linkedinUrl, email, firstName, lastName, companyDomain, companyName, externalId), then rc_status and rc_message (what happened, with the credits it cost), the finder columns the task asked for (rc_email, rc_phone and their status), and the rc_ person columns (only rc_linkedin_url when the task did not ask for the profile). format=ndjson (JSON Lines) gives one TaskResultLine per line: the same outcome, typed, with the person in the /v2/enrich/persons shape. The file exists once the task is completed or cancelled, when links.results is set: before, 409 TASK_RESULTS_NOT_READY. A task stored before NDJSON existed has its CSV only: 409 TASK_RESULTS_FORMAT_UNAVAILABLE. A cancelled task still finishes the items it had started: each reads running until it ends, within the hour, and the file downloaded after that gives its outcome. Credits: 0 (free).

## Path parameters

- `taskId` string, uuid, required: Task id

## Query parameters

- `format` 'csv' | 'ndjson': csv (default) or ndjson (one JSON object per line, JSON Lines)

## Response `200`

The results, streamed: a CSV (UTF-8 with a byte order mark), or NDJSON (one TaskResultLine per line)

## Other responses

- `400`: Invalid JSON body or endpoint-specific business validation
- `401`: Missing or invalid API key or OAuth access token
- `402`: No credits left. Purchase more to continue.
- `403`: Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)
- `404`: Data not found
- `409`: TASK_RESULTS_NOT_READY: the task is queued, running or paused (the file is ready once it is completed or cancelled), or failed (no file). TASK_RESULTS_FORMAT_UNAVAILABLE: the task was stored before NDJSON existed, its CSV stays available
- `422`: Schema or validation error, unresolved internal id, or disposable email domain
- `429`: Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.
- `451`: Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.

---

[API](https://skmtc.dev/scrapin/apis/reverse-contact-api.md) - [All operations](https://skmtc.dev/scrapin/apis/reverse-contact-api/llms.txt) - [OpenAPI document](https://skmtc.dev/scrapin/apis/reverse-contact-api/revisions/7d02242af2a9?raw)
