Skip to content

Завантаження файлів через API Token

Завантаження через API Token призначені для скриптів, автоматизованих задач і сторонніх програм. Відкривати вебінтерфейс не потрібно. Якщо передати URL сайту, token, шлях до локального файлу та реальний канал завантаження, файл можна завантажити в ImgHost, а відповідь міститиме URL файла.

Редагування API Token

Перед початком

Відкрийте адмін-панель і перейдіть до:

text
System Settings -> Security Settings -> API Token

Під час створення або редагування API Token переконайтеся, що він має дозвіл на завантаження та використовує реальний канал завантаження за замовчуванням. Завантаження через API Token не використовують вхід розумної маршрутизації, і скрипти також мають передавати реальний канал.

Завантаження скриптів для завантаження

Пакет документації надає два скрипти Node.js:

СкриптПризначення
скрипт завантаження одним запитомОдин раз викликає /upload. Корисно для невеликих файлів і перевірки підключення.
скрипт частинного завантаженняВикористовує розбиття через API Token, пряме завантаження або сесії завантаження платформи. Рекомендовано для великих файлів.

Потрібен Node.js 18 або новіший.

Перелік доступних каналів

Обидва скрипти можуть показати канали завантаження, доступні поточному API Token:

powershell
node imghost-token-single-upload.mjs --base-url "https://your-domain" --token "your API Token" --list-channels
node imghost-token-chunk-upload.mjs --base-url "https://your-domain" --token "your API Token" --list-channels

Під час виведення каналів --file і --channel не потрібні. Відповідь містить канал завантаження за замовчуванням, key каналів завантаження, назви дочірніх каналів і стан балансування навантаження. Секрети, токени оновлення та інші чутливі значення конфігурації не повертаються.

Вибір режиму завантаження

РежимНайкраще дляОпис
Завантаження одним запитомНевеликі файли, прості скрипти, перевірки підключенняНадсилає весь файл у /upload одним запитом.
Частинне завантаженняВеликі файли або файли, які можуть перевищити тайм-аутСкрипт вибирає потік частинного, прямого або сесійного завантаження відповідно до каналу.

Для більших файлів спочатку використовуйте скрипт частинного завантаження. Завантаження одним запитом обмежені розміром запиту Cloudflare, пам'яттю Worker і власними обмеженнями кожної платформи.

Завантаження одним запитом

Скрипт одного запиту надсилає один запит до /upload.

powershell
node imghost-token-single-upload.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --file "D:\test\image.png" `
  --channel s3 `
  --folder "photos/2026"

Token також можна помістити в змінну середовища:

powershell
$env:IMGHOST_API_TOKEN="your API Token"
node imghost-token-single-upload.mjs --base-url "https://your-domain" --file "D:\test\image.png" --channel s3

Параметри завантаження одним запитом

ПараметрОбов'язковоОпис
--base-url <url>ТакURL сайту ImgHost, наприклад https://image.ai6.me.
--token <token>ТакAPI Token. Також можна використати змінну середовища IMGHOST_API_TOKEN.
--file <path>ТакШлях до локального файлу.
--channel <key>ТакКанал завантаження.
--folder <path>НіПапка завантаження, наприклад photos/2026 або /user/.
--name-type <type>НіРежим іменування, зіставлений із серверним uploadNameType. Типово default.
--channel-name <name>НіВибирає дочірній канал або акаунт. Якщо пропущено, вирішує серверна конфігурація каналу.
--retries <n>НіКількість повторів для тимчасових помилок. Типово 3.
--timeout-ms <n>НіТайм-аут запиту. Типово 180000.
--output <pretty|json>НіФормат виводу. Типово pretty.
--save-response <path>НіЗберегти фінальну JSON-відповідь у файл.
--list-channelsНіПоказати канали, доступні поточному token, і завершити роботу.

Канали для завантаження одним запитом

Key каналуКанал
telegram / tgTelegram
discord / dcDiscord
cfr2 / r2Cloudflare R2
s3S3
webdav / wdКанал зберігання WebDAV
github / ghGitHub Releases
gitlab / glGitLab Packages
huggingface / hfHugging Face
onedrive / odOneDrive
googledrive / google / gdGoogle Drive
dropbox / dbDropbox
yandex / yxYandex Disk
pcloud / pdpCloud

Обмеження розміру для одного запиту

За можливості тримайте файли для завантаження одним запитом меншими за 100 MB.

Для цих каналів скрипт має явні пороги блокування одиночного /upload:

КаналОбмеження одного запиту
Telegram20 MiB
Discord10 MiB
S364 MiB
WebDAV64 MiB
GitHub Releases64 MiB
GitLab Packages64 MiB

Коли файл перевищує одне з цих обмежень, скрипт повідомляє відповідну помилку локально. Інші канали не мають жорстко заданої локальної перевірки 100 MB у скрипті. Якщо тіло запиту перевищує можливості Cloudflare або платформи, помилку поверне Cloudflare або віддалена платформа.

Частинне завантаження

Скрипт частинного завантаження спочатку просить сервер визначити цільовий файл, а потім виконує потік для великих файлів вибраного каналу. Вам не потрібно самостійно писати запити створення сесії частин, об'єднання або завершення.

powershell
node imghost-token-chunk-upload.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --file "D:\test\video.zip" `
  --channel github `
  --folder "photos/2026" `
  --concurrency 3

Параметри частинного завантаження

ПараметрОбов'язковоОпис
--base-url <url>ТакURL сайту ImgHost.
--token <token>ТакAPI Token. Також можна використати змінну середовища IMGHOST_API_TOKEN.
--file <path>ТакШлях до локального файлу.
--channel <key>ТакКанал завантаження.
--folder <path>НіПапка завантаження.
--name-type <type>НіРежим іменування, зіставлений із серверним uploadNameType. Типово default.
--channel-name <name>НіВибирає дочірній канал або акаунт. Якщо пропущено, вирішує серверна конфігурація каналу.
--concurrency <n>НіПаралельні завантаження. Типово 1, максимум 3.
--retries <n>НіКількість повторів для тимчасових помилок. Типово 3.
--timeout-ms <n>НіТайм-аут кожного запиту. Типово 180000.
--output <pretty|json>НіФормат виводу. Типово pretty.
--save-response <path>НіЗберегти фінальну JSON-відповідь у файл.
--list-channelsНіПоказати канали, доступні поточному token, і завершити роботу.

Канали частинного завантаження

Key каналуПотік завантаження
telegram / tgСправжня частинна сесія /upload
discord / dcСправжня частинна сесія /upload
cfr2 / r2Справжня частинна сесія /upload
github / ghСправжня частинна сесія /upload
gitlab / glСправжня частинна сесія /upload
webdav / wdСправжня частинна сесія /upload
s3S3 multipart upload
onedrive / odСесія завантаження OneDrive
googledrive / google / gdВідновлюване завантаження Google Drive
dropbox / dbСесія завантаження Dropbox
yandex / yxПрямий URL завантаження Yandex
pcloud / pdПосилання завантаження pCloud
huggingface / hfЗавантаження Hugging Face LFS

Зразки зі стисненими файлами Yandex були нестабільними під час тестування. Успішне завантаження нестиснених файлів підтверджено.

Відповідь після завантаження

Після успішного завантаження скрипт виводить:

text
success
src: /file/photos/2026/example.png
url: https://your-domain/file/photos/2026/example.png
fileId: photos/2026/example.png
ПолеОпис
srcВнутрішній шлях файла на сайті.
urlПовний публічний URL, придатний для ваших скриптів або записів бази даних.
fileIdID файла, корисний для подальших запитів, керування або журналів.
channelNameЧастинний скрипт може повернути фактично використаний дочірній канал або акаунт.

З --output json скрипт виводить повну JSON-відповідь для програмного використання.

Прямий API-виклик одного запиту

Якщо ви не використовуєте скрипт, кінцеву точку завантаження одним запитом можна викликати напряму:

text
POST https://your-domain/upload?uploadChannel=s3&uploadFolder=photos/2026&uploadNameType=default
Authorization: Bearer your API Token
Content-Type: multipart/form-data

Поле форми:

ПолеОбов'язковоОпис
fileТакФайл для завантаження.

Параметри запиту:

ПараметрОбов'язковоОпис
uploadChannelТакРеальний канал завантаження.
uploadFolderНіПапка завантаження.
uploadNameTypeНіРежим іменування.
channelNameНіВибирає дочірній канал або акаунт.

Успішні відповіді мають такий вигляд:

json
{
  "success": true,
  "src": "/file/photos/2026/example.png",
  "url": "https://your-domain/file/photos/2026/example.png",
  "fileId": "photos/2026/example.png"
}

FAQ

Великі завантаження одним запитом не проходять

Одиночний /upload надсилає весь файл одним запитом. Великі файли можуть бути заблоковані Cloudflare або віддаленою платформою. Для великих файлів використовуйте скрипт частинного завантаження.

--channel-name задано, але завантаження все одно не проходить

Перевірте, що у вибраному каналі справді є дочірній канал із такою назвою і що він увімкнений. Якщо --channel-name пропущено, сервер вибирає доступний акаунт відповідно до конфігурації цього каналу.

Я хочу використати результат в іншій програмі

Використовуйте --output json або додайте --save-response result.json. Прочитайте поле url, щоб отримати повний URL файла.

Yandex не може завантажувати архіви

Yandex не підтримує архівні формати. Це може бути зумовлено політикою платформи. Під час використання Yandex за можливості завантажуйте неархівні файли.

Released as user documentation for ImgHost.