---
title: "Message history for one lead"
method: GET
path: "/api/v1/leads/{id}/activity"
tags: ["Leads"]
---

# Message history for one lead

`GET /api/v1/leads/{id}/activity`

## Request

- Base URL: `https://www.zen-mode.io`
- URL: `https://www.zen-mode.io/api/v1/leads/{id}/activity`
- Auth: HTTP bearer

Sent and received messages, newest first. `source` distinguishes desktop automation from the web composer.

## Path parameters

- `id` integer, required

## Query parameters

- `limit` integer
- `offset` integer
- `direction` 'sent' | 'received'

## Response `200`

A page of activity.

- object
  - `lead` object
    - `id` integer
    - `campaign_id` integer
    - `name` string, nullable
    - `linkedin_url` string
    - `status` string
  - `activity` object[]
    - `id` integer
    - `direction` 'sent' | 'received'
    - `text` string, nullable
    - `source` 'automation' | 'voyager-sync' | 'sync' | 'manual' | 'web_sent' | 'web_queued'
    - `read_by_you` boolean
    - `created_at` string, date-time, nullable
  - `pagination` object
    - `limit` integer
    - `offset` integer
    - `returned` integer

## Other responses

- `400`: Invalid id or direction.
- `401`: Missing, malformed or invalid Authorization header, or an unknown API key.
- `403`: The key is valid but the account's plan does not include API access.
- `404`: Lead not found for this account.
- `429`: Rate limit exceeded (100 requests/minute). Carries `Retry-After`.
- `500`: Unhandled server error.

---

[API](https://skmtc.dev/zen-mode/apis/zenmode-api.md) · [All operations](https://skmtc.dev/zen-mode/apis/zenmode-api/llms.txt) · [OpenAPI document](https://skmtc.dev/zen-mode/apis/zenmode-api/revisions/2769372f1e3f?raw)
