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

# Clustr IDs

> The id to use for every record in Clustr, in the API, the MCP server, webhooks and exports

Every record in Clustr has a Clustr ID: a person, an account, an opportunity, a competitor, a tag,
a job and so on. It starts with a short prefix that says what kind of record it is, followed by 26
characters:

```
per_4bwcc6fsx7kz8aqg8hg6z0bf0p     a person
acc_2wby2345bjwbffmex47xt6hcv6     an account
```

Use the Clustr ID whenever you need to point at a record: in a URL, in a request body, in a
filter, or as the key you store in your own systems. A record keeps the same Clustr ID for its
whole life, so it stays valid when someone renames their LinkedIn profile or a company changes its
LinkedIn page.

## Where you find it

Every object the API returns carries its Clustr ID in a field that starts with `clustr_`:

```json theme={null}
{
  "id": "6f1c3a0e-2b0d-4c53-9a39-8f3c1d2e4b5a",
  "clustr_competitor_id": "cmp_3k9w2x7mqh4vtc8n1ep5zr6ya0",
  "name": "Acme",
  "tag_ids": ["0b7f6f0e-8a43-4d4f-9a9c-3c2f1b6e7d10"],
  "clustr_tag_ids": ["tag_6nq0x2c9v8m4w1k7p3z5t8h2ra"]
}
```

The same goes for the records an object points at: an opportunity in the search results carries
`clustr_opportunity_id`, and the connector and prospect inside it each carry their own
`clustr_person_id`. A list of ids, such as `tag_ids`, has its Clustr IDs in the same order in `clustr_tag_ids`.

The [MCP server](https://docs.clustr-ai.com/mcp-server.md) answers with the same fields, so an assistant can pass a Clustr ID
from one tool to the next.

## Using it in requests

Every route that takes the id of a record also takes its Clustr ID, in the path, in a query
parameter or in the body:

```bash theme={null}
curl "https://api.clustr-ai.com/api/public/v2/persons/per_4bwcc6fsx7kz8aqg8hg6z0bf0p/note" \
  -H "Authorization: Bearer $CLUSTR_API_KEY"
```

If you already store other ids, such as LinkedIn identifiers or the ids in our earlier responses,
they keep working. You can move to Clustr IDs at your own pace.

When you send the Clustr ID of the wrong kind of record (a tag's id where a competitor's is
expected), the answer is `404`.

## Merged records

When Clustr finds that two records are the same person or the same company, it merges them. The
Clustr ID of the record that was merged away keeps working: the answer is the surviving record,
with its own Clustr ID and a `redirected_from` field holding the id you asked for. Update your copy
to the new id when you see one.

## Prefixes

| Record | Prefix |
| - | - |
| Person (connector or prospect) | `per_` |
| Account (company) | `acc_` |
| School | `sch_` |
| Opportunity | `opp_` |
| Competitor | `cmp_` |
| Competitor run | `crun_` |
| Competitor report | `crep_` |
| Tag | `tag_` |
| Tag group | `tgrp_` |
| Tier | `tier_` |
| ICP | `icp_` |
| Saved view | `view_` |
| Target account | `tacc_` |
| Owner | `own_` |
| Intro request | `intro_` |
| Import job | `job_` |
| Bulk change | `bjob_` |
| Workflow | `wf_` |
| Workflow run | `wfrun_` |
| Account research report | `abs_` |
| CRM Cleaning run | `clrun_` |
| CRM Cleaning change | `clchg_` |
| Workspace | `ten_` |
| Organization | `org_` |
| User | `usr_` |
| API key | `key_` |

Treat a Clustr ID as an opaque string: compare it as a whole, and read the prefix only to tell what
kind of record it names.


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