# Yandex Translate API: Перевести тексты на нужный язык

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

Перевод описаний товаров, сообщений поддержки, интерфейса — пачкой строк за один запрос.

1. Создай сервисный аккаунт и API-ключ; передавай его в заголовке Authorization: Api-Key <ключ>. С пользовательским IAM-токеном нужно ещё передавать folderId в теле.
2. Отправь тексты: POST /translate/v2/translate с targetLanguageCode (например, en) и texts — массивом строк, суммарно до 10 000 символов.
3. Исходный язык определится автоматически; в ответе для каждой строки — text (перевод) и detectedLanguageCode.
4. Лимит — 20 вызовов в секунду и 1 млн символов в час: большие объёмы разбивай на пачки.

```bash
curl -X POST https://translate.api.cloud.yandex.net/translate/v2/translate \
  -H "Authorization: Api-Key $YANDEX_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"targetLanguageCode": "en", "texts": ["Кружка керамическая, 330 мл", "Можно мыть в посудомоечной машине"]}'
```

## Базовые URL

- Боевой: `https://translate.api.cloud.yandex.net`

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

Тип: Bearer-токен

- IAM-токен (пользовательский или сервисный аккаунт): `Authorization: Bearer <IAM-токен>`
- API-ключ (сервисный аккаунт): `Authorization: Api-Key <API-ключ>`

Пользовательский аккаунт авторизуется только IAM-токеном и обязательно передаёт `folderId` в теле запроса; для сервисного аккаунта `folderId` не указывается.

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

### POST /translate/v2/translate — Перевод текста

Пример тела:

В ответе — массив `translations`: `text` (перевод) и `detectedLanguageCode` (язык исходного текста).

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `targetLanguageCode` | body | string | да | Язык перевода, до 3 символов (обычно ISO 639-1) |
| `texts` | body | array | да | Строки для перевода, суммарно до 10 000 символов |
| `sourceLanguageCode` | body | string | нет | Язык исходного текста; нужен для перевода с глоссарием |
| `format` | body | string | нет | PLAIN_TEXT (по умолчанию) или HTML |
| `folderId` | body | string | нет | ID каталога; обязателен для пользовательского аккаунта |
| `model` | body | string | нет | ID пользовательской модели |
| `glossaryConfig.glossaryData.glossaryPairs` | body | array | нет | Пары глоссария: от 1 до 50 |
| `glossaryConfig.glossaryData.glossaryPairs[].sourceText` | body | string | да | Текст на исходном языке |
| `glossaryConfig.glossaryData.glossaryPairs[].translatedText` | body | string | да | Текст на целевом языке |
| `glossaryConfig.glossaryData.glossaryPairs[].exact` | body | boolean | нет | Точный перевод термина (нейроглоссарий) |
| `speller` | body | boolean | нет | Проверка орфографии |

Пример запроса:

```
{
    "folderId": "<идентификатор_каталога>",
    "texts": ["Hello", "World"],
    "targetLanguageCode": "ru"
}
```

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

```json
export API_KEY=<API-ключ>
curl \
  --request POST \
  --header "Content-Type: application/json" \
  --header "Authorization: Api-Key ${API_KEY}" \
  --data '@body.json' \
  "https://translate.api.cloud.yandex.net/translate/v2/translate"
```

## Нюансы

- Если `sourceLanguageCode` не передан, исходный язык определяется автоматически.
- Глоссарий передаётся только в теле запроса (`glossaryData`): до 50 пар и до 20 000 символов Unicode.
- Коды языков в основном ISO 639-1, но формат этим не ограничен; названия языков — на английском.

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

- [Перевести HTML с терминами из глоссария](https://mcp-everything.ru/integrations/yandex-translate/scenarios/perevesti-html-s-terminami-iz-glossariya.md)
- [Определить язык текста](https://mcp-everything.ru/integrations/yandex-translate/scenarios/opredelit-yazyk-teksta.md)

---

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