# Addresses

Addresses of CRM entities: registered, actual, postal, delivery. Most often linked to a requisite, but the same endpoint works for contacts, companies and leads. An address has no separate numeric `id`: a specific address is identified by three values — address type `typeId`, owner type `entityTypeId` and owner ID `entityId`.

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

## Operations

- [Create address](./addresses/create.md) — `POST /v1/addresses`
- [List addresses](./addresses/list.md) — `GET /v1/addresses`
- [Get address](./addresses/get.md) — `GET /v1/addresses/:typeId/:entityTypeId/:entityId`
- [Update address](./addresses/update.md) — `PATCH /v1/addresses/:typeId/:entityTypeId/:entityId`
- [Delete address](./addresses/delete.md) — `DELETE /v1/addresses/:typeId/:entityTypeId/:entityId`
- [Search addresses](./addresses/search.md) — `POST /v1/addresses/search`
- [Address fields](./addresses/fields.md) — `GET /v1/addresses/fields`

## Key fields

| Field | Description |
|------|---------|
| `typeId` | Address type: `1` registered, `4` primary, `6` postal, `8` delivery, `9` actual, `11` beneficiary, `13` warehouse |
| `entityTypeId` | Owner type: `8` — requisite (also contact, company, lead) |
| `entityId` | ID of the address owner |
| `address1` | Street, building |
| `city` | City |
| `postalCode` | Postal code |

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

## What you need to know before working

1. **An address has no separate numeric `id`.** An address is identified by three values: `typeId`, `entityTypeId`, `entityId`. Get, update and delete use them in the path. Create passes them in the request body.
2. **`typeId` is the address type, `entityTypeId` is the owner type.** A single owner can have several addresses of different types (for example, `typeId: 1` registered and `typeId: 9` actual). For a requisite, `entityTypeId` equals `8`.
3. **Field names are camelCase everywhere.** List and get return `address1`, `city`, `postalCode`. The `GET /v1/addresses/fields` schema returns the same names: `typeId`, `address1`, `postalCode`. Pass those same names in `filter` and in the request body.

## Related entities

| Entity | Endpoint | Purpose |
|----------|----------|-----------|
| Requisites | `GET /v1/requisites` | The most common address owner: `entityTypeId` equals `8`, and `entityId` is the requisite `id`. |
| Requisite presets | `GET /v1/requisite-presets` | Field-set template of the owner requisite. |
| Bank details | `GET /v1/bank-details` | Bank accounts of the same requisite. |

## Typical scenario

1. Find the company requisite: [`GET /v1/requisites?filter[entityTypeId]=4&filter[entityId]=15`](./requisites/list.md).
2. Create an address on it: [`POST /v1/addresses`](./addresses/create.md) with `typeId`, `entityTypeId: 8` and the requisite `entityId`.
3. Read or update the address by the triple: [`GET /v1/addresses/:typeId/:entityTypeId/:entityId`](./addresses/get.md).

## Limits

| Limit | Value |
|-------|----------|
| Maximum records per request | 5000 (`limit ≤ 5000`) |
| Auto-pagination | enabled when `limit > 50` |
| `offset` on large result sets | `limit ≤ 500` recommended when `offset ≥ 2500` |
| Batch requests | up to 50 operations in [`POST /v1/batch`](/docs/batch) |
| Rate limit | shared across the Vibecode API — see [Limits and optimization](/docs/optimization) |

## See also

- [Entity API](/docs/entity-api)
- [Filtering syntax](/docs/filtering)
- [Batch](/docs/batch)
- [Entities index](/docs/entities-index)
