Токен API amoCRM это единственный способ подключить к аккаунту внешний сервис: сайт на Tilda, интернет-магазин на WooCommerce, Telegram-бота на aiogram или сценарий в n8n. За несколько лет интеграций я регулярно вижу одну и ту же путаницу: клиент путает access_token из OAuth-приложения, refresh_token и долгосрочный токен, который amoCRM выдаёт прямо в настройках аккаунта без всякого OAuth-флоу. Ниже разберу, как получить именно долгосрочный токен, как его обновлять и какие ошибки чаще всего вылезают при первом запросе к API.
Зачем нужен долгосрочный токен API amoCRM
amoCRM поддерживает два сценария авторизации. Первый - публичная OAuth-интеграция, которую разработчик регистрирует в маркетплейсе и распространяет на множество аккаунтов: партнёр устанавливает виджет, проходит авторизацию через окно с кнопкой «Разрешить доступ», и обмен кодами идёт по протоколу OAuth 2.0 с access_token и refresh_token. Второй сценарий - частная интеграция для одного конкретного аккаунта, когда доступ нужен только внутри компании: например, чтобы синхронизировать заказы WooCommerce с лидами amoCRM или передавать статусы доставки СДЭК в карточку сделки. Для этого сценария amoCRM даёт возможность сгенерировать долгосрочный токен прямо в карточке интеграции, без редиректов и обмена кодами. Именно такой способ я использую в 90% проектов, где сайт или бот работает с одним аккаунтом amoCRM.
Токен доступа amoCRM: чем отличается от OAuth 2.0
Разница принципиальная, и от неё зависит, какой путь выбрать.
| Критерий | OAuth 2.0 | Долгосрочный токен |
|---|---|---|
| Для чего | Публичные виджеты на много аккаунтов | Частная интеграция для одного аккаунта |
| Срок действия | access_token - 24 часа, refresh_token - 3 месяца | 1 год |
| Обновление | Автоматическое по refresh_token | Ручная генерация нового токена |
| Нужен redirect_uri | Да, для обмена кода на токен | Нет |
| Сложность внедрения | Выше, нужен сервер для обработки колбэков | Ниже, токен копируется вручную |
Если задача - разовая интеграция с сайтом на Tilda или сценарием в n8n, долгосрочный токен закрывает её без лишней инфраструктуры. Если планируется публичный виджет для установки другими пользователями, без OAuth не обойтись.
Где создать интеграцию для получения токена amoCRM
Токен привязан к конкретной интеграции, поэтому сначала её нужно создать.
- Заходим в аккаунт amoCRM под пользователем с правами администратора.
- Открываем раздел «Настройки» и переходим в «Интеграции».
- Нажимаем «Создать интеграцию» и указываем название - удобно называть по проекту, например «Сайт Tilda» или «Синхронизация WooCommerce».
- В поле redirect_uri для частной интеграции можно указать любой валидный URL, даже заглушку вида
https://example.com- для долгосрочного токена он не участвует в обмене. - Сохраняем интеграцию и открываем её карточку.
В карточке уже видны client_id и client_secret - они понадобятся, если позже решите переключиться на OAuth, но для долгосрочного токена достаточно самой карточки интеграции.
Как получить долгосрочный токен API amoCRM пошагово
Внутри карточки интеграции есть блок «Ключи и коды доступа». В нём кнопка для генерации долгосрочного токена.
- Нажимаем «Генерировать токен».
- amoCRM показывает JWT-строку один раз - её нужно скопировать сразу, повторно посмотреть тот же токен через интерфейс не получится.
- Сохраняем токен в переменных окружения на сервере (
.env, секреты хостинга, секреты n8n), а не в коде репозитория и не в JS на клиенте - токен даёт полный доступ к данным аккаунта, включая контакты и сделки. - Проверяем токен тестовым запросом к любому эндпоинту, например к списку сделок.
Одна деталь, на которой спотыкаются чаще всего: если нажать «Генерировать токен» повторно, старый токен сразу становится недействительным. Если он уже вшит в рабочий скрипт на проде, интеграция отвалится в момент генерации нового - обновляйте значение везде синхронно.
Бесплатный материал
🎁 Полезный скрипт в подарок
Подпишитесь на Telegram - пришлю готовый скрипт по этой теме.
Без спама. Отписка в 1 клик.
При работе с формами на Tilda я обычно завожу отдельный серверный обработчик (на Node.js или PHP), который получает данные из формы и создаёт сделку в amoCRM через API - сам токен туда попадает только на сервере, а фронтенд Tilda его не видит вообще. Такой же подход применяю для интеграций amoCRM с WooCommerce и приёма оплат через Т‑Банк: платёжный вебхук подтверждает оплату, и уже серверный код с токеном создаёт или обновляет сделку. Если нужна такая интеграция под ключ, можно посмотреть, что я делаю в рамках разработки веб-сервисов и автоматизации бизнес-процессов.
Как использовать токен в запросах к API amoCRM
Токен передаётся в заголовке Authorization с префиксом Bearer. Домен запроса - поддомен вашего аккаунта, например yourcompany.amocrm.ru для российского контура или yourcompany.amocrm.com для международного.
curl -X GET "https://yourcompany.amocrm.ru/api/v4/leads" \
-H "Authorization: Bearer ДОЛГОСРОЧНЫЙ_ТОКЕН" \
-H "Content-Type: application/json"
На Python это чаще всего пара строк через requests:
import requests
token = "ДОЛГОСРОЧНЫЙ_ТОКЕН"
domain = "yourcompany.amocrm.ru"
response = requests.get(
f"https://{domain}/api/v4/leads",
headers={"Authorization": f"Bearer {token}"}
)
print(response.status_code, response.json())
Тот же принцип использую в aiogram-ботах: бот получает команду от менеджера в Telegram, дергает API amoCRM с долгосрочным токеном и присылает в чат карточку сделки или статус доставки СДЭК. В сценариях n8n токен обычно кладут в Credentials узла HTTP Request, и дальше он подставляется автоматически во все шаги цепочки без повторного ввода.
Срок действия и обновление долгосрочного токена amoCRM
Долгосрочный токен живёт 1 год с момента генерации, и в отличие от OAuth-связки у него нет refresh_token - продлить действующий токен нельзя, можно только сгенерировать новый в той же карточке интеграции. Я обычно ставлю в календарь напоминание за 2-3 недели до истечения года по каждому клиентскому проекту, чтобы обновить токен без простоя в интеграции. Если проект работает через n8n, удобно завести отдельный workflow-триггер с датой на 11 месяцев вперёд - он присылает уведомление, что пора зайти в amoCRM и перегенерировать токен, а заодно обновить значение в credentials.
Если интеграция обслуживает несколько сервисов сразу (сайт, бот, скрипт синхронизации с СДЭК), при обновлении токена придётся поменять значение везде одновременно - иначе часть сервисов начнёт получать 401 Unauthorized сразу после генерации нового токена.
Частые ошибки при авторизации по токену amoCRM
- 401 Unauthorized сразу после генерации нового токена - где-то в коде или в переменных окружения осталось старое значение, проверяйте все места, где токен захардкожен или сохранён в секретах.
- 401 при обращении к правильному домену - часто путают
.amocrm.ruи.amocrm.com, особенно если аккаунт когда-то переносили между регионами. - 403 Forbidden на конкретном эндпоинте - у пользователя, от имени которого создавалась интеграция, не хватает прав на этот раздел (например, нет доступа к разделу «Задачи»), это настраивается в правах пользователя, а не в самой интеграции.
- Токен «истёк» раньше года - обычно это не сам токен, а кто-то в команде повторно нажал «Генерировать токен» в карточке интеграции, из-за чего старое значение стало недействительным досрочно.
Если нужна готовая интеграция amoCRM с сайтом, CRM-цепочкой в n8n или ботом, а не просто консультация по токену, сделаю это в рамках отдельного проекта - от постановки задачи до тестового прогона на реальных лидах.
Частые вопросы
Сколько действует долгосрочный токен API amoCRM
Ровно 1 год с момента генерации в карточке интеграции. По истечении срока запросы начнут возвращать 401, и нужно зайти в настройки и сгенерировать новый токен вручную - автоматического продления через refresh_token для этого типа токена нет.
Можно ли использовать долгосрочный токен для публичного виджета
Нет, он выдаётся под конкретный аккаунт и предназначен для частных интеграций. Для виджета, который будут устанавливать разные пользователи amoCRM из маркетплейса, нужна полноценная OAuth-интеграция с client_id, client_secret и обменом кодов.
Что делать, если токен скомпрометирован
Заходите в карточку интеграции и генерируете новый токен - старый перестаёт работать в тот же момент. После этого обновите значение во всех сервисах, которые его использовали: на сервере сайта, в боте, в узлах n8n.
Почему запросы с токеном возвращают 401, хотя токен свежий
Чаще всего дело в неверном домене поддомена (перепутан .ru и .com) или в лишних пробелах при копировании токена в переменные окружения. Проверьте оба варианта тестовым запросом к простому эндпоинту вроде списка сделок.