[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs-entities\u002Faddresses\u002Fsearch":3,"docs-tabs-entities\u002Faddresses\u002Fsearch":6},{"content":4,"lastmod":5},"\n## Поиск адресов\n\n`POST \u002Fv1\u002Faddresses\u002Fsearch`\n\nПоиск адресов с фильтрами и авто-пагинацией. Аналогичен `GET \u002Fv1\u002Faddresses`, но параметры передаются в теле запроса — подходит для сложных фильтров с большим количеством условий и для программной сборки запросов.\n\n## Поля запроса (body)\n\n| Параметр | Тип | По умолч. | Описание |\n|----------|-----|-----------|---------|\n| `filter` | object | — | Фильтрация по полям `GET \u002Fv1\u002Faddresses\u002Ffields`.\u003Cbr>[Синтаксис фильтрации](\u002Fdocs\u002Ffiltering). Пример: `{ \"entityTypeId\": 8, \"entityId\": 42 }` |\n| `limit` | number | `50` | Количество записей (до 5000) |\n| `offset` | number | `0` | Пропустить N записей |\n| `sort` | object | — | Сортировка: `{ \"typeId\": \"asc\" }` |\n\n## Примеры\n\n### curl — личный ключ\n\n```bash\ncurl -X POST \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Faddresses\u002Fsearch\" \\\n  -H \"X-Api-Key: YOUR_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"filter\": { \"entityTypeId\": 1, \"city\": \"Пермь\" },\n    \"limit\": 20\n  }'\n```\n\n### curl — OAuth-приложение\n\n```bash\ncurl -X POST \"https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Faddresses\u002Fsearch\" \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"filter\": { \"entityTypeId\": 1, \"city\": \"Пермь\" },\n    \"limit\": 20\n  }'\n```\n\n### JavaScript — личный ключ\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Faddresses\u002Fsearch', {\n  method: 'POST',\n  headers: {\n    'X-Api-Key': 'YOUR_API_KEY',\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({\n    filter: { entityTypeId: 1, city: 'Пермь' },\n    limit: 20,\n  }),\n})\n\nconst { success, data } = await res.json()\nconsole.log('Найдено:', data.length)\n```\n\n### JavaScript — OAuth-приложение\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.tech\u002Fv1\u002Faddresses\u002Fsearch', {\n  method: 'POST',\n  headers: {\n    'X-Api-Key': 'YOUR_APP_KEY',\n    'Authorization': 'Bearer USER_SESSION_TOKEN',\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({\n    filter: { entityTypeId: 1, city: 'Пермь' },\n    limit: 20,\n  }),\n})\n\nconst { success, data } = await res.json()\n```\n\n### Другие сценарии\n\nВсе адреса одного реквизита:\n\n```json\n{\n  \"filter\": { \"entityTypeId\": 8, \"entityId\": 42 }\n}\n```\n\nАдреса определённого типа у лида:\n\n```json\n{\n  \"filter\": { \"entityTypeId\": 1, \"entityId\": 1000755, \"typeId\": 1 }\n}\n```\n\n## Поля ответа\n\n| Поле | Тип | Описание |\n|------|-----|---------|\n| `success` | boolean | Всегда `true` при успехе |\n| `data` | array | Массив адресов (все поля — см. [Поля адреса](\u002Fdocs\u002Fentities\u002Faddresses\u002Ffields)) |\n| `meta.total` | number | Общее количество записей, соответствующих фильтру |\n| `meta.hasMore` | boolean | Есть ли ещё записи за пределами `limit` |\n\n## Пример ответа\n\n```json\n{\n  \"success\": true,\n  \"data\": [\n    {\n      \"typeId\": 1,\n      \"entityTypeId\": 1,\n      \"entityId\": 1000755,\n      \"address1\": \"Монастырская улица, 5\",\n      \"address2\": \"Вокзал Пермь I\",\n      \"city\": \"Пермь\",\n      \"postalCode\": \"614000\",\n      \"region\": \"Пермский городской округ\",\n      \"province\": \"Пермский край\",\n      \"country\": \"Россия\",\n      \"countryCode\": null,\n      \"locAddrId\": 483,\n      \"anchorTypeId\": 1,\n      \"anchorId\": 1000755\n    },\n    {\n      \"typeId\": 1,\n      \"entityTypeId\": 1,\n      \"entityId\": 1000759,\n      \"address1\": \"улица Куйбышева, 97\",\n      \"address2\": \"каб. 5\",\n      \"city\": \"Пермь\",\n      \"postalCode\": \"614045\",\n      \"region\": \"Пермский городской округ\",\n      \"province\": \"Пермский край\",\n      \"country\": \"Россия\",\n      \"countryCode\": null,\n      \"locAddrId\": 491,\n      \"anchorTypeId\": 1,\n      \"anchorId\": 1000759\n    }\n  ],\n  \"meta\": {\n    \"total\": 107,\n    \"hasMore\": true\n  }\n}\n```\n\n## Пример ответа при ошибке\n\n403 — нет скоупа:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"SCOPE_DENIED\",\n    \"message\": \"This endpoint requires 'crm' scope\"\n  }\n}\n```\n\n## Ошибки\n\n| HTTP | Код | Описание |\n|------|-----|---------|\n| 403 | `SCOPE_DENIED` | API-ключ не имеет скоупа `crm` |\n| 401 | `TOKEN_MISSING` | API-ключ не имеет настроенных токенов |\n| 400 | `INVALID_FILTER` | Ошибка в синтаксисе фильтра |\n\nПолный список общих ошибок API — [Ошибки](\u002Fdocs\u002Ferrors).\n\n## Известные особенности\n\n**Имена полей в фильтре — camelCase.** Передавайте `typeId`, `entityTypeId`, `entityId`, `city`, `postalCode`, `countryCode` — те же имена, что отдаёт схема `GET \u002Fv1\u002Faddresses\u002Ffields`.\n\n## Смотрите также\n\n- [Список адресов](\u002Fdocs\u002Fentities\u002Faddresses\u002Flist)\n- [Поля адреса](\u002Fdocs\u002Fentities\u002Faddresses\u002Ffields)\n- [Синтаксис фильтрации](\u002Fdocs\u002Ffiltering)\n- [Batch](\u002Fdocs\u002Fbatch)\n- [Лимиты и оптимизация](\u002Fdocs\u002Foptimization)\n","2026-07-14",{}]