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

# People

> The human behind one or more contact records.

A person is the human behind one or more [contact](/data-model/contacts) records. When the same human shows up through more than one channel, for example their work email from an email campaign and their LinkedIn profile from a LinkedIn campaign, contacts for that person are shown as one person in RevyOps.

For how merging and splitting people works from the RevyOps UI, see the [People](/user-guide/people) user guide.

## Configuration

|          |                  |
| -------- | ---------------- |
| API path | `/public/people` |
| Singular | person           |
| Plural   | people           |

## Attributes

| Attribute     | API field       | Type                                                   | Writable?              | Notes                                                                                                                                                                    |
| ------------- | --------------- | ------------------------------------------------------ | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| ID            | `id`            | integer                                                | Read-only              | Unique per person.                                                                                                                                                       |
| First name    | `first_name`    | string, nullable                                       | Read-only via this API | Comes from the person's contact records. Set a **Final name** when merging people from the UI.                                                                           |
| Last name     | `last_name`     | string, nullable                                       | Read-only via this API | Same as above.                                                                                                                                                           |
| Emails        | `emails`        | array of identifier objects                            | Read-only via this API | Every email address across the person's contact records. Each item carries its own `company_id`, `job_title`, `status`, `previous_status`, campaign dates, and `origin`. |
| LinkedIn URLs | `linkedin_urls` | array of identifier objects                            | Read-only via this API | Same shape as `emails`, one item per LinkedIn URL.                                                                                                                       |
| Phones        | `phones`        | array of identifier objects                            | Read-only via this API | Same shape as `emails`, one item per phone number.                                                                                                                       |
| Custom fields | `custom_fields` | array of `{id, updated_time, field_name, field_value}` | Read-only via this API | Custom field values from all of the person's contact records, unified into one list.                                                                                     |

There's no `POST` or `PATCH` on `/public/people`: a person's identity fields come from its contact records, which you create and update through the [Contacts](/data-model/contacts) endpoints. The only writes on people are merge and split.

## Relationships

* **Contacts**: one-to-many. A person has one or more contact records; each contact belongs to exactly one person. See [Contacts](/data-model/contacts).
* **Companies**: indirect, through contacts. A person doesn't have its own company; each of its contacts can belong to a company, and `emails`/`linkedin_urls`/`phones` items each carry the `company_id` of the contact they came from.

## Merging and Splitting

* **Merge** (`POST /public/people/merge`) combines every contact record from a list of people into one. The first ID in `person_ids` becomes the primary person; the rest are merged into it. Requires at least 2 person IDs.
* **Split** (`POST /public/people/split`) moves the `contact_ids` you specify off of `person_id` and onto a newly created person. The source person must keep at least one contact.

<Note>
  Merge and split require a master-level API key. See [Authentication](/api-reference/authentication).
</Note>

## Related Endpoints and MCP Tools

| Method | Endpoint                     | Description                                                                           |
| ------ | ---------------------------- | ------------------------------------------------------------------------------------- |
| GET    | `/public/people`             | Search people by email, LinkedIn URL, phone, first name, last name, or company domain |
| GET    | `/public/people/lookup`      | Look up one person by exactly one identifier                                          |
| GET    | `/public/people/{person_id}` | Get one person by ID                                                                  |
| POST   | `/public/people/merge`       | Merge a list of person IDs into the first ID in the list                              |
| POST   | `/public/people/split`       | Move specified contacts off a person and onto a newly created person                  |

RevyOps doesn't currently expose dedicated MCP tools for people. Use the [`query_entity`](/mcp/tools) MCP tool against the `contact` entity, or the REST endpoints above, to work with people programmatically.
