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

# talkvalue path person update

> Update names, emails, phones, job, social URLs, or company assignment for a person.

Patch any combination of fields on a person record. Only the flags you pass are written. Omitted fields stay untouched. Pass `--remove-company` to detach the current company. Pass `--company-id` or `--company-name` to reassign.

## Synopsis

```bash theme={null}
talkvalue path person update <id> [options]
```

## Arguments

| Argument | Type    | Description          |
| -------- | ------- | -------------------- |
| `<id>`   | integer | Person ID to update. |

## Options

| Flag                      | Type                | Description                                                                                         |
| ------------------------- | ------------------- | --------------------------------------------------------------------------------------------------- |
| `--first-name <name>`     | string              | Replace the first name.                                                                             |
| `--last-name <name>`      | string              | Replace the last name.                                                                              |
| `--primary-email <email>` | string              | Set the primary email. Must already exist on the record or be added in the same call via `--email`. |
| `--email <email>`         | string (repeatable) | Replace the email list. Repeat for each address.                                                    |
| `--primary-phone <phone>` | string              | Set the primary phone.                                                                              |
| `--phone <phone>`         | string (repeatable) | Replace the phone list. Repeat for each number.                                                     |
| `--job-title <title>`     | string              | Replace the job title.                                                                              |
| `--address <address>`     | string              | Replace the address.                                                                                |
| `--avatar-url <url>`      | string              | Replace the avatar URL.                                                                             |
| `--linkedin-url <url>`    | string              | Replace the LinkedIn URL.                                                                           |
| `--x-url <url>`           | string              | Replace the X (formerly Twitter) URL.                                                               |
| `--company-name <name>`   | string              | Assign or rename the company by display name.                                                       |
| `--company-id <id>`       | integer             | Assign the company by ID.                                                                           |
| `--remove-company`        | flag                | Detach the current company. Do not combine with `--company-name` / `--company-id`.                  |

## Examples

### 1. Update a single field

```bash theme={null}
talkvalue path person update 142 --job-title "Head of Growth"
```

Prints the updated record as a table. Only `jobTitle` changes server-side.

### 2. Replace the email list and set the primary

```bash theme={null}
talkvalue path person update 142 \
  --email "alice@acme.com" \
  --email "alice.kim@personal.com" \
  --primary-email "alice@acme.com" \
  --json
```

Replaces the full email list and sets the primary in one call.

### 3. Detach a company in a script

```bash theme={null}
talkvalue path person update 142 --remove-company --json \
  | jq -e '.data.company == null'
```

`jq -e` exits non-zero if the assertion fails, so the script halts when the detach did not take effect.

## Response

The full updated record comes back, matching the shape of [`person get`](/cli/commands/path/person/get):

```jsonc theme={null}
{
  "data": {
    "id": 142,
    "name": "Alice Kim",
    "primaryEmail": { "email": "alice@acme.com", "type": "WORK", "domain": "acme.com" },
    "emails": [
      { "email": "alice@acme.com", "type": "WORK", "domain": "acme.com" }
    ],
    "primaryPhone": "+1-415-555-0199",
    "company": { "id": 88, "displayName": "Acme Inc.", "domain": "acme.com", "nameUpdatable": true },
    "jobTitle": "Head of Growth",
    "channels": [/* … */],
    "events": [/* … */],
    "mergeOperations": [],
    "createdAt": "2026-04-12T00:00:00Z"
  }
}
```

## Troubleshooting

* **`--primary-email` is not on the record.** The address you pass to `--primary-email` must already exist on the person or be added in the same call via `--email`. Otherwise the command exits non-zero without writing.
* **`--remove-company` combined with a company assignment.** Passing `--remove-company` alongside `--company-id` or `--company-name` is rejected and the command exits non-zero. Choose one.

See [Exit codes](/cli/exit-codes) for the full mapping.

## See also

* [`person list`](/cli/commands/path/person/list). Find the ID first.
* [`person get`](/cli/commands/path/person/get). Inspect the record before and after.
* [`person activity`](/cli/commands/path/person/activity). See who changed what and when.
* [`person merge`](/cli/commands/path/person/merge). Combine duplicate records.
* [People](/path/manage/people). The dashboard surface this command mirrors.
