Разработка · 6 мин чтения

Долгосрочный токен API amoCRM: как получить и обновить

Токен 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 пошагово

Внутри карточки интеграции есть блок «Ключи и коды доступа». В нём кнопка для генерации долгосрочного токена.

  1. Нажимаем «Генерировать токен».
  2. amoCRM показывает JWT-строку один раз - её нужно скопировать сразу, повторно посмотреть тот же токен через интерфейс не получится.
  3. Сохраняем токен в переменных окружения на сервере (.env, секреты хостинга, секреты n8n), а не в коде репозитория и не в JS на клиенте - токен даёт полный доступ к данным аккаунта, включая контакты и сделки.
  4. Проверяем токен тестовым запросом к любому эндпоинту, например к списку сделок.

Одна деталь, на которой спотыкаются чаще всего: если нажать «Генерировать токен» повторно, старый токен сразу становится недействительным. Если он уже вшит в рабочий скрипт на проде, интеграция отвалится в момент генерации нового - обновляйте значение везде синхронно.

Бесплатный материал

🎁 Полезный скрипт в подарок

Подпишитесь на 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) или в лишних пробелах при копировании токена в переменные окружения. Проверьте оба варианта тестовым запросом к простому эндпоинту вроде списка сделок.

Есть задача?

Обсудим в мессенджере

Расскажите, что нужно сделать — отвечу в течение 4 часов в рабочее время. Первая консультация бесплатно.

Продолжая пользование настоящим сайтом Вы выражаете своё согласие на обработку Ваших персональных данных (файлов куки) с использованием Yandex.Metrika.
Понятно