Article

AmoCRM + Claude Code: один токен — и CRM говорит с тобой

Простая инструкция для не-программистов: как за 5 минут получить долгосрочный JWT-токен в amoCRM и подключить его к Claude Code в VSCode.

AIAmoCRMClaude Code9 мин
Мадияр Хамзанов
Мадияр Хамзанов
10 мая 2026
TL;DR

Я нажимаю четыре кнопки в amoCRM, копирую одну строку в файл .env — и теперь Claude Code в VSCode сам ходит в мою CRM. Без OAuth-флоу, без redirect URI, без refresh-токенов. Долгосрочный JWT-токен amoCRM живёт год, выдаётся в один клик во вкладке «Ключи и доступы» созданной интеграции, и кладётся в заголовок Authorization: Bearer ... обычным HTTP-запросом к /api/v4/leads. Дальше Claude сам пишет код, забирает сделки, считает конверсии и рисует дашборды. Это статья для тех, кто никогда раньше не лез в API руками — никаких заклинаний, только пошаговые скриншоты.

5 мин
на всю настройку
от логина в amoCRM до первого запроса
1 год
живёт токен
без refresh, без OAuth
0 строк
бэкенд-кода
всё пишет Claude в чате
7 rps
rate limit API
Claude сам обойдёт
Перед стартом — если ты впервые слышишь про VSCode и Claude Code. Эта статья предполагает, что у тебя уже установлен редактор кода и Claude умеет в нём работать. Если нет — потрать 30 минут и пройди по моим прошлым гайдам, я там всё разжёвываю с нуля, с оплатой подписки из Казахстана и аналогиями для не-программистов:

Если уже всё установлено и ты пишешь Claude'у в чат — погнали дальше, к токену.

1. Зачем это вообще нужно

Допустим, у тебя есть amoCRM — там лежат клиенты, сделки, задачи, звонки, заметки менеджеров. Если у тебя там пара тысяч сделок, в интерфейсе уже неудобно: фильтры режут случайно, отчёты внутри amo куцые, выгрузить в Excel и потом мучить ВПР — занятие на полдня. Хочется по-человечески: открыть VSCode, написать «Клод, посчитай конверсию по воронке за апрель» — и получить готовую табличку.

У Claude Code для этого есть всё: он умеет писать Python/JS, делать HTTP-запросы, парсить JSON, считать в pandas, рисовать графики. Не хватает одного — доступа к твоей CRM. И вот тут начинается самая страшная часть для не-разработчика: «токены, OAuth, redirect URI, scope, refresh, Bearer...». Звучит как заклинание. На самом деле — для личного аналитического проекта тебе достаточно одной кнопки и одной длинной строки.

amoCRM, начиная с 2021 года, официально разрешает выдавать долгосрочные JWT-токены прямо из настроек интеграции. Без обмена кодов, без редиректов, без сервера-посредника. Скопировал — вставил — пользуешься. Один токен, который живёт год — и твоя CRM теперь говорит с Claude.

Кому это вообще зайдёт: руководителю отдела продаж, маркетологу, владельцу бизнеса с парой менеджеров, продакту в стартапе. То есть всем, у кого есть amoCRM, есть подписка на Claude и есть желание задавать своей CRM вопросы на русском, а не лопатить выгрузки в Excel.
Связка amoCRM и Claude Code через токен

2. Что такое токен и почему long-lived

Если совсем на пальцах: токен — это пропуск. Когда твоя программа стучится в API amoCRM, она показывает этот пропуск в заголовке HTTP-запроса. amoCRM смотрит на пропуск, понимает «ага, это аккаунт Васи, у него права на чтение и запись», и отдаёт данные. Если пропуск просрочен или подделан — вернёт ошибку 401.

У amoCRM есть два режима выдачи пропусков:

РежимСрок жизниКогда брать
Обычный access_token (OAuth)24 часаЕсли у тебя продакшн-интеграция, которой пользуются клиенты — нужен полноценный OAuth с refresh_token
Долгосрочный токен (JWT)1 годЛичные аналитические проекты, скрипты, ETL, чат с Claude — короче, всё, где не страшно раз в год обновить руками

Долгосрочный токен — это JWT (JSON Web Token): строка из трёх частей, разделённых точками, длиной около 800-900 символов. Внутри зашифрована подпись amoCRM, твой ID интеграции, ID аккаунта и срок жизни. Тебе разбираться с устройством JWT не нужно — нужно просто скопировать его как пароль.

Безопасность: токен — это пароль. Кто его знает — у того есть доступ ко всей CRM от твоего имени. Никогда не коммить его в git, не шарь в Slack/Telegram, не вставляй в публичные репозитории. Всегда .env + .gitignore.

3. Пошаговая инструкция

Делается всё на четыре нажатия. Я для каждого шага оставил скриншот — открывай свою amoCRM в соседней вкладке и повторяй.

0Заходим в Настройки → Интеграции

Логинься в свой аккаунт amoCRM. В левом меню снизу есть иконка шестерёнки — «Настройки». Внутри ищи раздел «Интеграции». Тебя встретит галерея готовых модулей (телефония, мессенджеры, и тд) — нам они не нужны. Жми кнопку «+ Создать интеграцию» в правом верхнем углу.

Шаг 0: раздел Интеграции в настройках amoCRM

1Создаём интеграцию

Откроется форма. Здесь нужно понять одну простую вещь: для долгосрочного токена redirect URI и прочие OAuth-поля по факту не используются. Но они обязательны для сохранения, поэтому пишем что угодно валидное:

  • Redirect URI: https://example.com — сойдёт что угодно с https
  • Название: «Claude», «Personal Analytics», что хочешь — это видно только тебе
  • Описание: необязательно
  • Доступ: лучше «Доступ ко всем данным» — чтобы Claude мог не только читать, но и при желании создавать/обновлять сущности
  • Галочка «Разрешить эту интеграцию» — обязательно проставь

Жмёшь «Сохранить».

Шаг 1: форма создания интеграции в amoCRM

2Проверяем, что интеграция создана

После сохранения ты вернёшься в список интеграций и увидишь свою свежесозданную карточку — обычно во вкладке «Установленные» или «Мои». Кликай на неё, открывается страница интеграции с вкладками «Описание», «Настройки», «Ключи и доступы». Если эта страница открылась — значит интеграция жива и работает.

Шаг 2: проверка что интеграция создана в amoCRM

3Копируем долгосрочный токен

Самая важная вкладка — «Ключи и доступы». Внутри есть блок «Долгосрочный токен» с большой кнопкой «Сгенерировать». Жмёшь её — amoCRM показывает строку, которая начинается с eyJ0eXAiOiJKV1Q... и тянется на 800-900 символов. Это и есть твой JWT-токен. Жми «Скопировать».

Шаг 3: копирование долгосрочного токена и вставка в Claude
Один раз и навсегда: когда ты сгенерируешь токен, amoCRM покажет его полностью только один раз. Если закроешь окно — придётся генерировать новый (это бесплатно, но раздражает). Поэтому сразу копируй и сохраняй в надёжном месте: менеджер паролей, файл .env локально.
1
Настройки
Шестерёнка слева внизу → раздел «Интеграции».
2
+ Создать
Внешняя интеграция: название «Claude», redirect URI любой, доступ — ко всем данным.
3
Открыть карточку
Кликаешь по своей интеграции в списке.
4
Ключи и доступы
Жмёшь «Сгенерировать долгосрочный токен» → копируешь.
Подключение токена в VSCode

4. Куда вставлять токен в VSCode

Открываешь VSCode, создаёшь папку под проект (например amocrm-analytics), внутри создаёшь файл .env — точка в начале обязательна. Это стандартный способ хранить секреты в проектах:

# .env
AMOCRM_SUBDOMAIN=mycompany
AMOCRM_ACCESS_TOKEN=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6Ijc...

AMOCRM_SUBDOMAIN — это поддомен в URL твоей CRM. Если ты заходишь на https://mycompany.amocrm.ru, значит твой subdomain = mycompany. Без https, без .amocrm.ru — только средняя часть.

Дальше — обязательный шаг. Создаёшь рядом файл .gitignore и пишешь туда:

# .gitignore
.env
.env.local
__pycache__/
.venv/
node_modules/
Зачем .gitignore именно сейчас: в момент, когда ты сделаешь git push на GitHub без этого файла, твой токен улетит в публичный репозиторий. По данным GitHub, боты-сканеры находят такие токены за секунды и начинают ими пользоваться. Поэтому .gitignore создаём ДО первого коммита, а не после.

Дальше открываешь Claude Code (плагин для VSCode или терминал), и пишешь обычным языком:

«Я подключил amoCRM. У меня в .env лежат AMOCRM_SUBDOMAIN и AMOCRM_ACCESS_TOKEN. Напиши Python-скрипт, который заберёт все сделки за последние 30 дней и сохранит в CSV. Используй httpx и python-dotenv.»

Claude напишет код, попросит запустить, увидит реальный ответ от API, при необходимости поправит ошибки. Тебе не нужно знать Python — нужно только согласовывать действия и говорить «да, делай» или «нет, поправь вот это».

5. Что Claude теперь умеет

С одним токеном открывается весь REST API v4 amoCRM. Это десятки эндпоинтов — Claude знает их по документации, поэтому достаточно объяснить задачу словами. Вот основной набор, который покрывает 90% аналитических запросов:

Что забираемЭндпоинтЗачем
Сделки/api/v4/leadsВоронки, конверсия, средний чек, время в статусе
Контакты/api/v4/contactsБаза клиентов, источники, теги
Компании/api/v4/companiesB2B-аналитика, ABC-анализ
Задачи/api/v4/tasksПросрочки, нагрузка менеджеров
События (лог)/api/v4/eventsАудит: кто, что, когда менял
Звонки/беседы/api/v4/talksИстория разговоров с клиентами
Заметки/api/v4/notesТекстовые комментарии менеджеров под сделкой
Пользователи/api/v4/usersСписок менеджеров, для группировки отчётов
Воронки и статусы/api/v4/leads/pipelinesСтруктура воронки — нужна для расчёта конверсии
Кастомные поля сделок/api/v4/leads/custom_fieldsЧтобы Claude понял, что значат твои нестандартные колонки
Причины отказа/api/v4/leads/loss_reasonsАнализ потерь: почему клиенты уходят

Все эти эндпоинты работают по одному принципу: GET https://{subdomain}.amocrm.ru/api/v4/{resource} + заголовок Authorization: Bearer {token}. Опциональные параметры: limit (до 250), page, filter[...], with для подтягивания связанных сущностей. Подробности — в официальной документации.

6. Простой пример на Python

Чтобы было совсем понятно, что происходит под капотом — вот минимальный рабочий пример. Можно скопировать в файл fetch_leads.py и запустить:

import os
import httpx
from dotenv import load_dotenv

load_dotenv()  # читает .env

subdomain = os.environ["AMOCRM_SUBDOMAIN"]
token = os.environ["AMOCRM_ACCESS_TOKEN"]

client = httpx.Client(
    base_url=f"https://{subdomain}.amocrm.ru",
    headers={"Authorization": f"Bearer {token}"},
    timeout=30,
)

r = client.get("/api/v4/leads", params={"limit": 50})
r.raise_for_status()
data = r.json()

for lead in data["_embedded"]["leads"]:
    print(lead["id"], lead["name"], lead["price"])

Запускаешь: python fetch_leads.py — и видишь в консоли последние 50 сделок: ID, название, сумму. Дальше дело за Claude — попроси его построить из этого сводный отчёт, дашборд в Recharts или прогноз продаж.

Установка зависимостей: pip install httpx python-dotenv. Или попроси Claude — он создаст requirements.txt, поднимет venv, всё сам поставит. Если ты на JS — то же самое через fetch или axios.
Анализ данных amoCRM

7. Что ещё нужно знать

Не пугаю — это всё мелочи, но лучше услышать про них от меня, чем удивляться потом.

Rate limit
7 запр/сек
amoCRM банит на минуту, если превысил. Claude по умолчанию делает паузы — не парься.
Пагинация
250 записей
Один запрос отдаёт максимум 250 элементов. Дальше — параметр page=2, page=3, ...
Срок токена
≈ 1 год
Через год начнёт возвращать 401. Заведи напоминалку — обновить токен в той же вкладке.
Утёк? Не паникуй
1 клик
Заходишь в интеграцию → генерируешь новый. Старый перестанет работать сам.

Чуть подробнее про пагинацию: если у тебя 5 000 сделок, а лимит — 250 за запрос, нужно сделать 20 запросов с увеличивающимся параметром page. Claude это делает автоматически — он напишет цикл, который идёт пока в ответе есть _links.next. Тебе про это знать не обязательно — главное скажи «забери все», а не «забери 50».

Про rate limit: 7 запросов в секунду — это много. На полную выгрузку 50 000 сделок (200 запросов) уходит около 30 секунд. Если упёрся — amoCRM вернёт 429 Too Many Requests, и Claude сам поставит паузу.

Про утечку токена: если случайно запушил в git или потерял ноут — заходишь в ту же интеграцию, жмёшь «Сгенерировать новый долгосрочный токен». Старый перестаёт работать в течение нескольких минут. Это бесплатно и без последствий.

8. Идеи: что попросить у Claude

Самое интересное начинается, когда ты перестаёшь думать «это API», и начинаешь думать «это мой собственный BI-аналитик». Вот живые примеры, которые я гонял на проде:

Аналитика

«Посчитай конверсию по каждому этапу воронки за прошлый месяц»

Берёт /leads + /pipelines, группирует по статусам, считает CR.

Контроль

«Найди сделки, которые висят в одном статусе больше 30 дней»

Через /events смотрит, когда последний раз менялся статус, и фильтрует зависшие.

Сегментация

«Сгруппируй контакты по источнику и покажи топ-10»

Берёт /contacts, разбирает кастомные поля «Источник» / «UTM», агрегирует.

Просрочки

«Покажи задачи, которые просрочены, по каждому менеджеру»

/tasks с фильтром complete_till < now() + is_completed=false.

Дашборд

«Сделай React-страницу с дашбордом по этапам воронки»

Поднимает Next.js, рисует bar-чарт в Recharts, биндит к свежим данным из amoCRM.

ETL

«Заливай свежие сделки каждую ночь в Postgres»

Создаёт schema.sql, пишет cron-скрипт с инкрементальной выгрузкой по updated_at.

Главный лайфхак: начни с того, что попроси Claude забрать структуру воронки и кастомные поля — это даёт ему контекст. Дальше любые запросы он будет формулировать на твоём бизнес-языке («Сделки в статусе переговоры», а не «leads со status_id=12345»).

9. Заключение

Раньше, чтобы поговорить со своей CRM, ты звал интегратора, ждал две недели, платил $1 500 за «небольшой кастомный отчёт» и в итоге получал не то, что просил. Сегодня — открываешь amoCRM, делаешь четыре клика, копируешь одну строку, открываешь VSCode и пишешь словами что хочешь увидеть.

Это не магия и не «AI заменит всех». Это просто здравый смысл: твои данные стали доступны, твой ассистент умеет с ними работать, барьер входа — пять минут на настройку. Дальше всё зависит от того, какие вопросы ты захочешь задавать своей CRM.

Если статья помогла — загляни в другие материалы блога: там есть про подключение AmoCRM к Postgres через MD-схему, про Text-to-SQL и про то, как не сжечь $2 за один вопрос к Excel в Claude. Один токен — а возможностей открывается на месяцы вперёд.

Один токен. Один файл .env. Один промпт. Твоя amoCRM теперь говорит с Claude.