---
title: "List API-visible leads."
method: GET
path: "/customer/leads"
tags: ["Customer REST"]
---

# List API-visible leads.

`GET /customer/leads`

## Request

- Base URL: `https://api.traxy.ai/api/v1`
- URL: `https://api.traxy.ai/api/v1/customer/leads`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/windmill-growth/apis/traxy-customer-api-and-mcp-v1/docs/customer/leads/get.ts> (a function with typed inputs; its response is checked against the schema)

## Query parameters

- `limit` integer
- `cursor` string
- `tier` 'UNQUALIFIED' | 'NURTURE' | 'QUALIFIED' | 'PRIORITY'
- `leadTiers` string
- `disposition` 'ACTIVE' | 'CLIENT' | 'BAD_LEAD'
- `dispositions` string
- `minIcpMatchPercent` integer
- `maxIcpMatchPercent` integer
- `monitoredProfileId` string, uuid
- `monitoredProfileIds` string
- `postId` string, uuid
- `engagementType` 'LIKE' | 'COMMENT' | 'REPOST' | 'POST_AUTHOR'
- `engagementTypes` string
- `ownerId` string, uuid
- `ownerIds` string
- `dateFrom` string, date-time
- `dateTo` string, date-time
- `query` string
- `companyNames` string
- `origin` 'agent' | 'watchlist' | 'all'

## Response `200`

Lead page. Contact fields are null unless the credential has leads:contact_read.

- LeadPage
  - `data` object[], required
    - `id` string, uuid, required
    - `icpMatchPercent` integer, nullable
    - `intentScore` number
    - `leadTier` string, nullable
    - `profile` object, required
      - `displayName` string, nullable, required
      - `headline` string, nullable, required
      - `location` string, nullable, required
      - `currentCompany` string, nullable, required
      - `profileUrl` string, uri, nullable, required: Canonical LinkedIn profile URL; null without leads:contact_read.
    - `contact` object, nullable, required: Null unless the credential has leads:contact_read.
      - `workEmail` string, email, nullable, required
      - `workEmailStatus` string, nullable, required
      - `personalEmail` string, email, nullable, required
      - `personalEmailStatus` string, nullable, required
      - `contactPhone` string, nullable, required
      - `contactPhoneStatus` string, nullable, required
    - `signal` LeadSignal, required
      - `summary` string, required
      - `whyRelevant` string, required
      - `topic` string, nullable, required
      - `type` 'COMPETITOR' | 'PAIN' | 'TRIGGER' | 'TOPIC' | 'CATEGORY_INTEREST' | 'CUSTOM' | 'GENERAL_ENGAGEMENT', required
      - `strength` 'DIRECT' | 'CONTEXTUAL' | 'ACTIVITY', required
      - `sentiment` 'NEGATIVE' | 'POSITIVE' | 'MIXED' | 'NEUTRAL' | 'UNKNOWN', required
      - `occurredAt` string, date-time, required
      - `source` object, required
        - `name` string, nullable, required
        - `title` string, nullable, required
        - `url` string, nullable, required
  - `page` object, required
    - `limit` integer, required
    - `cursor` string, nullable
    - `nextCursor` string, nullable, required

## Other responses

- `400`: Request failed boundary validation.
- `401`: Invalid, expired, or revoked API key.
- `402`: Key or OAuth grant lacks the required scope.
- `429`: Customer API rate limit exceeded or rate-limit enforcement is temporarily unavailable. Retry after the delay in Retry-After.

## Changes

- **2026-09-24** `3dde15782092`: 13 info
  - added the new enum value `POST_AUTHOR` to the `query` request parameter `engagementType`
  - added the required property `allOf[subschema #2]/data/items/contact/contactPhone` to the response with the `200` status
  - added the required property `allOf[subschema #2]/data/items/contact/contactPhoneStatus` to the response with the `200` status
  - added the required property `allOf[subschema #2]/data/items/contact/personalEmail` to the response with the `200` status
  - …9 more
- **2026-07-13** `e60dfaf3c445`: 2 breaking, 1 warning, 20 info
  - the `query` request parameter `tier` was restricted to a list of enum values
  - for the `query` request parameter `limit`, default value was changed from `25` to `50`
  - for the `query` request parameter `cursor`, the maxLength was set to `256`
  - added the new optional `query` request parameter `companyNames`
  - …19 more
- **2026-07-04** `467b330a307b`: 3 breaking, 1 info
  - the response's body type changed from `object` to no type for status `200`
  - removed the required property `data` from the response with the `200` status
  - removed the required property `page` from the response with the `200` status
  - added `#/components/schemas/PageEnvelope, subschema #2` to the response body `allOf` list for the response status `200`
- …earlier changes not shown

[Operation history](https://skmtc.dev/windmill-growth/apis/traxy-customer-api-and-mcp-v1/changes/customer/leads/get.md)

---

[API](https://skmtc.dev/windmill-growth/apis/traxy-customer-api-and-mcp-v1.md) - [All operations](https://skmtc.dev/windmill-growth/apis/traxy-customer-api-and-mcp-v1/llms.txt) - [OpenAPI document](https://skmtc.dev/windmill-growth/apis/traxy-customer-api-and-mcp-v1/revisions/5dad61cc8aea?raw)
