> ## 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.

# Get An Opportunity's Tags

> The tags on one warm intro

An opportunity is a **path**: a connector and a prospect. Its tags are keyed on
that pair rather than on the opportunity row, because ingestion re-creates the
row and the path between two people outlives it.

This is where a former status lives. The tags of the `path` group named Status
are the statuses your workspace used to have, with the same ids.

## Query Parameters

<ParamField query="client_linkedin_id" type="string" required>
  The connector's LinkedIn public identifier.
</ParamField>

<ParamField query="prospect_linkedin_id" type="string" required>
  The prospect's LinkedIn public identifier.
</ParamField>

<Note>
  **The pair is in the query string, not the path.** A LinkedIn public
  identifier can carry characters a path segment would have to escape, and two
  of them in one path makes an ambiguous route.
</Note>

## Response Fields

<ResponseField name="tags" type="array">
  The tags on the path: `id`, `group_id`, `name`, `color` and `closes`. A tag
  with `closes: true` closes the intro.
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl "https://api.clustr-ai.com/api/public/record-tags/path?client_linkedin_id=nicdelaye&prospect_linkedin_id=jane-smith" \
    -H "Authorization: Bearer YOUR_API_KEY"
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "success": true,
    "data": {
      "tags": [
        {
          "id": "8f652e61-edfa-4a8c-8763-cc4902dd386b",
          "group_id": "2b7c9d10-4e5f-4a61-9c22-8d3f1a7b0e44",
          "name": "Contacted",
          "color": "#3B82F6"
        }
      ]
    }
  }
  ```

  ```json 400 theme={null}
  {
    "success": false,
    "error": { "message": "client_linkedin_id and prospect_linkedin_id are required", "code": "BAD_REQUEST" }
  }
  ```
</ResponseExample>
