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 не требуются. Ответ содержит канал загрузки по умолчанию, ключи каналов, имена дочерних каналов и состояние балансировки нагрузки. Секреты, токены обновления и другие чувствительные значения конфигурации не возвращаются.

Выбор режима загрузки

РежимКогда использоватьОписание
Загрузка одним запросомНебольшие файлы, простые скрипты, проверка соединенияОтправляет весь файл в /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НетВывести каналы, доступные текущему API Token, и завершить работу.

Каналы для загрузки одним запросом

Ключ каналаКанал
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НетВывести каналы, доступные текущему API Token, и завершить работу.

Каналы для загрузки частями

Ключ каналаПоток загрузки
telegram / tgНастоящая сессия загрузки частями через /upload
discord / dcНастоящая сессия загрузки частями через /upload
cfr2 / r2Настоящая сессия загрузки частями через /upload
github / ghНастоящая сессия загрузки частями через /upload
gitlab / glНастоящая сессия загрузки частями через /upload
webdav / wdНастоящая сессия загрузки частями через /upload
s3Многочастная загрузка S3
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.