---
title: "Retrieve a client"
method: GET
path: "/api/v1/clients/{id}"
tags: ["Clients"]
---

# Retrieve a client

`GET /api/v1/clients/{id}`

## Request

- Base URL: `https://app.relaw.ai`
- URL: `https://app.relaw.ai/api/v1/clients/{id}`
- Auth: HTTP bearer

## Path parameters

- `id` string, uuid, required

## Response `200`

The client.

- Client
  - `id` string, uuid, required
  - `object` 'client', required
  - `firstName` string, required
  - `lastName` string, required
  - `email` string, nullable: Null is a real possibility, not an edge case — imported contacts often have no email. Do not assume this is present.
  - `phone` string, nullable: E.164.
  - `type` 'person' | 'organization'
  - `lifecycle` 'lead' | 'client' | 'former', required: `lead` has not been engaged; `client` is active; `former` is closed.
  - `leadSource` string, nullable
  - `leadScore` integer, nullable: 0–100, or null if not yet scored. Recomputed as engagement changes and as a lead goes cold, so it moves without the record changing.
  - `leadScoreBand` 'hot' | 'warm' | 'cold' | 'null', nullable
  - `attribution` object: First-touch, captured once on arrival and never overwritten.
    - `utmSource` string, nullable
    - `utmMedium` string, nullable
    - `utmCampaign` string, nullable
    - `utmTerm` string, nullable
    - `utmContent` string, nullable
    - `referrerHost` string, nullable
  - `createdAt` string, date-time

## Other responses

- `400`: `id` is not a UUID.
- `401`: Missing, malformed, revoked, or unknown API key.
- `404`: No such client. Also returned for a client belonging to another firm, deliberately — distinguishing the two would reveal whether an id exists on the platform.

---

[API](https://skmtc.dev/relaw/apis/relaw-api.md) - [All operations](https://skmtc.dev/relaw/apis/relaw-api/llms.txt) - [OpenAPI document](https://skmtc.dev/relaw/apis/relaw-api/revisions/51a8e71983e0?raw)
