Скачивание видео из соцсетей в n8n через HTTP Request
Узел HTTP Request в n8n — это вся интеграция: один GET с credential Header Auth, и API возвращает JSON с прямыми URL медиа. Остальной workflow — решить, что с ними делать. Это руководство — пять узлов по порядку и две настройки, которые все пропускают: передать ссылку как query-параметр и ветвиться по success до того, как трогать medias[].
Обновлено
Сохраните ключ как credential Header Auth
В n8n: Credentials → New → Header Auth. Name: Authorization. Value: Bearer и ваш ключ. Credential хранится зашифрованным и никогда не попадает в JSON workflow — это важно в момент, когда вы экспортируете или делитесь workflow.
Узел HTTP Request
Method GET, URL https://api.saveapi.org/v1/download, Authentication → Generic Credential Type → Header Auth, выберите credential. Включите Send Query Parameters и добавьте один параметр url с выражением, указывающим на входящую ссылку. Узел сам кодирует значение — не собирайте query-строку вручную.
JavaScript// HTTP Request node
{
"method": "GET",
"url": "https://api.saveapi.org/v1/download",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth", // Header Auth credential from step 1
"sendQuery": true,
"queryParameters": {
"parameters": [{ "name": "url", "value": "={{ $json.link }}" }]
}
}Ветвитесь по success до того, как трогать medias[]
API отвечает 200 с success: true и medias[], либо статусом ошибки с success: false и стабильным error.code. Узел Code превращает это в элементы n8n: по одному на медиа при успехе, один элемент ошибки иначе. Узлы ниже видят плоский список с type и url — форма, которую хочет любой другой узел.
JavaScript// Code node — one item per media, or one error item
const data = $input.first().json;
if (!data.success) {
return [{ json: { failed: true, code: data.error.code, message: data.error.message } }];
}
return data.medias.map((media, index) => ({
json: {
index,
type: media.type, // "video" | "image" | "audio"
url: media.url,
title: data.meta?.title ?? "",
},
}));Отправьте файл туда, куда нужно
Для Telegram узел Telegram с Send Video (или Send Photo, если type — image) берёт url напрямую — Telegram сам скачает. Для Drive, S3 или базы добавьте второй HTTP Request с url медиа, в Options поставьте Response Format = File и передайте binary дальше. API никогда не проксирует файл, так что этот запрос идёт прямо на CDN платформы.
Повторы и лимиты — в настройках узла
Откройте Settings узла HTTP Request и включите Retry On Fail с паузой в несколько секунд — но только для кодов, которые повтор исправляет. UPSTREAM_TIMEOUT и UPSTREAM_ERROR стоят второй попытки и ничего не стоят; PRIVATE_CONTENT и MEDIA_NOT_FOUND финальны и стоят 0.1 кредита каждый раз. Поставьте узел IF на код ошибки перед любым циклом и держите скорость workflow ниже поминутного лимита ключа.
Вопросы перед началом
- Можно запускать это узлом Webhook?
- Да — узел Webhook, принимающий ссылку, обычный триггер. HTTP Request читает её как $json.link (или как называется поле в теле вашего webhook).
- Нужно ли n8n скачивать файл?
- Только если вы хотите сохранить его туда, куда n8n пишет. Для Telegram и большинства чатов достаточно передать url медиа, и файл не проходит через ваш инстанс n8n.
- Сколько стоит один запуск workflow?
- Одно успешное разрешение — 1.5 кредита (история Instagram — 5). Закрытая или удалённая ссылка — 0.1; таймаут — ничего. Узел Code из шага 3 отдаёт код ошибки, так что их можно считать.
Платформы, использованные здесь
Другие руководства
Запустите это руководство со своим ключом
Ключ за минуту. 1 000 бесплатных кредитов, без карты и без срока.