# Яндекс Диск REST API: Поделиться файлом по публичной ссылке

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

Отправить клиенту ссылку на документ или архив на Диске.

1. Опубликуй ресурс: PUT /v1/disk/resources/publish с path. Ответ 200 — объект Link на метаинформацию.
2. Публичная ссылка — в поле public_url: получи её через GET /v1/disk/resources с path и fields = public_url.
3. Чтобы закрыть доступ, сними публикацию — метод /v1/disk/resources/unpublish с тем же path.

```bash
curl -X PUT -G https://cloud-api.yandex.net/v1/disk/resources/publish -H "$H" --data-urlencode 'path=disk:/Договоры/договор-1042.pdf'
curl -s -G https://cloud-api.yandex.net/v1/disk/resources -H "$H" \
  --data-urlencode 'path=disk:/Договоры/договор-1042.pdf' -d fields=public_url | jq -r .public_url
```

## Базовые URL

- Боевой: `https://cloud-api.yandex.net`
- Загрузка и скачивание файлов идут через отдельные адреса, которые API возвращает в поле .: `href`

## Авторизация

Тип: 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
```

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

### GET /v1/disk/resources — Метаинформация о файле или папке

Для ресурса в Корзине — `GET /v1/disk/trash/resources`.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `path` | query | string | да | Путь к ресурсу, в URL-кодировке |
| `fields` | query | string | нет | Ключи ответа через запятую, вложенные — через точку |
| `limit` | query | integer | нет | Число вложенных ресурсов, по умолчанию 20 |
| `offset` | query | integer | нет | Сколько вложенных ресурсов пропустить |
| `preview_crop` | query | boolean | нет | Обрезать превью до квадрата, по умолчанию false |
| `preview_size` | query | string | нет | Размер превью: S–XXXL, ширина, высота или ШxВ |
| `sort` | query | string | нет | name, path, created, modified, size; дефис — обратный порядок |

### PUT /v1/disk/resources/publish — Публикация ресурса

Успех — `200 OK` и объект Link. Настройки доступа передаются в теле в объекте `public_settings`.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `path` | query | string | да | Путь к публикуемому ресурсу |
| `allow_address_access` | query | boolean | нет | Признак формата запроса, по умолчанию false |
| `public_settings` | body | object | нет | Настройки публичного доступа |

## Нюансы

- Пути передаются в URL-кодировке; `disk:/foo` и `/foo` — одна и та же папка.
- Длительные операции (копирование, перемещение, удаление непустых папок, загрузка из интернета) возвращают `202 Accepted` и объект Link на статус — статус нужно опрашивать самостоятельно.
- Объект Link: `href` (URL), `method` (HTTP-метод для него), `templated` (нужна ли подстановка параметров по RFC 6570).
- Ссылки на загрузку действуют 30 минут, ссылки на скачивание — ограниченное время.
- Один токен даёт одному приложению доступ к Диску одного пользователя; потерянный токен в кабинете не найти — запросите новый.

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

- [Загрузить файл на Диск](https://mcp-everything.ru/integrations/yandex-disk/scenarios/zagruzit-fayl-na-disk.md)
- [Скачать файл с Диска](https://mcp-everything.ru/integrations/yandex-disk/scenarios/skachat-fayl-s-diska.md)
- [Скопировать, переместить или удалить папку](https://mcp-everything.ru/integrations/yandex-disk/scenarios/skopirovat-peremestit-ili-udalit-papku.md)

---

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