Я нажимаю четыре кнопки в amoCRM, копирую одну строку в файл .env — и теперь Claude Code в VSCode сам ходит в мою CRM. Без OAuth-флоу, без redirect URI, без refresh-токенов. Долгосрочный JWT-токен amoCRM живёт год, выдаётся в один клик во вкладке «Ключи и доступы» созданной интеграции, и кладётся в заголовок Authorization: Bearer ... обычным HTTP-запросом к /api/v4/leads. Дальше Claude сам пишет код, забирает сделки, считает конверсии и рисует дашборды. Это статья для тех, кто никогда раньше не лез в API руками — никаких заклинаний, только пошаговые скриншоты.
- → Гайд для начинающих: рабочее место разработчика с нуля за 1 час — VSCode, GitHub, Vercel, Supabase и Claude Pro по шагам
- → Феномен вайбкодинга: как запускать продукты без программистов — что вообще такое «писать код голосом» и почему это работает
- → Не говори кто ты. Покажи свой usage в Claude Code — сколько на самом деле стоит работать с Opus и почему $200/мес — это даром
Если уже всё установлено и ты пишешь 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.
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 не нужно — нужно просто скопировать его как пароль.
.env + .gitignore.3. Пошаговая инструкция
Делается всё на четыре нажатия. Я для каждого шага оставил скриншот — открывай свою amoCRM в соседней вкладке и повторяй.
0Заходим в Настройки → Интеграции
Логинься в свой аккаунт amoCRM. В левом меню снизу есть иконка шестерёнки — «Настройки». Внутри ищи раздел «Интеграции». Тебя встретит галерея готовых модулей (телефония, мессенджеры, и тд) — нам они не нужны. Жми кнопку «+ Создать интеграцию» в правом верхнем углу.

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

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

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

.env локально.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/
git push на GitHub без этого файла, твой токен улетит в публичный репозиторий. По данным GitHub, боты-сканеры находят такие токены за секунды и начинают ими пользоваться. Поэтому .gitignore создаём ДО первого коммита, а не после.Дальше открываешь Claude Code (плагин для VSCode или терминал), и пишешь обычным языком:
Claude напишет код, попросит запустить, увидит реальный ответ от API, при необходимости поправит ошибки. Тебе не нужно знать Python — нужно только согласовывать действия и говорить «да, делай» или «нет, поправь вот это».
5. Что Claude теперь умеет
С одним токеном открывается весь REST API v4 amoCRM. Это десятки эндпоинтов — Claude знает их по документации, поэтому достаточно объяснить задачу словами. Вот основной набор, который покрывает 90% аналитических запросов:
| Что забираем | Эндпоинт | Зачем |
|---|---|---|
| Сделки | /api/v4/leads | Воронки, конверсия, средний чек, время в статусе |
| Контакты | /api/v4/contacts | База клиентов, источники, теги |
| Компании | /api/v4/companies | B2B-аналитика, 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.7. Что ещё нужно знать
Не пугаю — это всё мелочи, но лучше услышать про них от меня, чем удивляться потом.
Чуть подробнее про пагинацию: если у тебя 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.
«Заливай свежие сделки каждую ночь в Postgres»
Создаёт schema.sql, пишет cron-скрипт с инкрементальной выгрузкой по updated_at.
9. Заключение
Раньше, чтобы поговорить со своей CRM, ты звал интегратора, ждал две недели, платил $1 500 за «небольшой кастомный отчёт» и в итоге получал не то, что просил. Сегодня — открываешь amoCRM, делаешь четыре клика, копируешь одну строку, открываешь VSCode и пишешь словами что хочешь увидеть.
Это не магия и не «AI заменит всех». Это просто здравый смысл: твои данные стали доступны, твой ассистент умеет с ними работать, барьер входа — пять минут на настройку. Дальше всё зависит от того, какие вопросы ты захочешь задавать своей CRM.
Если статья помогла — загляни в другие материалы блога: там есть про подключение AmoCRM к Postgres через MD-схему, про Text-to-SQL и про то, как не сжечь $2 за один вопрос к Excel в Claude. Один токен — а возможностей открывается на месяцы вперёд.
Один токен. Один файл .env. Один промпт. Твоя amoCRM теперь говорит с Claude.