Главная/Провайдеры/Провайдеры и вендоры ENУКРРУС API-справочник (ReDoc) ↗

Провайдеры и вендоры

26 провайдеров, почему 106 строк консоли свернулись в них, и как выбирался исходящий код.

curl "https://languages.service.custom.mt/v1/providers"
curl "https://languages.service.custom.mt/v1/providers/deepl_api"
curl "https://languages.service.custom.mt/v1/providers/deepl_api/languages?effective=true"

Каталог

Коды провайдеров — те же, что в provider_credentials. Один идентификатор резолвит кред там и код языка здесь; вызывающему не нужно переводить между двумя схемами именования.

Вендор Провайдеры
OpenAI openai_api
Anthropic anthropic_api
Google Cloud google_translate, gemini_api
Microsoft Azure microsoft_translator
Amazon Web Services amazon_translate
DeepL deepl_api
Translated modernmt_api, lara_api
LanguageWire languagewire_api
SYSTRAN systran_translate
Tencent tencent_transmart
Alibaba Cloud alibaba_translate
Baidu baidu_translate
Naver papago_translate
Supertext supertext_translate
XL8 xl8_translate
Tarjama tarjama_mt
Tahrirchi tilmoch_api, sayqalchi_api
Widn.AI widn_tower_anthill, widn_tower_sugarloaf, widn_tower_vesuvius
Internal custom_finetuned_mt
Yandex Cloud yandex_translate
Pangeanic pangea_mt

Warning

in_credentials_catalog: false yandex_translate и pangea_mt несут маппинги консоли — у одного Yandex их 102, — но записи в provider_credentials ещё не имеют. Они оставлены здесь, чтобы существующий трафик продолжал резолвиться, и помечены в API, чтобы вызывающий видел: маппинг есть, контракта на креды за ним нет.

Почему 106 строк консоли стали 26

В таблице translation_provider консоли одна строка на модель: OpenAI GPT 4o-2024-11-20, OpenAI GPT 5-mini-2025-08-07, Gemini 2.5 Pro и так далее — плюс строки *_in_sys / *_out_sys, которые являются биллинговыми счётчиками, а не движками.

Строки моделей сворачиваются в провайдера API своего вендора, потому что поддержка языков — свойство эндпоинта вендора, а не чекпоинта за ним. provider_credentials уже трактует модель как поле конфигурации model_id под одним кредом, а дублировать таблицу на 130 языков для каждой модели означало бы 17 таблиц, которые надо держать синхронными для одного только OpenAI.

Биллинговые счётчики отброшены: они несут ссылки на региональные коды, скопированные из родительской модели, и их импорт удваивал бы каждый маппинг.

Для вызывающих ничего не ломается — каждый свёрнутый service_name остаётся алиасом провайдера:

curl ".../v1/resolve?provider=OpenAiGPT4o_2024_11_20_Provider&language=zh-CN"
# → { "provider": "openai_api", "code": "zh-CN", … }

AutoML-провайдеры консоли сворачиваются так же: GoogleAutoMLProvider адресует google_translate, LaraAutoMLProviderlara_api. Их коды идут в те же API вендоров.

Как выбирался исходящий код

Для 97 пар (провайдер, язык) консоль предлагала несколько кодов. Победитель выбирается так:

  1. флаг is_default консоли на региональном коде,
  2. равен собственному каноническому коду языка — когда конкурирует несколько написаний и одно из них то, как мы уже называем язык, отправлять другое означает расходиться без причины,
  3. каноничность BCP-47 (es-419 над ES-LA),
  4. самый новый легаси-провайдер, его выбравший, — строки более поздних моделей курировались свежее, чем образца 2023 года,
  5. наименьший id регионального кода — совпадает с .first() консоли при ничьих.

В отличие от канонического кода языка, здесь более короткий тег никогда не имеет преимущества сам по себе. Если API DeepL хочет zh-Hans и только zh-Hans — строка консоли, это говорящая, и есть факт; правило 2 срабатывает только когда несколько написаний действительно конкурируют.

Каждое написание-проигравший становится входящим алиасом, так что ничто, что резолвится сегодня, не перестаёт. Все 97 решений перечислены в data/seed/REPORT.md.

Явное против эффективного

# только пары, которые кто-то настроил
curl ".../v1/providers/deepl_api/languages"

# все языки, включая фолбэки — то, что провайдер действительно получит
curl ".../v1/providers/deepl_api/languages?effective=true"

У DeepL 3 явные строки и 348 эффективных. Это не пробел: базовым языкам строка не нужна, а региональные фолбэчатся по Fallback Policies. Полосы покрытия в админке показывают распределение по провайдерам.

Далее