# Ссылки

Когда человек отвечает боту фото, видео, аудио или файлом, а ответ записывается в переменную (переключатель «Записать ответ в пользовательскую переменную» в разделе [«Дополнительно»](https://support.watbot.ru/chatbots/blocks/messages#дополнительно) блока), в переменную попадает не сам файл, а короткая ссылка на него — вида `…/w/bK3x9`. Такая же короткая ссылка ведёт на файл [экспорта списка](https://support.watbot.ru/lists/import-export#экспорт-в-excel) бота в Excel.

Метод `decodeShortLink` превращает такую ссылку в прямую ссылку на файл — чтобы ваша система могла его скачать, не переходя по переадресации.

## decodeShortLink

Возвращает прямую ссылку на файл по короткой ссылке.

```endpoint
GET POST https://watbot.ru/api/v1/decodeShortLink
```

| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| `url` | строка | да | Короткая ссылка целиком, с `https://` и, если он есть, с параметром `?k=…`. Метод берёт из неё код после `/w/`; домен не проверяется |

```bash title="Запрос"
curl -X POST "https://watbot.ru/api/v1/decodeShortLink" \
  -H "Authorization: Bearer ВАШ_КЛЮЧ" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/w/bK3x9"}'
```

```json title="Ответ 200"
{
  "data": {
    "url": "https://files.example.com/bots/12345/passport-scan.jpg"
  }
}
```

```json title="Ответ 404"
{
  "error": "Короткая ссылка не найдена",
  "message": "Короткая ссылка не найдена"
}
```

Раскрываются только ссылки на файлы, и только те, что относятся к вашему боту или к вашему списку — в том числе к списку, заведённому в проекте, а не в боте. Короткие ссылки другого назначения метод не раскрывает. Просроченная ссылка не раскрывается, как и не открывается по переходу.

Ошибки метода (общие — в разделе [Ошибки](https://support.watbot.ru/api#ошибки)):

| Код | Когда | Ответ |
|---|---|---|
| `403` | Ссылка относится к боту или списку другого аккаунта или не привязана ни к боту, ни к списку | `{"error": "…", "message": "…"}` |
| `404` | Короткой ссылки с таким кодом нет, её срок истёк, не подошёл ключ `?k=` или удалён список, к которому она ведёт | `{"error": "…", "message": "…"}` |
| `422` | Ссылка ведёт не на файл | `{"error": "…", "message": "…"}` |
| `422` | `url` не передан, это не адрес или в нём нет пути `/w/код` | `{"message": "…", "errors": {"url": ["…"]}}` |
