Виджет «Мультикомпании»
для amoCRM

Создавайте связи между организациями в карточках сделок, контактов и компаний
Осуществляете глобальный поиск компаний по наименованию
Переходите в карточку компаний из прикрепленных связей
Выбирайте головную компанию в связях.
Открепляйте компании от головной компании по мере необходимости

Как установить и настроить виджет «Мультикомпании» в amoCRM

Установите виджет →

Установите виджет, нажав на кнопку выше, или перейдите в список интеграций в amoCRM, введите в строке поиска Мультикомпании от «Команда F5» и добавьте виджет.

После установки откройте настройки виджета (амоМаркет → Установленные → Мультикомпании ) и выберите пользователей, которые могут его использовать. Если пользователь не выбран, он не увидит интерфейсов виджета, это касается и администраторов.

Далее нажмите «Сохранить». Виджет установлен.

Как в amoCRM прикрепить несколько компаний в одну

Виджет работает в карточках сделки, контакта, компании во вкладке «Мультикомпании».
При переходе в любую сущность виджет ищет связи между компаниями и отображает их во вкладке.

В карточке вы можете видеть головную компанию и дочерние.
Если вы находитесь в дочерней компании или в её сделке, то она будет отображена жирным текстом.

Как прикрепить компанию к текущей

Если компания не найдена, то просто нажмите Enter, таким образом создастся новая компания и сразу прикрепится к текущей;
Во вкладке «Мультикомпания» нажмите «Добавить компанию»;
В поле введите её название, если компания существует в базе, то будет отображен список найденных, при клике на найденную компанию она будет прикреплена;
Поиск происходит в соответствии с правами пользователя в amoCRM. Если пользователь не имеет прав на просмотр компании, то она не будет показана;
При попытке прикрепить компанию, которая уже имеет связи, система запросит дальнейшее действие, в котором можно заменить старую связь на новую или отменить прикрепление;
Чтобы открепить компанию или сделать её головной, нажмите на троеточие и выберите нужный пункт меню.
1.
2.
3.
4.
5.
6.

API Для разработчиков и интеграторов

API виджета «Мультикомпании»

REST API для управления связями компаний в amoCRM из внешних систем: 1С, сайта, ERP или собственного сервиса. Все операции, доступные во вкладке «Мультикомпании», можно выполнять программно.

01 Возможности

Что можно сделать через API

API охватывает полный цикл работы с мультикомпаниями: от поиска и чтения данных до создания компаний и изменения структуры групп.

Поиск компаний

По названию, ответственному, сделке или контакту. В результатах — роль компании в группе.

GET /companies/search

Чтение данных

Карточка компании, состав группы, поля компаний и пользователи аккаунта.

GET /company, /companies

Поиск сделок и контактов

Получение id сделки или контакта по названию для последующего прикрепления.

GET /leads/search, /contacts/search

Прикрепление

Привязка компании к сделке, контакту или к главной компании группы.

POST /company/attach

Создание

Создание компании с полями, тегами и ответственным с прикреплением в одном запросе.

POST /company/create

Управление группой

Открепление компании и назначение новой главной компании группы.

POST /company/detach, /company/main

02 Авторизация

Подключение к API

Доступ к API выполняется по ключу. Ключ выпускает администратор аккаунта amoCRM в настройках виджета; другим пользователям он недоступен.

Откройте настройки виджета

Под учётной записью администратора перейдите в amoCRM: Настройки → Мультикомпании.

Выпустите ключ

В разделе API нажмите Создать ключ и сохраните его значение.

Передавайте ключ в запросах

Каждый запрос должен содержать заголовок X-Auth-Multicompanies-Token.

Управление ключом

Ключ привязан к аккаунту amoCRM и определяет, с каким аккаунтом работает API.

  • Обновить ключ — выпускает новый ключ; предыдущий перестаёт действовать сразу.
  • Удалить ключ — полностью отключает доступ к API.

Ключ даёт право изменять связи компаний в аккаунте. Храните его так же, как пароль, и не передавайте третьим лицам.

Журнал запросов

Кнопка История запросов в настройках виджета открывает журнал вызовов API за последние 30 дней.

  • Для каждого вызова: метод, код ответа, текст ошибки, IP-адрес и параметры.
  • Фильтры по методу, результату и периоду.
  • Доступен только администратору. Запросы с неверным ключом не регистрируются.

Базовый адрес

Base URLhttps://freewidgets.comf5.ru/multicompanies/api/v1

Пример запроса

Запрос · cURL
curl "https://freewidgets.comf5.ru/multicompanies/api/v1/companies?company_id=17493287" \
  -H "X-Auth-Multicompanies-Token: <ключ>"
Ответ · 200
{
  "status": true,
  "response": {
    "main_id": 17493287,
    "linked": [4926915, 29875257]
  }
}

03 Общие правила

Формат запросов и ответов

Правила ниже действуют для всех методов API.

Запросы

  • GET — параметры передаются в строке запроса. Текстовые значения кодируются в URL-формате: name=%D0%9E%D0%9E%D0%9E.
  • POST — тело в формате JSON с заголовком Content-Type: application/json. Допускается form-data.
  • entity_type принимает код или число: contacts = 1, leads = 2, companies = 3.
  • Идентификаторы и page — только целые числа. Значения вида 1.5 и 1e3 отклоняются.

Постраничная выдача

Методы поиска (/companies/search, /leads/search, /contacts/search) возвращают результат постранично.

  • page — номер страницы, от 1 до 100.
  • has_more: true — есть следующая страница, запросите page + 1. Следующая страница может оказаться пустой: amoCRM не сообщает общее число записей.
  • При поиске по названию записей на странице может быть меньше лимита: совпадения по телефону, e-mail и другим полям исключаются.

Структура ответа

Успешный ответ
{
  "status": true,
  "response": ...
}
Ошибка
{
  "status": false,
  "error": {
    "message": "Company is already attached",
    "code": 422
  }
}
Ошибка валидации
{
  "status": false,
  "error": {
    "message": {"company_id": ["Поле не является числом"]},
    "code": 400
  }
}
Ответ постраничного поиска
{
  "status": true,
  "response": {
    "items": [...],
    "page": 1,
    "has_more": true
  }
}

Коды ответов

КодЗначение
200Запрос выполнен успешно
400Неверные или отсутствующие параметры, некорректный JSON (Invalid JSON: ...)
401Ключ не передан (Api key required)
403Неверный ключ (Invalid api key) или виджет отключён (Widget deactivated)
404Компания, сделка или контакт не найдены в аккаунте (Company not found: ..., Lead not found: ..., Contact not found: ...)
413Размер тела запроса превышает 1 МБ
422Операция нарушает правила связей, переданы недопустимые значения полей или amoCRM отклонил данные (amoCRM rejected data)
429Превышен лимит запросов. Повторите запрос через время, указанное в заголовке Retry-After
500Внутренняя ошибка сервиса (Internal error)
502Ошибка на стороне amoCRM. amoCRM authorization failed, reinstall the widget — нарушена авторизация виджета, требуется переустановка. amoCRM request failed — прочие ошибки amoCRM

04 Модель данных

Группы компаний

Группа объединяет главную компанию и прикреплённые к ней дочерние. Иерархия одноуровневая.

mainООО «Ромашка»
linkedИП Иванов
linkedООО «Лютик»

Правила группы

  • Роль компании: main — главная, linked — дочерняя, none — вне группы.
  • Компания может состоять только в одной группе.
  • К дочерней компании нельзя прикрепить другую компанию.
Группа в ответе API
{
  "main_id": 17493287,
  "linked": [4926915, 29875257]
}

// компания вне группы
{"main_id": null, "linked": []}
С параметром with=names
{
  "main_id": 17493287,
  "linked": [4926915, 29875257],
  "companies": [
    {
      "id": 17493287,
      "name": "ООО «Ромашка»",
      "role": "main"
    },
    {"id": 4926915, "name": "ИП Иванов", "role": "linked"},
    {"id": 29875257, "name": null, "role": "linked"}
  ]
}
Параметр with=names добавляет в ответ названия компаний. Поддерживается методами GET /companies, attach, create, detach, main и выполняет один дополнительный запрос к amoCRM. Значение name: null означает, что компания удалена в amoCRM, но ещё числится в группе.

05 Справочник

Методы API

Выберите метод в списке, чтобы перейти к описанию параметров, примерам запроса и ответа, а также возможным ошибкам.

МетодАдресНазначение
GET/companies/searchПоиск компаний
GET/companiesСостав группы компании
GET/companyКарточка компании
GET/fieldsПоля компаний аккаунта
GET/usersПользователи аккаунта
GET/leads/searchПоиск сделок по названию
GET/contacts/searchПоиск контактов по имени
POST/company/attachПрикрепление компании
POST/company/createСоздание и прикрепление компании
POST/company/detachОткрепление компании
POST/company/mainНазначение главной компании

Чтение данных

Не изменяют данные в amoCRM
GET/companiesСостав группы компании

Возвращает группу, в которую входит указанная компания.

Параметры

ПараметрТипОписание
company_idобяз.intЛюбая компания группы
withstringЗначение names добавляет названия компаний

Пример ответа

Ответ · 200
{
  "status": true,
  "response": {
    "main_id": 17493287,
    "linked": [4926915, 29875257]
  }
}
GET/companyКарточка компании

Возвращает данные компании: поля, теги, связанные сделки и контакты, роль в группе.

Параметры

ПараметрТипОписание
company_idобяз.intИдентификатор компании

Пример ответа

Ответ · 200
{
  "status": true,
  "response": {
    "id": 29875257,
    "name": "ООО «Ромашка»",
    "responsible_user_id": 2320770,
    "created_at": 1701094831,
    "updated_at": 1729500000,
    "tags": ["api"],
    "custom_fields": [
      {
        "field_id": 101,
        "field_code": "PHONE",
        "field_name": "Телефон",
        "field_type": "multitext",
        "values": [
          {
            "value": "+70000000000",
            "enum_id": 1,
            "enum_code": "WORK"
          }
        ]
      },
      {
        "field_id": 205,
        "field_code": null,
        "field_name": "ИНН",
        "field_type": "text",
        "values": [{"value": "7700000000"}]
      }
    ],
    "leads": [123456, 123457],
    "leads_has_more": false,
    "contacts": [555],
    "contacts_has_more": false,
    "group": {"role": "linked", "main_id": 17493287}
  }
}

Поля ответа

  • custom_fields — в том же формате, который принимает метод create.
  • leads, contacts — первые 50 идентификаторов. *_has_more: true означает, что связей больше.

Ошибки

404 Company not found: <id> — компания не найдена.

GET/fieldsПоля компаний аккаунта

Возвращает поля карточки компании, доступные в аккаунте. Используйте этот метод, чтобы определить, какие поля можно передать в custom_fields при создании компании.

Пример ответа

Ответ · 200
{
  "status": true,
  "response": [
    {
      "id": 101,
      "name": "Телефон",
      "code": "PHONE",
      "type": "multitext",
      "is_api_only": false,
      "enums": [
        {"id": 1, "value": "WORK"},
        {"id": 2, "value": "MOB"}
      ]
    },
    {
      "id": 310,
      "name": "Отрасль",
      "code": null,
      "type": "select",
      "is_api_only": false,
      "enums": [
        {"id": 11, "value": "Производство"},
        {"id": 12, "value": "Торговля"}
      ]
    }
  ]
}
enums — варианты значений списка. Идентификатор варианта передаётся в enum_id, текст — в value.
GET/usersПользователи аккаунта

Возвращает пользователей аккаунта amoCRM. Идентификатор пользователя передаётся в параметре responsible_user_id.

Пример ответа

Ответ · 200
{
  "status": true,
  "response": [
    {
      "id": 2320770,
      "name": "Иван Петров",
      "email": "ivan@example.com",
      "is_active": true,
      "is_admin": false
    }
  ]
}
GET/leads/search · /contacts/searchПоиск сделок и контактов

Возвращают сделки по названию или контакты по имени. Применяются для получения entity_id перед прикреплением компании.

Параметры

ПараметрТипОписание
nameобяз.stringЧасть названия сделки или имени контакта, не менее 3 символов
pageintНомер страницы. По умолчанию 1

Элемент выдачи

items[ ]
{
  "id": 123456,
  "name": "Поставка оборудования",
  "responsible_user_id": 2320770,
  "created_at": 1701094831,
  "pipeline_id": 7,
  "status_id": 142,
  "price": 150000
}
Ответ возвращается постранично (items, page, has_more). Поля pipeline_id, status_id, price присутствуют только у сделок.

Изменение связей

Выполняются строго последовательно
Для изменяющих методов передавайте тело запроса в JSON с заголовком Content-Type: application/json. Одновременно для аккаунта выполняется только одна операция изменения.
POST/company/attachПрикрепление компании

Прикрепляет компанию к сделке, контакту или к главной компании группы.

Параметры

ПараметрТипОписание
company_idобяз.intПрикрепляемая компания
entity_typeобяз.string | intleads, contacts или companies
entity_idобяз.intСделка, контакт или главная компания

Результат

  • leads, contacts — компания прикрепляется к сделке или контакту в amoCRM. Ответ: {"status": true, "response": []}.
  • companies — компания company_id становится дочерней для entity_id. Ответ содержит состав группы после изменения.
Если company_id является главной компанией с дочерними, а entity_id не входит ни в одну группу, дочерней становится entity_id.

Пример

Запрос
{
  "company_id": 29875277,
  "entity_type": "companies",
  "entity_id": 17493287
}
Ответ · 200
{
  "status": true,
  "response": {
    "main_id": 17493287,
    "linked": [4926915, 29875257, 29875277]
  }
}

Проверки

Перед прикреплением сервис проверяет наличие записей в amoCRM: для companies — обеих компаний, для leads и contacts — сделки или контакта. При отсутствии записи возвращается 404 Company not found, Lead not found или Contact not found.

Ошибки 422

СообщениеПричина
Company is already attachedКомпания уже прикреплена к этой сделке, контакту или группе
Same companycompany_id и entity_id указывают на одну компанию
Company is already linkedКомпания уже является дочерней в другой группе
Main company is linked to another companyentity_id является дочерней компанией
Company is mainОбе компании являются главными в своих группах
Company not attachedНе удалось сохранить связь
POST/company/createСоздание и прикрепление компании

Создаёт компанию с указанными полями и прикрепляет её к сделке, контакту или главной компании в рамках одного запроса.

Параметры

ПараметрТипОписание
nameобяз.stringНазвание, до 255 символов
entity_typeобяз.string | intАналогично методу attach
entity_idобяз.intАналогично методу attach
responsible_user_idintОтветственный пользователь
tagsstring[]Теги, до 50
custom_fieldsarrayЗначения полей, до 100
ignore_missing_fieldsboolПропускать поля, отсутствующие в аккаунте, вместо возврата ошибки. По умолчанию false

Элемент custom_fields

Каждый элемент — объект, в котором указывается ровно один идентификатор поля и хотя бы одно значение.

Идентификатор поля
field_idИдентификатор поля
field_codeКод поля: PHONE, EMAIL, WEB, ADDRESS. Регистр не учитывается
field_nameНазвание поля в amoCRM. Регистр не учитывается
Значение
valueОдно значение: текст, число, дата (Unix time или строка), true/false для флага
valuesНесколько значений: для мультисписка; для телефона и e-mail — [{"value": "...", "enum_code": "WORK"}]
enum_idИдентификатор варианта списка или массив идентификаторов для мультисписка
enum_codeТип телефона или e-mail для всех значений: WORK, MOB, HOME, PRIV, OTHER
Для полей-списков вместо enum_id можно передать текст варианта в value. Список полей и вариантов возвращает метод GET /fields.

Пример

Запрос
{
  "name": "ООО «Ромашка»",
  "entity_type": "leads",
  "entity_id": 123456,
  "responsible_user_id": 2320770,
  "tags": ["api"],
  "custom_fields": [
    {
      "field_code": "PHONE",
      "values": [
        {"value": "+70000000000", "enum_code": "WORK"}
      ]
    },
    {
      "field_code": "EMAIL",
      "value": "info@example.com",
      "enum_code": "WORK"
    },
    {"field_name": "ИНН", "value": "7700000000"},
    {"field_name": "Отрасль", "value": "Производство"}
  ],
  "ignore_missing_fields": true
}
Ответ · 200
{
  "status": true,
  "response": {
    "company_id": 31000001,
    "skipped_fields": [
      {"index": 2, "field": "ИНН", "reason": "not_found"}
    ]
  }
}
  • skipped_fields — поля, отсутствующие в аккаунте; возвращается только при ignore_missing_fields: true. index — позиция элемента в custom_fields.
  • При entity_type: companies ответ дополнительно содержит состав группы (main_id, linked).

Валидация запроса

До обращения к amoCRM запрос проверяется по правилам ниже. При нарушении возвращается 400; ключ ошибки указывает на элемент, например custom_fields.2.value.

  • Тег — непустая строка до 255 символов.
  • Элемент custom_fields содержит ровно один из ключей field_id, field_code, field_name и хотя бы один из value, values, enum_id. Другие ключи не допускаются.
  • value — строка до 10 000 символов, число или true/false.
  • values — массив из 1–50 значений или объектов {value, enum_code}.
  • enum_id — идентификатор или массив до 50 идентификаторов.
  • ignore_missing_fields — true/false или 1/0.
Ответ · 400
{
  "status": false,
  "error": {
    "message": {
      "custom_fields.0": [
        "Укажите одно из: field_id, field_code, field_name"
      ],
      "tags.1": ["Тег должен быть непустой строкой"]
    },
    "code": 400
  }
}

Ошибки

КодСообщениеПричина
422Custom field not found: ...Поле отсутствует в аккаунте, ignore_missing_fields не включён
422Invalid value for field ...Значение не соответствует типу поля: нет такого варианта списка, не число и т. п.
422Value required for field ...Для поля не передано значение
404Company not found: <id>При entity_type: companies главная компания не найдена. Проверка выполняется до создания — компания не создаётся
404/422/429/502... (company <id> created)Компания создана, но прикрепить её не удалось. Идентификатор созданной компании указан в сообщении
502Company not createdamoCRM не создал компанию
POST/company/detachОткрепление компании

Исключает дочернюю компанию из группы либо открепляет компанию от сделки или контакта.

Параметры

ПараметрТипОписание
company_idобяз.intИдентификатор компании
entity_typestring | intcompanies (по умолчанию), leads или contacts
entity_idintСделка или контакт. Обязателен для leads и contacts

Результат

  • Без entity_type или с companies — дочерняя компания выходит из группы. Ответ: {"main_id": null, "linked": []}.
  • leads, contacts — компания открепляется от сделки или контакта. Ответ: {"status": true, "response": []}.

Ошибки

КодСообщениеПричина
422Company is not in groupКомпания не входит в группу
422Company is main, make another company main firstГлавную компанию открепить нельзя. Сначала назначьте главной другую компанию
422Company is not attachedКомпания не прикреплена к указанной сделке или контакту
422Company not detachedНе удалось открепить компанию
404Lead / Contact not foundСделка или контакт не найдены
POST/company/mainНазначение главной компании

Назначает дочернюю компанию главной в её группе. Прежняя главная компания становится дочерней.

Параметры

ПараметрТипОписание
company_idобяз.intДочерняя компания

Пример ответа

Ответ · 200
{
  "status": true,
  "response": {
    "main_id": 29875257,
    "linked": [4926915, 17493287]
  }
}

Ошибки

КодСообщениеПричина
422Company is already mainКомпания уже является главной
422Company is not in groupКомпания не входит в группу
422Main company has not changedНе удалось сменить главную компанию

06 Ограничения

Лимиты и условия работы

При превышении лимита API возвращает код 429 и заголовок Retry-After — количество секунд до повторного запроса.

3запроса / сек

Частота вызовов API

Не более 3 вызовов в секунду на аккаунт.

1операция

Изменения последовательно

Методы attach, create, detach, main выполняются по одному. Параллельный вызов получит 429 Another change for this account is in progress.

7запросов / сек

Лимит amoCRM

Общий для всех интеграций аккаунта. Не отправляйте запросы параллельно. Если лимит amoCRM исчерпан — 429 amoCRM rate limit, retry later.

0–3запроса

Нагрузка на amoCRM

Столько запросов в amoCRM выполняет один вызов API. Максимум — поиск по lead_id + contact_id и прикрепление к сделке или контакту; with=names добавляет один запрос. Поля и пользователи кэшируются.

1МБ

Размер запроса

Максимальный размер тела запроса. Вложенность JSON — не более 8 уровней.

20ошибок / 10 мин

Защита от подбора ключа

После 20 запросов с неверным ключом IP-адрес блокируется до окончания 10-минутного интервала.

API доступен, пока виджет «Мультикомпании» активен и оплачен.
Сложности с настройкой?
Видео об основных возможностях виджета и его настройках.
Стоимость виджета

Данный виджет доступен бесплатно в рамках "Бонусной программы"

Решения для бизнеса, которые ежедневно используют более 9000 компаний
  • Делегируйте общение с клиентами и автоматизацию в amoCRM ИИ-агенту
  • Ускорьте работу с документами в amoCRM в 15 раз. Создавайте любой документ в amoCRM в один клик
  • Автоматическое распределение заявок в amoCRM, продавайте быстрее конкурентов
  • Звоните тем, кто открыл письмо с КП
    и продавайте прямо сейчас: виджет автоматизирует почту в amoCRM
  • 21 виджет: запрет сделок без задач, быстрый поиск полях, фильтр ленты, запрет переноса задач...
  • Поиск дублирующихся контактов и компаний по любым полям с возможностью объединения
  • Отправляйте информацию из amoCRM исполнителям в Телеграм, не добавляя их в CRM
  • Храните все файлы клиентов в облаке GoogleDrive, не занимая место в amoCRM
  • Выгружайте все из amoCRM и синхронизируйте, создавайте сводные данные и графики.
Штаб-квартира «Команды F5»
Лучшие кейсы автоматизаций, новости о выходе новых виджетов и обновлениях действующих.
Подписаться в Telegram