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

# Overview

> Log and manage interactions — calls, letters, meetings, sms, emails, and donations — against a contact.

## Interaction object

An interaction represents a logged touchpoint with a contact: a phone call, a letter, a meeting, an SMS, an email, or a donation record. Interactions belong to a single contact and to the space (API key) that created them.

```json theme={"system"}
{
  "id": 501,
  "title": "Called about renewal",
  "comments": "Left a voicemail, will follow up next week.",
  "type": "call",
  "sub_type": "outgoing",
  "contact_id": 42,
  "user_id": 17,
  "date_of_event": "2026-07-28T10:00:00Z",
  "tags": [
    { "id": 3, "name": "renewal", "color": "#FF5733" }
  ],
  "created_at": "2026-07-30T18:00:00Z"
}
```

## Key fields

| Field              | Meaning                                                                                                                      |
| :----------------- | :--------------------------------------------------------------------------------------------------------------------------- |
| `type`             | One of `email`, `letter`, `call`, `meeting`, `sms`, `donation`.                                                              |
| `sub_type`         | `incoming` or `outgoing`, when relevant to the type.                                                                         |
| `date_of_event`    | When the interaction actually took place — may differ from `created_at` (e.g. logging today a call that happened yesterday). |
| `only_super_admin` | If `true`, the interaction is only visible to users whose role has the private-interactions permission.                      |
| `user_id`          | Always the identity associated with your API key — it is derived server-side and cannot be set from the request body.        |

## Tags

Interactions can be tagged for categorization. To attach an existing tag, pass its `id`. To create a new tag inline while creating or updating an interaction, omit `id` and provide a `name` (and optionally a `color`). Tags can also be managed directly — see the endpoints below.

## Updating interactions

`PATCH /v1/contacts/{contactId}/interactions/{interactionId}` behaves like a full replace (PUT): any field omitted from the request — including `tags` — is cleared. Always resend the full interaction if you only intend to change one field.

## Endpoints

| What you need                 | Endpoint                                                       |
| :---------------------------- | :------------------------------------------------------------- |
| Log an interaction            | `POST /v1/contacts/{contactId}/interactions`                   |
| List a contact's interactions | `GET /v1/contacts/{contactId}/interactions`                    |
| Update an interaction         | `PATCH /v1/contacts/{contactId}/interactions/{interactionId}`  |
| Delete an interaction         | `DELETE /v1/contacts/{contactId}/interactions/{interactionId}` |
| List tags                     | `GET /v1/interactions/tags`                                    |
| Create a tag                  | `POST /v1/interactions/tags`                                   |
| Update a tag                  | `PATCH /v1/interactions/tags/{tagId}`                          |
| Delete a tag                  | `DELETE /v1/interactions/tags/{tagId}`                         |
