# Activities

CRM activity management: calls, meetings, tasks, emails. Activities are linked to deals, leads, contacts and other entities.

Bitrix24 API: `crm.activity.*`
Scope: `crm`

## Operations

- [Create activity](./activities/create.md) — `POST /v1/activities`
- [List activities](./activities/list.md) — `GET /v1/activities`
- [Get activity](./activities/get.md) — `GET /v1/activities/:id`
- [Update activity](./activities/update.md) — `PATCH /v1/activities/:id`
- [Delete activity](./activities/delete.md) — `DELETE /v1/activities/:id`
- [Search activities](./activities/search.md) — `POST /v1/activities/search`
- [Activity fields](./activities/fields.md) — `GET /v1/activities/fields`
- [Aggregate activities](./activities/aggregate.md) — `POST /v1/activities/aggregate`
- [Complete an activity](./activities/complete.md) — `POST /v1/activities/:id/complete`
- [Postpone an activity](./activities/postpone.md) — `POST /v1/activities/:id/postpone`
- [Set a deadline](./activities/deadline.md) — `POST /v1/activities/:id/deadline`
- [Download an activity file](./activities/file-download.md) — `GET /v1/activities/:activityId/files/:fileId/download`
- [Activities of a CRM record](./activities/owner-list.md) — `GET /v1/deals/:id/activities`
- [Create an activity for a CRM record](./activities/owner-create.md) — `POST /v1/deals/:id/activities`

## Key fields

| Field | Description |
|------|---------|
| `ownerTypeId` | Type of the CRM record the activity belongs to: `1` — lead, `2` — deal, `3` — contact, `4` — company |
| `ownerId` | CRM record ID. The source depends on `ownerTypeId`: [`GET /v1/leads`](/docs/entities/leads), [`GET /v1/deals`](/docs/entities/deals), [`GET /v1/contacts`](/docs/entities/contacts), [`GET /v1/companies`](/docs/entities/companies) |
| `typeId` | Activity type: `1` — meeting, `2` — call, `3` — task, `4` — email, `5` — action, `6` — custom action. Set only on creation |
| `subject` | Activity subject |
| `communications` | The activity's phone or email and the CRM entity it belongs to: `entityTypeId` + `entityId` |
| `responsibleId` | Responsible employee. Source: [`GET /v1/users`](/docs/entities/users) |
| `providerId` | Activity provider ID: `CRM_TODO` — to-do, `CRM_EMAIL` — email, `IMOPENLINES_SESSION` — open channel dialog, `TASKS` — task, `CALL_LIST` — [call list](/docs/entities/call-lists) activity |
| `completed` | Whether the activity is completed |
| `deadline` | Deadline |

Full list of fields — [`GET /v1/activities/fields`](./activities/fields.md).

## Before you start

1. **An activity belongs to a CRM record.** The binding is set by the `ownerTypeId` + `ownerId` pair or by `entityTypeId` + `entityId` inside `communications`. One activity can appear in the timeline of several CRM entities at once — see [Activity bindings](./activities/bindings.md).
2. **Creation requires three fields:** `subject`, `typeId`, `communications`. The `ownerTypeId` + `ownerId` pair is required if the binding is not set inside `communications`.
3. **The deadline is set after creation.** On creation, `deadline` is calculated from `startTime` and `endTime`, and a passed value is not applied. To change the deadline, use [`POST /v1/activities/:id/deadline`](./activities/deadline.md). For activities without a deadline, `deadline` is returned as the placeholder value `9999-12-30T21:00:00.000Z`.
4. **To-dos are created in a separate section.** Create them through [CRM to-dos](./activities/todos.md), and read and list them here with the `providerId=CRM_TODO` filter.
5. **Activities are also available under a CRM record.** You can [read](./activities/owner-list.md) and [create](./activities/owner-create.md) them directly under a deal, lead, contact or company. `/v1/activities` remains the main entry point for filters and sorting.
6. **An activity with a custom layout in the timeline** — icon, header, blocks, buttons — is created through [Configurable activities](./activities/configurable.md).
7. **Call transcript.** The AI transcript of a client call — a Call-type activity — is returned by [CRM call transcripts](./activities/transcript.md).

## Typical scenario

1. Find the CRM record the activity belongs to: [`GET /v1/deals`](/docs/entities/deals) / [`GET /v1/contacts`](/docs/entities/contacts).
2. View its activities: [`GET /v1/activities?filter[ownerTypeId]=2&filter[ownerId]=741`](./activities/list.md).
3. Create a call or meeting: [`POST /v1/activities`](./activities/create.md) with `ownerTypeId`, `ownerId`, `typeId`, `subject` and `communications`.
4. Change the deadline: [`POST /v1/activities/:id/deadline`](./activities/deadline.md).
5. Mark the activity as completed: [`POST /v1/activities/:id/complete`](./activities/complete.md).

## Limits

| Limit | Value |
|-------|----------|
| Maximum records per request | 5000 (`limit ≤ 5000`) |
| Automatic pagination | enabled when `limit > 50` |
| `offset` on large result sets | `limit ≤ 500` is recommended when `offset ≥ 2500` |
| Relations from `include` | loaded if the response contains no more than 200 records |
| Batch requests | up to 50 operations in [Batch](/docs/batch) |
| Request rate | shared across the Vibecode API — see [Limits and optimization](/docs/optimization) |

## See also

- [Activity bindings](/docs/entities/activities/bindings)
- [Configurable activities](/docs/entities/activities/configurable)
- [CRM to-dos](/docs/entities/activities/todos)
- [CRM call transcripts](/docs/entities/activities/transcript)
- [CRM Timeline](/docs/timeline-logs)
- [Entity API](/docs/entity-api)
- [Filtering syntax](/docs/filtering)
- [Batch](/docs/batch)
