# Contacts

| Command | Purpose |
|---|---|
| `vatio contacts export ID [--out FILE]` | Everything kept about one contact, as JSON; `--out` writes it to a file |
| `vatio contacts delete ID [--yes]` | Delete the contact and everything about them |

For a person's access, portability and erasure requests. `ID` is the
contact's id, as the inbox and webhooks show it. Both commands are recorded in
the workspace's **Activity**. The inbox no longer lists or exports contacts: a
person's data is in the contact pane beside their conversation, and in these two
commands. See [Retention and deletion](https://vatio.ai/docs/data) for what each one covers.

The [MCP](https://vatio.ai/docs/mcp) has the same two as `export_contact` and `erase_contact`. The
data an export returns passes through that chat, so prefer the CLI when the
person's data should not.

## Export

```sh
vatio contacts export 4211 --out ana.json
```

Without `--out` it prints the JSON. It looks like this:

```json
{
  "exported_at": "2026-10-09T21:14:03Z",
  "workspace": "acme",
  "contact": {
    "id": 4211,
    "environment": "live",
    "name": "Ana Pérez",
    "email": "ana@example.com",
    "phone_number": "+56911112222",
    "opted_out_at": null,
    "created_at": "2026-09-30T12:01:44Z",
    "channels": [{ "channel": "whatsapp", "handle": "+56 9 1111 2222" }],
    "memories": [{ "kind": "note", "body": "Prefers mornings", "created_at": "2026-10-01T09:12:00Z" }]
  },
  "conversations": [
    {
      "id": 9120,
      "agent": "support",
      "source": "whatsapp",
      "environment": "live",
      "started_at": "2026-09-30T12:01:44Z",
      "messages": [
        { "role": "user", "from_a_person": false, "content": "Hi", "attachments": [], "sent_at": "2026-09-30T12:01:44Z" }
      ]
    }
  ]
}
```

`from_a_person` is `true` on a reply somebody wrote from the inbox or the
channel's own app instead of the agent.

## Delete

```sh
vatio contacts delete 4211
```

It prints what it is about to delete and asks you to type the id to confirm.
`--yes` skips the question, and a non-interactive run needs it. When it is
done it reports the contact id and how many chats and messages it erased.

There is no undo. A contact that does not exist, or belongs to another
workspace, is not found.
