---
title: "Publicv1Leadrouter.List Leads"
method: GET
path: "/v1/leads"
tags: ["v1"]
---

# Publicv1Leadrouter.List Leads

`GET /v1/leads`

## Request

- Base URL: `https://app.eve.legal` (the document declares no server; this is the origin it was published from)
- URL: `https://app.eve.legal/v1/leads`
- Auth: OAuth 2
  - Password
  - Token URL: `token`

## Query parameters

- `afterId` string, uuid, nullable: After id for paginated query
- `beforeId` string, uuid, nullable: Before id for paginated query
- `limit` integer: Number of items to return
- `sortOrder` 'Asc' | 'Desc'
- `sortBy` 'NAME' | 'CREATED_AT' | 'LAST_UPDATED_AT'
- `status` 'OPEN' | 'SIGNED' | 'CLOSED' | 'NOT_CONTACTED' | 'NO_RESPONSE' | 'INVESTIGATION' | 'SUPERVISOR_REVIEW' | 'RETAINER_OUT' | 'SIGNED_NO_MATTER' | 'REFERRED_OUT' | 'ALL'
- `source` 'EVE_LEAD_INGESTION_API' | 'EVE_MANUAL' | 'EVE_SCRIBE' | 'EVE_VOICE_AI' | 'ALL'

## Response `200`

Successful Response

- ListLeadsResponse
  - `hasNext` boolean, required: Whether there is a next page
  - `hasPrevious` boolean, required: Whether there is a previous page
  - `totalCount` integer, required: Total number of leads
  - `items` LeadSummary[], required: List of leads
    - `id` string, uuid, required: ID of the lead
    - `externalId` string, nullable: External ID of the lead
    - `externalLeadUrl` string, nullable: External URL for the lead
    - `name` string, required: Name of the lead
    - `createdAt` string, required: Created at
    - `lastUpdatedAt` string, required: Last updated at
    - `status` 'OPEN' | 'SIGNED' | 'CLOSED' | 'NOT_CONTACTED' | 'NO_RESPONSE' | 'INVESTIGATION' | 'SUPERVISOR_REVIEW' | 'RETAINER_OUT' | 'SIGNED_NO_MATTER' | 'REFERRED_OUT', required: Public lead status: the legacy contract plus the lead workflow statuses. OPEN/SIGNED/CLOSED are the original values and stay valid for external consumers. The workflow values mirror the internal CPLeadWorkflowStatus: NOT_CONTACTED, NO_RESPONSE, INVESTIGATION, SUPERVISOR_REVIEW, RETAINER_OUT and REFERRED_OUT map 1:1, internal workflow SIGNED surfaces as SIGNED_NO_MATTER (retainer signed, lead not yet converted to a matter — distinct from legacy SIGNED), and workflow CLOSED reuses CLOSED. A lead WITH a workflow status returns the workflow-derived value; a lead without one returns the legacy 3-value mapping. On writes, the three legacy values keep their original semantics (legacy write path, so CLOSED needs no close reason); workflow values write the corresponding internal workflow status.
    - `sourceType` 'EVE_LEAD_INGESTION_API' | 'EVE_MANUAL' | 'EVE_SCRIBE' | 'EVE_VOICE_AI', required
    - `visibility` 'ORG' | 'USER', required
    - `voiceAgentMetadata` object, nullable, required: Voice agent metadata of the lead
    - `associatedUsers` User[]: Users associated with the lead
      - `email` string, required: Email of the user
      - `id` string, required: Eve ID of the user

## Other responses

- `401`: Unauthorized
- `422`: Validation Error

---

[API](https://skmtc.dev/eve/apis/eve-public-api.md) - [All operations](https://skmtc.dev/eve/apis/eve-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/eve/apis/eve-public-api/revisions/1a108b551ef3?raw)
