HeyLingo

API HeyLingo

REST и JSON. Ключ передаётся в заголовке Authorization: Bearer hl_… (или X-Api-Key). Ключ выдаёт администратор сервиса.

Сообщение чата: перевод и фильтр

Главный метод для игр и чатов. Возвращает исходник и перевод, оба уже с замаскированным матом.

curl -X POST https://lingo.heyho.online/api/v1/chat \
  -H "Authorization: Bearer hl_ВАШ_КЛЮЧ" \
  -H "Content-Type: application/json" \
  -d '{"text": "го катку, бро", "to": "en", "filter": "mat"}'
{
  "original": "го катку, бро",
  "translation": "let's play a match, bro",
  "from": "ru", "to": "en", "filter": "mat",
  "flagged": false,
  "hitsInOriginal": [], "hitsInTranslation": []
}

Методы

МетодТелоЧто делает
POST /api/v1/chattext, to, filterперевод и фильтр исходника и перевода
POST /api/v1/translatetext, to, filterтолько перевод; фильтр по умолчанию выключен
POST /api/v1/filtertext, filterтолько маскирование, без перевода
GET /api/v1/slang?word=кринж—значения сленгового слова
GET /api/v1/usage—использование и квоты ключа (в квоту не считается)

to: en, ru или auto (на другой язык). filter: off, mat, strict. Текст — до 5000 символов.

Квоты

У каждого ключа свои лимиты: запросы и символы в сутки (UTC) и запросы в секунду. Узнать их и текущее использование — GET /api/v1/usage (0 — без лимита). В каждом ответе есть заголовки X-RateLimit-Limit и X-RateLimit-Remaining (у безлимитного ключа — unlimited). При превышении — код 429 и Retry-After в секундах.

Ошибки

Всегда JSON: {"error": "исчерпан дневной лимит запросов (1000)", "status": 429}. 401 — нет или неверный ключ, 403 — ключ отключён, 400 — неверный запрос, 429 — квота.

Java

HttpClient http = HttpClient.newHttpClient();
HttpRequest req = HttpRequest.newBuilder(URI.create("https://lingo.heyho.online/api/v1/chat"))
    .header("Authorization", "Bearer " + System.getenv("HEYLINGO_KEY"))
    .header("Content-Type", "application/json")
    .POST(HttpRequest.BodyPublishers.ofString("{\"text\": \"привет, бро\", \"to\": \"en\"}"))
    .build();
String json = http.send(req, HttpResponse.BodyHandlers.ofString()).body();

JavaScript

const r = await fetch("https://lingo.heyho.online/api/v1/chat", {
  method: "POST",
  headers: { "Authorization": "Bearer " + KEY, "Content-Type": "application/json" },
  body: JSON.stringify({ text: "привет, бро", to: "en", filter: "strict" })
});
const { translation, original } = await r.json();

Ключ в браузере видит любой посетитель. Для сайта вызывай API со своего сервера.

Без сервера: библиотека Lingo

То же самое работает и внутри твоего Java-приложения без сети: библиотека dev.lingo:lingo, модель уже внутри jar.

try (Lingo lingo = Lingo.create()) {
    Lingo.Message m = lingo.chat("го катку, бро", Lang.EN, Level.MAT);
}