Egyszerűen használható fordító API AI háttérrel. Tetszőleges külső rendszerből HTTP POST-tal hívható, és a beküldött szöveget vagy tartalmi objektumot fixen ezekre a nyelvekre fordítja: en, ro, sk, es, de, uk.
Egyszerű használat AI háttér JSON API Bearer token szükségesGyors linkek: https://oxygen-translate.datalight.hu/api/health | https://oxygen-translate.datalight.hu/openapi.json
A szolgáltatás célja, hogy a lehető legegyszerűbben lehessen fordítást kérni. Nincs szükség a háttérrendszer ismeretére, elég elküldeni egy JSON body-t a POST /api/translate végpontra, és a szolgáltatás visszaadja ugyanazt a tartalmat a beállított célnyelveken.
A működés lépésről lépésre:
source és translations blokkokkal.| Metódus | Útvonal | Cél | Auth |
|---|---|---|---|
| GET | / | Ez a részletes, ember által olvasható dokumentáció. | nem kell |
| GET | /openapi.json | Részletes rendszerleírás az integrációhoz. | nem kell |
| GET | /api/health | Egyszerű healthcheck és futási metaadatok. | nem kell |
| POST | /api/translate | Fordítás kérése. | igen |
A POST /api/translate végpont Bearer tokennel védett.
Authorization: Bearer <TRANSLATE_API_TOKEN>
A hívó félnek semmilyen AI kulcsot vagy háttérmodellt nem kell ismernie. A technikai metaadatok csak admin tokennel látszanak.
Ha valaki a legrövidebb úton akarja integrálni:
POST kérést ide: https://oxygen-translate.datalight.hu/api/translateAuthorization headerben.content vagy text.translations.en, translations.ro, translations.sk, translations.es, translations.de, translations.uk ágaiban kapja meg.A szolgáltatás többféle bemenetet fogad el, hogy ne kelljen minden rendszert pontosan ugyanarra a JSON szerkezetre átállítani.
A legegyszerűbb forma, ha csak sima szöveg áll rendelkezésre.
{
"text": "Ide jön a szöveg.",
"language": "hu"
}
A content önmagában is elég; a title és a facebook_title opcionális.
{
"content": "Itt jön a teljes fordítandó szöveg.",
"language": "hu"
}
Ez jó akkor, ha a küldő rendszer már eleve objektumként kezeli a cikket vagy rekordot.
{
"item": {
"title": "Magyar cím",
"facebook_title": "Magyar Facebook cím",
"content": "A teljes magyar szöveg itt jön...",
"language": "hu",
"source_name": "Példa forrás",
"source_url": "https://pelda.hu/cikk",
"published_at": "2026-03-25T10:00:00Z"
}
}
| Mező | Kötelező | Megjegyzés |
|---|---|---|
text | nem | Használható akkor, ha csak sima fordítandó szöveg van. |
content | igen, ha nincs text | A tényleges fordítandó törzsszöveg. |
title | nem | Teljesen opcionális; ha nincs, üresen marad. |
facebook_title | nem | Teljesen opcionális; ha hiányzik és van cím, a fordított cím másolódhat ide. |
language | nem | Forrásnyelv. Ha nincs megadva, a szolgáltatás auto-ként kezeli. |
source_name | nem | Metaadat, változatlanul megy tovább a válaszba. |
source_url | nem | Metaadat, változatlanul megy tovább a válaszba. |
published_at | nem | Metaadat, változatlanul megy tovább a válaszba. |
category | nem | Ha van, passthrough mezőként visszakerül, de nem kötelező. |
A szolgáltatás a fordítandó szöveget ebben a sorrendben keresi:
item.contentcontenttextA forrásnyelvet ebben a sorrendben keresi:
source_languageitem.languagelanguageautoAlap limitértékek:
title: maximum 320 karakterfacebook_title: maximum 320 karaktercontent: maximum 12000 karakter
A szolgáltatás minden kérést ugyanarra a belső szerkezetre alakít. Ezután csak a title, facebook_title
és content mezőket küldi tovább fordításra. A metaadatok nem módosulnak.
Fontos szabályok:
A sikeres válasz három fő részből áll:
source: a validált és normalizált eredeti bemenettranslations: a beállított célnyelvek fordításaimeta: kísérő adatok, például modell és kérésazonosító{
"ok": true,
"source": {
"title": "Példa cím",
"facebook_title": "Példa cím",
"content": "Eredeti szöveg",
"language": "hu"
},
"translations": {
"en": {
"title": "Example title",
"facebook_title": "Example title",
"content": "Translated English text",
"language": "en"
},
"ro": { "...": "..." },
"sk": { "...": "..." },
"es": { "...": "..." },
"de": { "...": "..." },
"uk": { "...": "..." }
}
}
Admin tokennel a válasz meta blokkot is tartalmaz a provider, modell és usage adatokkal.
Minden hiba egységes JSON formában jön vissza:
{
"ok": false,
"error": {
"code": "validation_error",
"message": "item.content or text is required"
},
"meta": {
"request_id": "..."
}
}
| HTTP | Kód | Tipikus ok |
|---|---|---|
| 400 | invalid_request | Üres body vagy a body nem olvasható. |
| 400 | invalid_json | A kérés törzse nem érvényes JSON. |
| 400 | validation_error | Hiányzik a content vagy túl hosszú valamelyik mező. |
| 401 | unauthorized | Hiányzó vagy hibás Bearer token. |
| 413 | payload_too_large | A body túl nagy. |
| 429 | cf_ai_request_neuron_limit_exceeded | Egyetlen kérés becsült Cloudflare AI Neuron költsége túl nagy. |
| 429 | daily_cf_ai_neuron_limit_exceeded | A napi Cloudflare AI Neuron keret elfogyott vagy a modellválasz átlépné. |
| 429 | daily_ai_token_limit_exceeded | Az OpenAI fallback napi tokenkerete elfogyott vagy a modellválasz átlépné. |
| 503 | rate_limiter_unavailable | Az AI használati keret számlálója nem elérhető. |
| 502 | translation_failed | Cloudflare AI vagy OpenAI oldali hiba, illetve hibás upstream válasz. |
curl -X POST "https://oxygen-translate.datalight.hu/api/translate" \
-H "Authorization: Bearer <TRANSLATE_API_TOKEN>" \
-H "Content-Type: application/json" \
--data-binary @- <<'JSON'
{
"text": "Ez egy magyar minta szöveg.",
"language": "hu"
}
JSON
curl -X POST "https://oxygen-translate.datalight.hu/api/translate" \
-H "Authorization: Bearer <TRANSLATE_API_TOKEN>" \
-H "Content-Type: application/json" \
--data-binary @- <<'JSON'
{
"title": "Példa cím",
"facebook_title": "Példa cím",
"content": "Ez a teljes fordítandó szöveg.",
"language": "hu"
}
JSON
const response = await fetch("https://oxygen-translate.datalight.hu/api/translate", {
method: "POST",
headers: {
Authorization: "Bearer YOUR_TRANSLATE_API_TOKEN",
"Content-Type": "application/json",
},
body: JSON.stringify({
title: "Példa cím",
facebook_title: "Példa cím",
content: "Ez a teljes fordítandó szöveg.",
language: "hu"
}),
});
const data = await response.json();
if (!response.ok || !data.ok) {
throw new Error(data?.error?.message || "A fordítás nem sikerült");
}
console.log(data.translations.en.content);
import requests
payload = {
"text": "Ez egy magyar szöveg.",
"language": "hu",
}
response = requests.post(
"https://oxygen-translate.datalight.hu/api/translate",
headers={
"Authorization": "Bearer YOUR_TRANSLATE_API_TOKEN",
"Content-Type": "application/json",
},
json=payload,
timeout=60,
)
data = response.json()
if response.status_code != 200 or not data.get("ok"):
raise RuntimeError(data.get("error", {}).get("message", "A fordítás nem sikerült"))
print(data["translations"]["de"]["content"])
<?php
$payload = [
"text" => "Ez egy magyar szöveg.",
"language" => "hu",
];
$ch = curl_init("https://oxygen-translate.datalight.hu/api/translate");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer YOUR_TRANSLATE_API_TOKEN",
"Content-Type: application/json",
],
CURLOPT_POSTFIELDS => json_encode($payload, JSON_UNESCAPED_UNICODE),
]);
$raw = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$data = json_decode($raw, true);
title, facebook_title és content mező fordul.source_name, source_url, published_at változatlanul továbbmennek.meta.request_id értéket naplózni.