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

# List Warm Intro Activity

> Who set a warm intro's owner and status, and when

Everything that happened to one warm intro, newest first: who made themselves
or someone else the owner, who changed the status, note edits, dismissals and
intro requests. See [Record Activity](https://docs.clustr-ai.com/record-activity.md) for every kind.

Name the intro by its two people, with their [Clustr IDs](https://docs.clustr-ai.com/clustr-ids.md) or LinkedIn ids, or by the
opportunity's Clustr ID.

## Response

Each event names its `kind`, its `actor` (a member's id or email,
`crm:<provider>`, a Workflow, or `system`) and a `detail` that says what
changed and what it was before. When the actor is a member, `detail` also
carries `actorName` and `actorEmail`. Entries Clustr filled in from dates it
already had, for changes made before this history was recorded, carry
`"backfilled": true`.

```bash cURL theme={null}
curl "https://api.clustr-ai.com/api/public/paths/activity?client_linkedin_id=per_68gef5wxsnd7wfsfz798svc4q3&prospect_linkedin_id=per_wqt0td77p59gcnshs759ewyyj1" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

```json 200 theme={null}
{
  "success": true,
  "data": {
    "events": [
      {
        "clustrRecordActivityId": "act_pmrexzr1a65a55kt261wwhmzqr",
        "id": "5b1c0d2e-8f3a-4c1e-9d7b-2a6f4e8c1b90",
        "entity": "path",
        "recordKey": "janedoe|johnsmith",
        "kind": "tags_set",
        "actor": "3f6e2a91-7c4b-4d8e-a1f2-9b0c5d7e6f13",
        "detail": {
          "names": ["Contacted"],
          "from": { "names": ["Assigned"] },
          "actorName": "Alice Martin",
          "actorEmail": "alice@yourco.com"
        },
        "occurredAt": "2026-09-24T09:12:00Z",
        "count": 1,
        "firstAt": "2026-09-24T09:12:00Z"
      },
      {
        "clustrRecordActivityId": "act_arw59my4ffvv7znx06ebt6epqn",
        "id": "a2d9e4f1-6b3c-4e7a-8f1d-0c5b9a7e2d46",
        "entity": "path",
        "recordKey": "janedoe|johnsmith",
        "kind": "owner_set",
        "actor": "3f6e2a91-7c4b-4d8e-a1f2-9b0c5d7e6f13",
        "detail": {
          "email": "alice@yourco.com",
          "from": { "ownerId": "", "email": "" },
          "actorName": "Alice Martin"
        },
        "occurredAt": "2026-09-23T16:40:00Z",
        "count": 1,
        "firstAt": "2026-09-23T16:40:00Z"
      }
    ],
    "has_more": false
  }
}
```

```json 404 theme={null}
{
  "success": false,
  "error": { "message": "warm intro not found", "code": "NOT_FOUND" }
}
```


## OpenAPI

````yaml GET /paths/activity
openapi: 3.1.0
info:
  title: Clustr Public API
  description: >
    Programmatic access to your Clustr network: import connectors, search warm
    intros (opportunities), and manage target accounts.


    ## Authentication

    All endpoints require a Bearer token (API key) in the `Authorization`
    header.


    ```

    Authorization: Bearer <your_api_key>

    ```


    API keys can be created and managed from the [API settings
    page](https://app.clustr-ai.com/api).
  version: '1.0'
  contact:
    name: Clustr Support
    url: https://clustr-ai.com
servers:
  - url: https://api.clustr-ai.com/api/public
    description: Production
security:
  - BearerAuth: []
paths:
  /paths/activity:
    get:
      tags:
        - Record Activity
      summary: List Warm Intro Activity
      description: >-
        One warm intro's history, newest first: who set its owner and status and
        when, note edits, dismissals and intro requests. Name the warm intro by
        its two LinkedIn ids, or by `opportunity_id`.
      operationId: getPathActivity
      parameters:
        - name: client_linkedin_id
          in: query
          schema:
            type: string
          description: >-
            The connector side of the warm intro, by Clustr ID (`per_…`) or
            LinkedIn id. Send it with

            `prospect_linkedin_id`.
          example: per_r2jsaypqscc8djv27v7xxe0kcg
        - name: prospect_linkedin_id
          in: query
          schema:
            type: string
          description: >-
            The prospect side of the warm intro, by Clustr ID (`per_…`) or
            LinkedIn id.
          example: per_y256gd7j5hdawhp88hc26m05qp
        - name: opportunity_id
          in: query
          schema:
            type: string
          description: >-
            The warm intro's Clustr ID (`opp_…`), instead of the two people. The
            opportunity id from earlier

            responses also works.
          example: opp_xpn8j99wq50d0nnqda874n494r
        - name: limit
          description: The number of events per page, up to 200.
          in: query
          schema:
            type: integer
            default: 50
            maximum: 200
        - name: offset
          description: >-
            The number of events to skip, for the next page when `has_more` is
            true.
          in: query
          schema:
            type: integer
            default: 0
      responses:
        '200':
          description: The warm intro's history
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  data:
                    type: object
                    properties:
                      events:
                        type: array
                        items:
                          type: object
                          properties:
                            clustrRecordActivityId:
                              type: string
                              description: >-
                                The event's Clustr ID, for example
                                `act_wtah7gh7rzy1c3v56vdzdg79ns`. Use it to
                                refer to this

                                event.
                              example: act_wtah7gh7rzy1c3v56vdzdg79ns
                            id:
                              type: string
                              description: >-
                                Kept for integrations built before Clustr IDs.
                                New integrations should use
                                `clustrRecordActivityId`.
                            entity:
                              type: string
                              enum:
                                - path
                            recordKey:
                              type: string
                              description: <client_linkedin_id>|<prospect_linkedin_id>
                            kind:
                              type: string
                            actor:
                              type: string
                              description: >-
                                A member's id or email, crm:<provider>,
                                workflow:<id>, or system.
                            detail:
                              type: object
                              additionalProperties: true
                            occurredAt:
                              type: string
                              format: date-time
                            count:
                              type: integer
                            firstAt:
                              type: string
                              format: date-time
                      has_more:
                        type: boolean
        '400':
          description: Neither the two LinkedIn ids nor an opportunity_id
        '401':
          description: Invalid or missing API key
        '404':
          description: No such warm intro
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: The API key you created on the API settings page of the Clustr app.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.