Яндекс Диск REST API: Скопировать, переместить или удалить папку

Сценарий из mcp-everything. Актуально на 2026-10-24.

Разложить файлы по папкам, архивировать старое, очистить место.

  1. Скопируй: POST /v1/disk/resources/copy с from и path. Перемести: POST /v1/disk/resources/move с теми же параметрами. Удали: DELETE /v1/disk/resources с path (permanently = true — без Корзины).
  2. Файл или пустая папка обрабатываются сразу (201 или 204). Для непустой папки придёт 202 и ссылка на операцию.
  3. Проверяй статус: GET /v1/disk/operations/{operation_id} — success, in-progress или failed (тогда повтори исходный запрос).
  4. Загрузить файл прямо из интернета на Диск можно через POST /v1/disk/resources/upload с url и path — это тоже длительная операция.
OP=$(curl -s -X POST -G https://cloud-api.yandex.net/v1/disk/resources/move -H "$H" \
  --data-urlencode 'from=disk:/Отчёты/2025' --data-urlencode 'path=disk:/Архив/Отчёты 2025' | jq -r .href)
curl -s "$OP" -H "$H"   # {"status": "in-progress"} → {"status": "success"}

Базовые URL

Авторизация

Тип: OAuth 2.0

OAuth-токен Яндекс ID передаётся в заголовке Authorization с типом токена перед значением. Для получения токена создают OAuth-приложение с правами Диска (cloud_api:disk.write, cloud_api:disk.read, cloud_api:disk.app_folder, cloud_api:disk.info) и открывают https://oauth.yandex.ru/authorize?response_type=token&client_id=<ClientID>.

Заголовки Accept и Content-Type — только application/json.

Authorization: OAuth 0c4181a7c2cf4521964a72ff57a34a07

Методы сценария

POST /v1/disk/resources/upload — Загрузка файла из интернета

Асинхронно скачивает файл по URL на Диск; ответ 202 Accepted со ссылкой на статус операции.

Параметр Где Тип Обяз. Описание
url query string да Адрес файла, в URL-кодировке
path query string да Путь на Диске, в URL-кодировке
fields query string нет Ключи ответа
disable_redirects query boolean нет Запретить переход по редиректу, по умолчанию false

POST /v1/disk/resources/copy — Копирование

Файл или пустая папка — синхронно (201 Created); непустая папка — асинхронно (202 Accepted, ссылка на статус операции).

Параметр Где Тип Обяз. Описание
from query string да Путь к копируемому ресурсу
path query string да Путь к копии, до 32760 символов
overwrite query boolean нет Перезаписать ресурсы с совпадающими именами, по умолчанию false
force_async query boolean нет Выполнить асинхронно
fields query string нет Ключи ответа

POST /v1/disk/resources/move — Перемещение

Ответы такие же, как у копирования.

Параметр Где Тип Обяз. Описание
from query string да Текущий путь к ресурсу
path query string да Новый путь, до 32760 символов
overwrite query boolean нет Перезаписать, по умолчанию false
force_async query boolean нет Выполнить асинхронно
fields query string нет Ключи ответа

DELETE /v1/disk/resources — Удаление

Файл или пустая папка — 204 No Content; непустая папка — 202 Accepted со ссылкой на статус операции.

Параметр Где Тип Обяз. Описание
path query string да Путь к ресурсу
permanently query boolean нет Удалить без Корзины, по умолчанию false
md5 query string нет MD5 файла для проверки, что удаляется нужный файл
force_async query boolean нет Выполнить асинхронно
fields query string нет Ключи ответа

GET /v1/disk/operations/{operation_id} — Статус операции

Статусы: success, failed (повторите исходный запрос), in-progress.

Параметр Где Тип Обяз. Описание
operation_id path string да Идентификатор операции из ответа длительного запроса

Пример ответа:

{
  "status":"success"
}

Нюансы

Другие сценарии


Если этого недостаточно — официальная документация: https://yandex.ru/dev/disk-api/doc/ru/ Вся интеграция одним документом: https://mcp-everything.ru/integrations/yandex-disk.md