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

# Contacts

> Cross-channel identity management for message senders.

OpenBunny maintains a contact system that links identities across messaging channels into unified profiles.

## How it works

When the agent processes a conversation, it identifies the sender and either matches them to an existing contact or creates a new one. Contacts can have multiple identities across different channels.

## Identities

Each contact can have identities from any channel:

| Channel  | Identity format             |
| -------- | --------------------------- |
| Slack    | `slack:U0123ABC`            |
| WhatsApp | `whatsapp:15551234567`      |
| iMessage | `imessage:user@example.com` |
| Telegram | `telegram:123456789`        |
| Email    | `email:user@example.com`    |

## Contact profiles

Contacts are stored with:

* **Name** and **slug** (URL-friendly identifier)
* **Organization** and **role**
* **Email** and **phone**
* **Identity list** (channel-specific IDs)
* **Profile notes** (markdown, stored in `data/contacts/`)

## Agent tools

The LLM agent can manage contacts during conversation processing:

* **`lookup_contact`** — search by name or identity
* **`upsert_contact`** — create or update a contact profile
* **`link_contact_identity`** — add a new channel identity to an existing contact
* **`merge_contacts`** — consolidate two duplicate contacts into one

## API

```bash theme={null}
# List all contacts
curl http://localhost:3100/contacts

# Get a specific contact
curl http://localhost:3100/contacts/john-doe

# Create a contact
curl -X POST http://localhost:3100/contacts \
  -H "Content-Type: application/json" \
  -d '{"name": "John Doe", "email": "john@example.com"}'
```
