Skip to content

Управление файлами через API Token ​

Управление файлами через API Token предназначено для скриптов, задач автоматизации и сторонних панелей управления. Оно использует разрешение manage и позволяет без открытия панели администратора редактировать сведения о файлах, перемещать файлы, переименовывать файлы, создавать файлы-заполнители каталогов, настраивать теги файлов и статус списков, блокировать или восстанавливать IP для загрузки, а также создавать или удалять краткосрочные Token для загрузки.

Этот скрипт обрабатывает только легкие действия в управлении файлами и пользователями. Загрузка, списки, удаление, настройки загрузки, настройки сайта и федеративные связи по-прежнему используют свои отдельные скрипты.

Редактирование API Token

Подготовка ​

В панели администратора откройте:

System Settings -> Security Settings -> API Token

При создании или редактировании API Token убедитесь, что для этого Token разрешено управление. Разрешение manage может менять состояние файлов, состояние загрузок пользователей и создавать краткосрочные Token для загрузки, поэтому выдавайте его только доверенным скриптам или пользователям.

Операции записи в скрипте управления файлами по умолчанию работают в режиме предварительного просмотра и ничего не сохраняют. После проверки предварительного результата добавьте --apply, чтобы выполнить запись.

Token можно также поместить в переменную окружения:

powershell
$env:IMGHOST_API_TOKEN="your API Token"

Скачать скрипт ​

СкриптНазначение
скрипт управления файламиМетаданные файлов, метки модерации, теги файлов, статус списков, перемещение, переименование, создание папок, блокировка/восстановление IP, создание и удаление краткосрочных Token для загрузки

На локальном компьютере требуется Node.js 18 или новее.

Границы возможностей ​

ВозможностьСкриптРазрешение
Загружать файлыimghost-token-single-upload.mjs / imghost-token-chunk-upload.mjsupload
Показывать файлы, фильтровать файлы и читать статистику пользователейimghost-token-list.mjslist
Удалять явно указанные файлыimghost-token-delete.mjsdelete
Редактировать сведения о файлах, теги и списки, перемещать, переименовывать, создавать папки, блокировать IP и создавать или удалять краткосрочные Token для загрузкиimghost-token-manage.mjsmanage
Редактировать каналы загрузки, настройки безопасности, настройки страниц, прочие настройки и федеративные связиСкрипты управления конфигурациейmanage

imghost-token-manage.mjs не загружает файлы, не показывает список файлов и не удаляет файлы. Если нужно найти fileId, сначала используйте скрипт списков для фильтрации файлов. Если нужно удалить файл, передайте конкретный fileId скрипту удаления.

Общие параметры ​

ПараметрОбязателенОписание
--base-url <url>ДаАдрес ImgHost, например https://image.ai6.me
--token <token>ДаAPI Token; можно использовать переменную окружения IMGHOST_API_TOKEN
--retries <n>НетЧисло повторов при временных ошибках; по умолчанию 3
--timeout-ms <n>НетТаймаут одного запроса; по умолчанию 180000
--output <pretty|json>НетФормат вывода; по умолчанию pretty. Для программной обработки лучше использовать json
--save-response <path>НетСохраняет итоговый результат в JSON-файл
--batch-size <n>НетКоличество элементов, обрабатываемых одним пакетным запросом; по умолчанию 15, максимум 15
--applyНетДействительно выполняет запись; без него показывается только предварительный результат
-h / --helpНетПоказывает справку скрипта

Сначала подтвердите fileId ​

Большинству действий скрипта управления файлами нужен fileId. Сначала его можно найти через скрипт списков:

powershell
node imghost-token-list.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --files `
  --dir "test4" `
  --count 10 `
  --output json

Поле name в результате обычно является тем fileId, который можно передать скрипту управления файлами.

Метаданные файла ​

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

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --set-metadata `
  --file-id "photos/2026/a.jpg" `
  --file-name "cover.jpg" `
  --read-source backup

После проверки предварительного результата сохраните изменение:

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --set-metadata `
  --file-id "photos/2026/a.jpg" `
  --file-name "cover.jpg" `
  --read-source backup `
  --apply

Параметры метаданных файла ​

ПараметрОписание
--set-metadataИзменяет метаданные одного файла
--file-id <id>ID файла, который нужно изменить
--file-name <name>Новое отображаемое имя в панели
--read-source <primary|backup>Источник чтения. primary — основной источник, backup — резервный источник

Передайте хотя бы один параметр: --file-name или --read-source.

Метки модерации ​

Метки модерации соответствуют возрастной классификации файла. Можно сначала прочитать текущую метку, а затем изменить ее.

Прочитать метку модерации:

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --get-label `
  --file-id "photos/2026/a.jpg"

Установить метку модерации:

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --set-label `
  --file-id "photos/2026/a.jpg" `
  --label r12 `
  --apply

Параметры меток модерации ​

ПараметрОписание
--get-labelЧитает метку модерации одного файла
--set-labelИзменяет метку модерации одного файла
--file-id <id>ID файла
--label <value>Значение метки: all-ages, r12, r16, r18, None

Теги файлов ​

Теги файлов используются для добавления к файлам поисковых рабочих меток. Скрипт поддерживает чтение, замену, добавление и удаление тегов, а также пакетную обработку нескольких файлов.

Прочитать теги файла:

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --get-tags `
  --file-id "photos/2026/a.jpg"

Добавить теги:

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --add-tags `
  --file-id "photos/2026/a.jpg" `
  --tag "cover" `
  --tag "2026" `
  --apply

Удалить теги:

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --remove-tags `
  --file-id "photos/2026/a.jpg" `
  --tag "cover" `
  --apply

Заменить теги:

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --set-tags `
  --file-id "photos/2026/a.jpg" `
  --tag "archive" `
  --tag "public" `
  --apply

Добавить теги пакетно:

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --batch-tags `
  --file-id "photos/2026/a.jpg" `
  --file-id "photos/2026/b.jpg" `
  --tag-action add `
  --tag "batch-test" `
  --apply

Параметры тегов файлов ​

ПараметрОписание
--get-tagsЧитает теги одного файла
--set-tagsЗаменяет теги одного файла
--add-tagsДобавляет теги к одному файлу
--remove-tagsУдаляет теги из одного файла
--batch-tagsУстанавливает, добавляет или удаляет теги пакетно
--file-id <id>ID файла; в пакетных действиях можно передавать несколько раз
--tag <tag>Значение тега; можно передавать несколько раз
--tags-json <path>Читает массив тегов из JSON-файла
--tag-action <set|add|remove>Пакетное действие с тегами

Пример содержимого файла --tags-json:

json
["cover", "2026", "public"]

Статус черного и белого списка ​

Статус списка определяет поведение контроля доступа к файлу в режиме публичного доступа. Его можно изменить для одного файла или пакетно.

Добавить один файл в белый список:

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --set-list-type `
  --file-id "photos/2026/a.jpg" `
  --list-type White `
  --apply

Пакетно добавить файлы в черный список:

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --batch-list-type `
  --file-id "photos/2026/a.jpg" `
  --file-id "photos/2026/b.jpg" `
  --list-type Block `
  --apply

Вернуть статус списка по умолчанию:

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --set-list-type `
  --file-id "photos/2026/a.jpg" `
  --list-type None `
  --apply

Параметры черного и белого списка ​

ПараметрОписание
--set-list-typeИзменяет статус списка одного файла
--batch-list-typeПакетно изменяет статус списка файлов. Один запрос обрабатывает не больше 15 файлов
--file-id <id>ID файла; в пакетных действиях можно передавать несколько раз
--list-type <None|White|Block>None — статус по умолчанию, White — белый список, Block — черный список

Перемещение файлов ​

Перемещение переносит один или несколько файлов в целевой каталог. Backend обрабатывает не больше 15 файлов за один запрос. Скрипт автоматически делит работу по --batch-size и выполняет запросы последовательно.

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --move `
  --file-id "photos/2026/a.jpg" `
  --file-id "photos/2026/b.jpg" `
  --target-path "archive/2026" `
  --apply

Параметры перемещения ​

ПараметрОписание
--moveПеремещает файлы
--file-id <id>ID файла для перемещения; можно передавать несколько раз
--target-path <dir>Целевой каталог
--batch-size <n>Количество файлов, перемещаемых одним запросом; по умолчанию 15, максимум 15

Переименование или изменение пути ​

Переименование использует явный старый ID файла и новый ID файла. Новый ID может изменить только имя файла или одновременно изменить каталог.

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --rename `
  --old-file-id "photos/2026/a.jpg" `
  --new-file-id "photos/2026/a-renamed.jpg" `
  --apply

Для пакетного переименования повторяйте --old-file-id и --new-file-id:

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --rename `
  --old-file-id "photos/2026/a.jpg" `
  --new-file-id "archive/2026/a.jpg" `
  --old-file-id "photos/2026/b.jpg" `
  --new-file-id "archive/2026/b.jpg" `
  --apply

Также можно записать соответствия в JSON-файл:

json
[
  {
    "oldFileId": "photos/2026/a.jpg",
    "newFileId": "archive/2026/a.jpg"
  },
  {
    "oldFileId": "photos/2026/b.jpg",
    "newFileId": "archive/2026/b.jpg"
  }
]
powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --rename `
  --items-json ".\rename-items.json" `
  --apply

Параметры переименования ​

ПараметрОписание
--renameПереименовывает или меняет пути по явному соответствию
--old-file-id <id>Исходный ID файла; можно передавать несколько раз
--new-file-id <id>Новый ID файла; можно передавать несколько раз, количество должно совпадать с --old-file-id
--items-json <path>JSON-массив. Каждый элемент имеет вид { "oldFileId": "...", "newFileId": "..." }
--batch-size <n>Количество переименований, обрабатываемых одним запросом; по умолчанию 15, максимум 15

Создание папок ​

Каталоги ImgHost выводятся из путей файлов, поэтому настоящих пустых каталогов нет. При создании папки скрипт создает в целевом каталоге файл-заполнитель 0.md, чтобы этот каталог отображался в управлении файлами и статистике каталогов.

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --create-folder `
  --parent-directory "photos" `
  --folder-name "2026" `
  --apply

Параметры создания папки ​

ПараметрОписание
--create-folderСоздает файл-заполнитель каталога
--parent-directory <dir>Родительский каталог; для корня передайте пустую строку
--folder-name <name>Имя новой папки

Блокировка и восстановление IP загрузки ​

С разрешением управления можно добавить IP в список запрета загрузки или удалить его из этого списка. Это влияет на будущие загрузки с этого IP, но не удаляет файлы, уже загруженные с этого адреса.

Заблокировать IP загрузки:

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --block-ip "67.159.48.149" `
  --apply

Восстановить IP загрузки:

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --allow-ip "67.159.48.149" `
  --apply

Посмотреть текущий список IP, которым запрещена загрузка:

powershell
node imghost-token-list.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --blocked-ips

Параметры управления IP ​

ПараметрОписание
--block-ip <ip>Добавляет IP в список запрета загрузки
--allow-ip <ip>Удаляет IP из списка запрета загрузки

Создание и удаление краткосрочных Token для загрузки ​

Разрешение управления может создавать краткосрочные Token только для загрузки. У такого Token всегда есть только разрешение upload, autoDelete всегда равно true, а максимальный срок действия составляет 1 день.

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --create-upload-token `
  --name "Temporary Upload Token" `
  --owner "upload-bot" `
  --default-upload-channel telegram `
  --expires-in-minutes 20 `
  --apply `
  --output json

Также можно напрямую передать временную метку в миллисекундах:

powershell
$expiresAt = [DateTimeOffset]::UtcNow.AddHours(12).ToUnixTimeMilliseconds()

node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --create-upload-token `
  --name "Upload Token valid for one day" `
  --owner "upload-bot" `
  --default-upload-channel telegram `
  --expires-at $expiresAt `
  --apply

При удалении краткосрочного Token для загрузки нужно передать id, возвращенный API создания. Управляющий Token может удалять только Token, которые соответствуют этим условиям:

УсловиеТребование
Разрешениеpermissions содержит только upload
АвтоудалениеautoDelete=true
Срок действияexpiresAt - createdAt <= 24 часа

Удалить краткосрочный Token для загрузки:

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --delete-upload-token `
  --token-id "mqt4jqokc85be80d1f0f47078e848a77d6c1aa6e" `
  --apply

Управляющий Token не может удалять обычные Token, долгосрочные Token, Token с разрешениями list / delete / manage, а также Token для загрузки со сроком действия больше 1 дня. Такие Token по-прежнему нужно обрабатывать в панели администратора в браузере.

Параметры краткосрочного Token для загрузки ​

ПараметрОписание
--create-upload-tokenСоздает краткосрочный Token только для загрузки
--delete-upload-tokenУдаляет подходящий краткосрочный Token только для загрузки
--name <name>Имя Token
--owner <owner>Описание владельца Token
--default-upload-channel <key>Канал загрузки по умолчанию. Это должен быть реальный канал, например telegram, s3 или github
--expires-in-minutes <n>Минуты до истечения срока от текущего времени. Максимум 1440
--expires-at <ms>Абсолютное время истечения срока в виде миллисекундной временной метки. Максимум 24 часа от текущего времени
--token-id <id>ID краткосрочного Token для загрузки, который нужно удалить

Краткосрочные Token для загрузки позволяют только загружать файлы. В тестах краткосрочный Token с permissions=["upload"] отклонялся при доступе к API списков, управления файлами и удаления.

После истечения срока Token с autoDelete=true очищается, когда backend проверяет и обнаруживает, что он истек. Чтение списка API Token также очищает истекшие Token, у которых autoDelete равно true.

Соответствие API ​

ДействиеМетодAPI
Изменить метаданные файлаPATCH/api/manage/metadata/{fileId}
Прочитать метку модерацииGET/api/manage/label/{fileId}
Изменить метку модерацииPOST/api/manage/label/{fileId}
Прочитать теги файлаGET/api/manage/tags/{fileId}
Изменить теги файлаPOST/api/manage/tags/{fileId}
Пакетно изменить теги файлаPOST/api/manage/tags/batch
Изменить статус спискаPOST/api/manage/listType/{fileId}
Пакетно изменить статус спискаPOST/api/manage/listType/batch
Переместить или переименоватьPOST/api/manage/relocate/batch
Создать папкуPOST/api/manage/folder/create
Заблокировать IP загрузкиPOST/api/manage/cusConfig/blockip
Восстановить IP загрузкиPOST/api/manage/cusConfig/whiteip
Создать краткосрочный Token для загрузкиPOST/api/manage/apiTokens
Удалить краткосрочный Token для загрузкиDELETE/api/manage/apiTokens?id={tokenId}

Скрипт автоматически добавляет:

text
Authorization: Bearer your API Token

Формат вывода ​

Вывод pretty по умолчанию подходит для чтения человеком. Если результат должен обрабатывать другой программный код, используйте --output json:

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --get-tags `
  --file-id "photos/2026/a.jpg" `
  --output json

Также можно сохранить полный результат:

powershell
node imghost-token-manage.mjs `
  --base-url "https://your-domain" `
  --token "your API Token" `
  --get-tags `
  --file-id "photos/2026/a.jpg" `
  --output json `
  --save-response ".\manage-result.json"

Пакетное перемещение, пакетное переименование и пакетные действия со списками разбирают поток прогресса NDJSON от backend и суммируют количество событий, статус завершения и сведения об ошибках.

Частые вопросы ​

Почему команда ничего не изменила ​

Операции записи по умолчанию работают в режиме предварительного просмотра. После проверки предварительного результата добавьте --apply, чтобы действительно сохранить изменение.

Может ли этот скрипт загружать, показывать или удалять файлы ​

Нет. Для загрузки используйте скрипты загрузки, для списков и фильтрации — скрипт списков, для удаления конкретных файлов — скрипт удаления. Скрипт управления файлами выполняет только легкие действия с разрешением manage.

Как узнать, какой fileId передать ​

Сначала найдите файлы через imghost-token-list.mjs --files. Поле name в результате обычно является ID файла, то есть значением для --file-id.

Сколько файлов может обработать одна пакетная операция ​

Backend обрабатывает не больше 15 файлов за один запрос. По умолчанию скрипт использует --batch-size 15; если передать меньшее значение, он автоматически разделит работу на несколько последовательных запросов.

Можно ли создать действительно пустую папку ​

Каталоги ImgHost выводятся из путей файлов, поэтому настоящих пустых папок нет. --create-folder создает файл-заполнитель 0.md, чтобы папка отображалась в управлении файлами и статистике каталогов.

Как долго может действовать краткосрочный Token для загрузки ​

Максимум 1 день, то есть 1440 минут. Если срок превышает этот предел, скрипт отклонит его локально, а backend также вернет API_TOKEN_MANAGE_CREATE_EXPIRES_AT_TOO_LONG.

Будет ли краткосрочный Token для загрузки автоматически удален после истечения срока ​

Он очищается автоматически, но не немедленной плановой задачей. Истекший Token очищается при следующей проверке. Чтение списка API Token также очищает истекшие Token с autoDelete=true.

Released as user documentation for ImgHost.