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/chat | text, to, filter | перевод и фильтр исходника и перевода |
POST /api/v1/translate | text, to, filter | только перевод; фильтр по умолчанию выключен |
POST /api/v1/filter | text, 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);
}