---
title: "Find a lead in this workspace by email or LinkedIn URL"
method: GET
path: "/api/v1/leads"
tags: ["Leads"]
---

# Find a lead in this workspace by email or LinkedIn URL

`GET /api/v1/leads`

## Request

- Base URL: `https://app.reachium.io`
- URL: `https://app.reachium.io/api/v1/leads`
- Auth: HTTP bearer

Starts from workspace_leads (never the global leads table alone) and 404s uniformly whether the identity exists in another workspace or does not exist at all - no cross-tenant existence leak. linkedin_url is canonicalized the same way workspace_leads.linkedin_url is stored (host casing, www/bare/country-code/mobile, scheme, trailing slash, /pub/ vs /in/) before comparing.

## Query parameters

- `email` string
- `linkedin_url` string

## Response `200`

The lead plus its campaign memberships.

- object
  - `data` object, required
    - `lead` LeadProfile, required
      - `id` string, required
      - `first_name` string, nullable, required
      - `last_name` string, nullable, required
      - `name` string, nullable, required
      - `linkedin_url` string, nullable, required
      - `job_title` string, nullable, required
      - `headline` string, nullable, required
      - `company_name` string, nullable, required
      - `location` string, nullable, required
      - `email` string, nullable, required
      - `tags` string[], nullable, required
      - `notes` string, nullable, required
      - `custom_fields` object, nullable, required
      - `added_at` string, date-time, nullable, required
    - `campaigns` object[], required
      - `campaign_id` string, required
      - `campaign_name` string, nullable, required
      - `lead_state` string, nullable, required
      - `is_completed` boolean, required
      - `chat_id` string, nullable, required
      - `connected_account_unipile_id` string, nullable, required
      - `linkedin_account_id` string, nullable, required
  - `error` unknown, required

## Other responses

- `400`: Pass exactly one of email or linkedin_url (code invalid_request).
- `401`: Missing or invalid API key. Send `Authorization: Bearer rmcp_...` (code unauthorized).
- `403`: The key's granted scopes do not satisfy this endpoint's minimum required scope (code insufficient_scope).
- `404`: No such lead in this workspace (code not_found). Identical whether the identity exists elsewhere or not at all.
- `429`: Rate limited: shared `mcp:ip:{ip}` (600/60s) or `mcp:key:{keyId}` (120/60s) bucket, the SAME buckets the MCP endpoint uses (code rate_limited).
- `500`: Lookup failed (code lookup_failed).

---

[API](https://skmtc.dev/reachium/apis/reachium-api.md) · [All operations](https://skmtc.dev/reachium/apis/reachium-api/llms.txt) · [OpenAPI document](https://skmtc.dev/reachium/apis/reachium-api/revisions/11682826692b?raw)
