# Get a lead

> One lead with its contacts, the surfaced draft, and the research behind each column.

Canonical: https://revnu.com/docs/lead
Last updated: 2026-10-21

```bash
curl -H "Authorization: Bearer $REVNU_API_TOKEN" https://revnu.com/api/v1/leads/sn7…
```

## Response

`{ "lead": { …, fields, draft, research, contacts: [contact, …], contactsTruncated: false } }`. Contacts are capped at 50, with `contactsTruncated: true` when there were more. `linkedin` is where the lead stands in a sequence with LinkedIn steps, or `null`, as described in [LinkedIn sequence progress](https://revnu.com/docs/leads.md#linkedin-sequence-progress). The lead and each contact carry `workflowRunId`, the workflow run that created it, or `null`. `404` for an unknown or another account's lead.

A contact is `{ id, workflowRunId, email, name, firstName, title, linkedinUrl, photoUrl, emailStatus, role, isPrimary, identityConfidence }`, with `null` for anything not known.

`draft` is the surfaced draft, `{ subject, body }` (each cut at 16,000 characters), or `null` when there is none. `research` is a list of entries, one per key the agent saved research under: `{ key, reasoning, sources: [{ url, title }], sourcesTruncated }`, the agent's reasoning (cut at 8,000 characters) and up to 20 sources behind that value. A source whose URL is longer than 2,048 characters is left out rather than cut, and `sourcesTruncated` says when anything was left out. Keys with no visible column appear here too.

## Frequently asked questions

### How do I read a daily recommendation?

Each recommended lead is a row. List leads and take the id, then read the lead: `fields` has the fit and the Slack card reference where those columns are set up, `contact` is the person, `draft` or a `research` entry holds the message, and each research entry's `sources` has the links. The lead id is the stable id to track state against.

### Which scope does this need?

`leads:read`. A token without it gets `403` with `requiredScope` in the body. `GET /me` shows a token's scopes.

### Are responses cached?

No. Every response is `Cache-Control: no-store`, so what you read is current.
