> ## Documentation Index
> Fetch the complete documentation index at: https://api.smartlead.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Get All Leads Activities

> Retrieve comprehensive activity timeline for all leads across all campaigns with email interactions

<Note>
  Returns detailed activity data including sent emails, opens, clicks, replies, and thread conversations for leads across all campaigns. Useful for building activity feeds and tracking engagement.
</Note>

## Query Parameters

<ParamField query="api_key" type="string" required>
  Your SmartLead API key
</ParamField>

<ParamField query="offset" type="number" default="0">
  Pagination offset (minimum: 0)
</ParamField>

<ParamField query="limit" type="number" default="100">
  Number of lead activities to return (minimum: 1, maximum: 1000)
</ParamField>

<ParamField query="event_time_from" type="string">
  Filter activities from this date/time. Accepts ISO 8601 format (e.g., `2025-11-25T00:00:00.000Z`) or `YYYY-MM-DD` format
</ParamField>

<ParamField query="event_time_to" type="string">
  Filter activities until this date/time. Accepts ISO 8601 format or `YYYY-MM-DD` format. Must be used with `event_time_from`
</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl "https://server.smartlead.ai/api/v1/campaigns/all-leads-activities?api_key=YOUR_KEY&limit=50&event_time_from=2025-11-01&event_time_to=2025-11-30"
  ```

  ```python Python theme={null}
  import requests
  from datetime import datetime, timedelta

  API_KEY = "YOUR_API_KEY"

  # Get activities from the last 7 days
  event_time_from = (datetime.now() - timedelta(days=7)).isoformat()
  event_time_to = datetime.now().isoformat()

  response = requests.get(
      "https://server.smartlead.ai/api/v1/campaigns/all-leads-activities",
      params={
          "api_key": API_KEY,
          "limit": 50,
          "offset": 0,
          "event_time_from": event_time_from,
          "event_time_to": event_time_to
      }
  )

  result = response.json()
  print(f"Total activities: {len(result['data'])}")
  print(f"Has more: {result['hasMore']}")

  # Process activities
  for activity in result['data']:
      print(f"Lead {activity['lead_id']} in campaign {activity['campaign_name']}")
      print(f"  Activities: {len(activity['activities'])}")
  ```

  ```javascript JavaScript theme={null}
  const API_KEY = 'YOUR_API_KEY';

  // Get activities from the last 7 days
  const eventTimeFrom = new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).toISOString();
  const eventTimeTo = new Date().toISOString();

  const params = new URLSearchParams({
    api_key: API_KEY,
    limit: 50,
    offset: 0,
    event_time_from: eventTimeFrom,
    event_time_to: eventTimeTo
  });

  const response = await fetch(
    `https://server.smartlead.ai/api/v1/campaigns/all-leads-activities?${params}`
  );

  const result = await response.json();
  console.log(`Total activities: ${result.data.length}`);
  console.log(`Has more: ${result.hasMore}`);

  // Process activities
  result.data.forEach(activity => {
    console.log(`Lead ${activity.lead_id} in campaign ${activity.campaign_name}`);
    console.log(`  Activities: ${activity.activities.length}`);
  });
  ```
</RequestExample>

## Response Fields

<ResponseField name="data" type="array">
  Array of lead activity objects

  <Expandable title="Lead activity properties">
    <ResponseField name="lead_id" type="number">
      Unique lead identifier
    </ResponseField>

    <ResponseField name="email_lead_map_id" type="number">
      Campaign-lead mapping identifier
    </ResponseField>

    <ResponseField name="campaign_id" type="number">
      Campaign ID
    </ResponseField>

    <ResponseField name="campaign_name" type="string">
      Campaign name
    </ResponseField>

    <ResponseField name="campaign_status" type="string">
      Campaign status
    </ResponseField>

    <ResponseField name="status" type="string">
      Lead status in the campaign
    </ResponseField>

    <ResponseField name="current_seq_num" type="number">
      Current sequence number for the lead
    </ResponseField>

    <ResponseField name="created_at" type="timestamp">
      When the lead was added to the campaign
    </ResponseField>

    <ResponseField name="activities" type="array">
      Array of email activity objects

      <Expandable title="Activity properties">
        <ResponseField name="stats_id" type="number">
          Email statistics ID
        </ResponseField>

        <ResponseField name="message_id" type="string">
          Email message ID
        </ResponseField>

        <ResponseField name="subject" type="string">
          Email subject line
        </ResponseField>

        <ResponseField name="email_body" type="string">
          Email body content
        </ResponseField>

        <ResponseField name="sent_time" type="timestamp">
          When the email was sent
        </ResponseField>

        <ResponseField name="from_email" type="string">
          Sender email address
        </ResponseField>

        <ResponseField name="to_email" type="string">
          Recipient email address
        </ResponseField>

        <ResponseField name="email_seq_number" type="number">
          Sequence number of the email
        </ResponseField>

        <ResponseField name="open_count" type="number">
          Number of times the email was opened
        </ResponseField>

        <ResponseField name="click_count" type="number">
          Number of times links were clicked
        </ResponseField>

        <ResponseField name="click_details" type="object">
          Details about link clicks
        </ResponseField>

        <ResponseField name="reply_details" type="object | null">
          Reply information if the lead replied

          <Expandable title="Reply details">
            <ResponseField name="time" type="timestamp">
              When the reply was received
            </ResponseField>

            <ResponseField name="reply_email_body" type="string">
              Reply email content
            </ResponseField>

            <ResponseField name="message_id" type="string">
              Reply message ID
            </ResponseField>
          </Expandable>
        </ResponseField>

        <ResponseField name="thread_replies" type="array">
          Array of thread replies (back-and-forth conversation)
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="hasMore" type="boolean">
  Whether there are more results available for pagination
</ResponseField>

## Response Codes

<ResponseField name="200" type="Success">
  Activities retrieved successfully
</ResponseField>

<ResponseField name="400" type="Bad Request">
  Invalid date format for event\_time\_from or event\_time\_to
</ResponseField>

<ResponseField name="401" type="Unauthorized">
  Invalid or missing API key
</ResponseField>

<ResponseField name="422" type="Validation Error">
  Invalid query parameters (check limit and offset ranges)
</ResponseField>

<ResponseField name="500" type="Internal Server Error">
  Server error occurred
</ResponseField>

<ResponseExample>
  ```json 200 - Success theme={null}
  {
    "data": [
      {
        "lead_id": 2995276770,
        "email_lead_map_id": 2433664091,
        "campaign_id": 123,
        "campaign_name": "Q4 Outreach",
        "campaign_status": "ACTIVE",
        "status": "INPROGRESS",
        "current_seq_num": 2,
        "created_at": "2025-11-25T12:54:54.000Z",
        "activities": [
          {
            "stats_id": 12345,
            "message_id": "<abc123@mail.example.com>",
            "subject": "Quick question about your workflow",
            "email_body": "Hi John, I wanted to reach out...",
            "sent_time": "2025-11-26T10:00:00.000Z",
            "from_email": "sender@company.com",
            "to_email": "john@example.com",
            "email_seq_number": 1,
            "open_count": 3,
            "click_count": 1,
            "click_details": {},
            "reply_details": {
              "time": "2025-11-26T14:30:00.000Z",
              "reply_email_body": "Thanks for reaching out...",
              "message_id": "<reply123@example.com>"
            },
            "thread_replies": []
          }
        ]
      }
    ],
    "hasMore": true
  }
  ```

  ```json 400 - Bad Request theme={null}
  {
    "error": "Invalid event_time_from format. Use YYYY-MM-DD or ISO 8601 format.",
    "status": "error"
  }
  ```

  ```json 401 - Unauthorized theme={null}
  {
    "message": "Invalid API Key"
  }
  ```
</ResponseExample>

## Usage Notes

<Info>
  This endpoint is optimized for retrieving activity timelines. Use the `event_time_from` and `event_time_to` parameters to filter by date range for better performance.
</Info>

<Tip>
  The `hasMore` field indicates if there are additional results. Use the `offset` parameter to paginate through results.
</Tip>

## Related Endpoints

* [Get Campaign Leads](/api-reference/leads/get-by-campaign)
* [Get Lead by Email](/api-reference/leads/get-by-email)
* [Export Campaign Leads](/api-reference/leads/export)
