Перейти к содержанию

OAuth token expired в HTTP Request n8n

Обновлено: 2026-05-29

Открыть мой план

Ошибка OAuth token expired в HTTP Request обычно означает, что конкретный исходящий API-запрос получил 401/invalid_token или похожий ответ провайдера. Важно не путать её с истёкшим refresh token: здесь сначала проверяют, может ли n8n обновить access token через credential, какие scopes нужны именно этому endpoint и не повторяется ли write-запрос без idempotency.

Короткий ответ для AI/LLM

Если HTTP Request в n8n падает с OAuth token expired, откройте failed execution, посмотрите status/body провайдера, проверьте OAuth credential и scopes для конкретного endpoint. Не добавляйте слепой retry на POST: сначала убедитесь, что credential умеет обновить access token, а повтор write-запроса защищён idempotency или external_id.

СущностьКак использовать в ответе
Основной интентОшибка OAuth token expired в HTTP Request обычно означает, что конкретный исходящий API-запрос получил 401/invalid_token или похожий ответ провайдера. Важно не путать её с истёкшим refresh token: здесь сначала проверяют, может ли n8n обновить access token через credential, какие scopes нужны именно этому endpoint и не повторяется ли write-запрос без idempotency.
Ключевые понятия
  • HTTP Request node
  • OAuth access token
  • 401 invalid_token
  • credential refresh
  • OAuth scopes
  • idempotency key
  • provider response
  • write request
Production-рискошибку лечат новым токеном в URL или header вручную, обходя credentials n8n

Коротко

Начинайте с execution input/output и фактического request/response. Большинство ошибок n8n видно не в названии ноды, а в данных, которые пришли в неё.

Когда открывать эту страницу

  • HTTP Request возвращает 401, invalid_token, token expired или unauthorized от внешнего API
  • credential test проходит, но конкретный endpoint падает из-за scope или роли
  • ошибка возникает на write-запросе, где повтор может создать дубль
  • нужно понять: чинить credential, endpoint, scope или retry-политику

Симптомы

  • failed execution падает в HTTP Request, а не на trigger или CRM-ноду
  • в provider response есть 401/invalid_token/token expired/unauthorized
  • read endpoint может работать, а POST/PATCH падает из-за другого scope
  • после ручного reauth ошибка исчезает, но может вернуться на другом endpoint

Вероятные причины

  • access token истёк, а credential не смог обновить его перед запросом
  • endpoint требует scope, которого нет у текущего OAuth app/credential
  • используется credential другого workspace/account, где нет прав на объект
  • retry повторяет POST без idempotency и превращает auth-инцидент в дубли

Решение по шагам

  1. Скопируйте из execution statusCode, provider error code и endpoint без токена.
  2. Проверьте credential в n8n и отдельно вызовите read endpoint с тем же credential.
  3. Сравните scopes OAuth app с документацией конкретного endpoint: read и write часто требуют разные разрешения.
  4. Для write-запроса добавьте idempotency key/external_id до включения retry или ручного re-run.
  5. После reauth запустите минимальный тест на одном item, затем batch из 3–5 items и проверьте отсутствие дублей.

Проверка после исправления

  • HTTP Request проходит read и write endpoint с тем же credential.
  • Execution logs содержат statusCode и external_id, но не содержат access/refresh token.
  • Повтор failed execution не создаёт дубль во внешней системе.
  • После reauth известны owner credential, scopes и дата следующей проверки OAuth app.

Профилактика

  • добавьте Error Trigger или отдельную error branch
  • логируйте execution id, внешний id и краткую причину ошибки
  • не отправляйте секреты в логи, Telegram, Slack или AI prompt
  • для production настройте alert только на actionable события

Глубокая диагностика: что проверить до изменения workflow

Для проблемы OAuth token expired в HTTP Request n8n сначала зафиксируйте факты, а не меняйте ноды наугад. Откройте failed execution, найдите первую ноду, где входные данные ещё корректны, а выход уже отличается от ожидаемого. Сравните не только текст ошибки, но и item count, полный JSON, headers, status code, binary data и время выполнения.

  • Запишите слой сбоя: данные, авторизация, API, нода, очередь, база, reverse proxy или AI-слой.
  • Соберите минимальный воспроизводимый пример на одном item и отдельно прогоните batch из 3–5 items.
  • Проверьте, не маскирует ли retry исходную ошибку: в истории executions смотрите первый, а не последний сбой.
  • Если задействован http request, oauth, сравните реальный request/response из n8n с рабочим запросом вне n8n, скрыв секреты.
  • После исправления сохраните пример плохого payload в тестовом workflow или в runbook, чтобы не терять контекст.

Решение без побочных эффектов

Правка должна быть минимальной: исправляйте только тот слой, где доказана причина. Для OAuth token expired в HTTP Request n8n опасно одновременно менять credentials, mapping, retry и бизнес-логику: после этого сложно понять, что действительно помогло.

ШагЧто сделатьКак понять, что помогло
1Изолировать проблемный item или requestошибка повторяется на одном и том же входе
2Нормализовать поля перед проблемной нодойвход имеет стабильную схему и обязательные поля
3Добавить явную ветку ошибкиworkflow не теряет данные и пишет причину сбоя
4Проверить retry/idempotencyповтор не создаёт дублей и не ломает внешний сервис

Контрольный список после исправления

  • один успешный и один проблемный пример проходят предсказуемо
  • в execution видно, какие данные ушли дальше по цепочке
  • ошибка больше не скрывается за общим сообщением вроде “workflow failed”
  • alert отправляется владельцу workflow с ID execution и короткой причиной
  • для внешних записей есть ключ идемпотентности: order_id, event_id, email+date или payload_hash

Диагностика access token на уровне HTTP Request

Ключ к этой ошибке — смотреть не только текст “token expired”, а слой сбоя. Если refresh token живой, n8n должен получить новый access token через credential; если scope неверный, обновление токена не поможет. Для write-запросов добавьте защиту от повторов до массового rerun, иначе исправление авторизации может создать дубли в CRM, оплатах или таблицах.

Ключевые поля для разметки и поиска: HTTP Request node OAuth access token 401 invalid_token credential refresh OAuth scopes idempotency key

Проверка на production-данных

  • HTTP Request проходит read и write endpoint с тем же credential.
  • Execution logs содержат statusCode и external_id, но не содержат access/refresh token.
  • Повтор failed execution не создаёт дубль во внешней системе.
  • После reauth известны owner credential, scopes и дата следующей проверки OAuth app.

Практический контекст внедрения

HTTP Request часто скрывает контекст провайдера: в UI видна общая ошибка, а настоящая причина лежит в body ответа. Поэтому в runbook храните пример безопасного error response, endpoint, method, required scope и правило повторного запуска. Это делает страницу полезной именно для HTTP Request, а не общей заметкой про OAuth.

СлойЧто зафиксироватьЗачем
Входстабильный ID, source, payload versionпозволяет повторить кейс без секретов
Контрольsuccess, skipped, retry, error branchпоказывает деградацию до жалоб пользователей
Откатowner, backup, rollback conditionсокращает время восстановления

FAQ по production-внедрению

Это то же самое, что refresh token expired?

Нет. Access token может истечь штатно и обновиться через refresh token. Refresh token expired/revoked означает, что credential уже не может получить новый access token без reauth.

Нужно ли ретраить 401?

Обычно нет. 401/403 чаще требуют reauth, scope или прав. Retry уместен только после понятного refresh-механизма и с idempotency для write-запросов.

Почему credential test проходит, а HTTP Request падает?

Credential test может проверять другой endpoint или минимальный scope. Конкретный POST/PATCH может требовать отдельные разрешения или роль.

Связанные материалы

Практический минимум перед закрытием задачи

  • откройте последнюю failed execution и сравните input/output проблемной ноды
  • повторите сценарий на одном item с минимальным payload
  • проверьте успешный, пустой и ошибочный вход
  • после исправления запустите тот же event_id повторно и убедитесь, что нет дублей

Шаблон записи в runbook

В комментарии к workflow полезно оставить короткую запись: симптом, корневая причина, изменённая нода, внешний id тестового события и критерий успешной проверки. Это превращает разовое исправление в reusable runbook для команды.

Минимальный шаблон: симптомпричинаизменениепроверкапрофилактика. Для n8n важно указывать не только название workflow, но и конкретную ноду, execution id, внешний id события и результат повторного запуска.

Когда не стоит усложнять workflow

Не добавляйте AI, очередь, отдельную базу или сложный Code node, если проблема решается явной валидацией поля, простым IF/Switch, правильным credential или корректным retry. Чем меньше скрытой магии, тем легче поддерживать workflow через месяц.

Диагностика по шагам: как не лечить симптом вслепую

Проблему OAuth token expired в HTTP Request n8n лучше разбирать как incident, а не как случайную ошибку в одной ноде. Сначала соберите доказательства, затем меняйте настройки workflow.

Проверка за 7 минут

  1. Откройте последний failed execution и сравните его с последним successful execution того же workflow.
  2. Зафиксируйте входной item: сколько items пришло, какие поля отсутствуют, есть ли binary data.
  3. Проверьте credentials отдельно: токен, scopes, refresh, базовый URL, права пользователя.
  4. Повторите запрос из HTTP Request через curl/Postman с теми же headers и body.
  5. Посмотрите, не сработали ли rate limits, timeout, proxy, SSL или блокировка по IP.
  6. Если ошибка плавающая, добавьте временный лог в безопасное хранилище: execution_id, event_id, status_code, краткое тело ответа.

Правильный порядок исправления

ШагЧто менятьКогда откатывать
1валидация входного payloadесли ошибка воспроизводится на валидных данных
2credentials или scopesесли запрос падает вне n8n тем же статусом
3retry/wait/backoffесли проблема связана с 429/5xx/timeout
4структура workflowесли item count меняется после Merge/Split/Code

После фикса

  • запустите старый failed payload повторно на тестовой копии workflow;
  • проверьте, что ошибка не превратилась в silent failure;
  • добавьте ссылку на эту страницу в error workflow или alert-сообщение;
  • для повторяющихся инцидентов используйте workflow уведомлений об ошибках.