Zpětná vazba k vašim překladům málokdy přijde jako kliknutí v dashboardu. Spíš je to řádek ve vašem nástroji podpory, poznámka od hodnotitele nebo položka ve vaší QA frontě – „nepřekládejte název produktu“, „v němčině používejte formální styl“. API pro návrhy engine převádí takový volný text na změny engine přímo z kódu: pošlete zpětnou vazbu jako text, platforma ji vyhodnotí a vrátí vám konkrétní, strukturované úpravy glosáře, instrukcí nebo hlasu značky vašeho engine, které pak můžete aplikovat.
Jde o programovou obdobu funkce v dashboardu. Tam se návrhy generují automaticky, když vaši AI hodnotitelé udělí překladu nízké skóre; tady dodáváte signál jako text vy. V obou případech je výstup stejný – čekající návrhy, které zkontrolujete a aplikujete.
Celý proces má dvě části. Generování je asynchronní – předáte zpětnou vazbu a platforma ji na pozadí vyhodnotí, takže u engine přibudou čekající návrhy. Kontrola je synchronní – vypíšete si čekající návrhy, přečtete si, co který navrhuje, a každý z nich aplikujete nebo zamítnete. Tato stránka pokrývá obojí. Pokud vás zajímá práce v dashboardu – automatické generování z nízkých skóre kontroly, karta Suggestions, notifikace – podívejte se na Návrhy engine.
Konfigurační endpoint, ne překladový
Tyto endpointy čtou a mění konfiguraci engine – jeho glosář, instrukce a hlas značky. Vztahují se vždy ke konkrétnímu engine podle jeho :id a ověřují se stejným X-API-Key s rozsahem organizace jako zbytek API. Nikdy nepřekládají obsah ani neupravují minulé překlady; aplikovaný návrh se projeví až při dalším překladu engine.
Ověření
Předejte svůj API klíč v hlavičce X-API-Key. Klíče mají rozsah organizace a dávají přístup ke každému engine v organizaci. Podrobnosti najdete v Authentication a chybový model, který sdílejí všechny zdejší endpointy, v Errors and status codes.
Generování ze zpětné vazby#
POST /engines/:id/suggestions/from-textPošlete prostý textový popis toho, co engine dělá špatně. Platforma vyhodnotí tento text spolu s aktuální konfigurací engine a navrhne atomické úpravy – znovu nenavrhne něco, co už engine obsahuje. Generování probíhá asynchronně, takže volání se vrátí hned po přijetí úlohy, ne až ve chvíli, kdy jsou návrhy připravené.
| Parametr | Typ | Popis |
|---|---|---|
id (cesta) | string | Engine, pro který se mají vygenerovat návrhy. |
text | string | Volně psaná zpětná vazba k výstupu engine. 1–10 000 znaků; musí obsahovat alespoň jeden jiný znak než mezeru. |
const response = await fetch(
`https://api.lingo.dev/engines/${engineId}/suggestions/from-text`,
{
method: "POST",
headers: {
"X-API-Key": process.env.LINGO_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
text: "Our German (de-DE) translations keep using the informal 'du'. For our B2B audience they must always use the formal 'Sie'.",
}),
},
);
const { enqueued } = await response.json();
console.log(enqueued); // true – generation accepted, running in the background{ "enqueued": true }enqueued: true znamená, že platforma úlohu přijala, ne že už návrhy existují. Generování probíhá v jednom kroku na pozadí – načte váš text, vyhodnotí konfiguraci, odstraní duplicity vůči tomu, co už v engine je, a uloží vše, co navrhne. Je zcela legitimní, že běh nenavrhne nic (zpětná vazba byla vágní nebo to engine už pokrývá). Výsledky si o chvíli později přečtete pomocí výpisu návrhů engine.
Prázdná zpětná vazba se odmítá
text musí obsahovat skutečnou zprávu. Prázdný řetězec nebo řetězec obsahující jen bílé znaky se odmítne odpovědí 400 – není tiše převeden na jiný typ požadavku. Pošlete něco, nad čím model může skutečně uvažovat.
Místo toho generujte ze skóre kontroly
Stejný spouštěč nízkého skóre, který pohání dashboard, je dostupný i z kódu: POST /engines/:id/suggestions/generate (prázdné tělo) požádá platformu, aby navrhla úpravy z nedávných nízko hodnocených AI hodnocení engine místo z textu. Stejná odpověď { "enqueued": true }, stejné čekající návrhy. Sáhněte po from-text, když máte konkrétní psanou zpětnou vazbu; použijte generate, když chcete vytáhnout návrhy z toho, co už vaši hodnotitelé označili.
Výpis čekajících návrhů#
GET /engines/:id/suggestionsVrací návrhy engine – výsledek jakéhokoli běhu generování, ať už spuštěného z textu, ručním tlačítkem nebo automaticky z nízkých skóre kontroly. Každá položka je navržená úprava s připojeným zdůvodněním.
[
{
"id": "egs_A1b2C3d4E5f6G7h8",
"ownerOrganizationId": "org_X1y2Z3a4B5c6D7e8",
"ownerEngineId": "eng_X1y2Z3a4B5c6D7e8",
"actionType": "add_instruction",
"targetKind": "instruction",
"targetId": null,
"targetLocale": "de-DE",
"payload": { "instruction": "Use the formal 'Sie' form in all German translations; never use the informal 'du'." },
"reasoning": "Feedback states the B2B audience requires formal address, but the engine has no instruction enforcing it.",
"sourceReviewLogIds": [],
"status": "pending",
"appliedTargetId": null,
"createdAt": "2026-06-18T10:30:00.000Z"
}
]| Pole | Popis |
|---|---|
id | Identifikátor návrhu s prefixem egs_. Předejte ho do apply nebo dismiss. |
actionType | Jedna z hodnot add_glossary_item, update_glossary_item, add_instruction, update_instruction, add_brand_voice, update_brand_voice. |
targetKind | Část engine, které se úprava týká: glossary_item, instruction nebo brand_voice. |
targetId | U akce update_* jde o ID položky, která se má změnit (gli_ / ins_ / bvc_). U akce add_* je to null. |
targetLocale | Jazyk, pro který návrh platí. |
payload | Úprava připravená k aplikaci. Její pole závisejí na targetKind – je to přesně to, co operace create/update potřebuje, a proto aplikace nevyžaduje žádný další vstup z vaší strany. |
reasoning | Krátké vysvětlení, proč je tato úprava navržena. |
sourceReviewLogIds | Logy kontrol, jejichž selhání vedla k návrhu (ID esrl_); prázdné, když návrh vzešel z textové zpětné vazby. |
status | pending, applied nebo dismissed. |
appliedTargetId | Položka vytvořená nebo aktualizovaná po aplikaci návrhu; dokud návrh čeká, je to null. |
Právě payload dělá aplikaci nenáročnou: navržená změna je už při generování plně strukturovaná, takže její aplikace je prostý zápis, ne další kolo AI. Rozhodujete vy; platforma znovu neuvažuje.
Aplikace návrhu#
POST /engine-suggestions/:id/applyZapíše navrženou změnu do engine a označí návrh jako applied. Jde o deterministický zápis payload, který už jste viděli ve výpisu – neprobíhá žádné druhé volání AI, takže to, co jste zkontrolovali, je přesně to, co se zapíše. Návrh add_* vytvoří novou položku glosáře, instrukci nebo hlas značky; návrh update_* změní existující položku určenou pomocí targetId.
const response = await fetch(
`https://api.lingo.dev/engine-suggestions/${suggestionId}/apply`,
{
method: "POST",
headers: { "X-API-Key": process.env.LINGO_API_KEY },
},
);
const applied = await response.json();
console.log(applied.status); // "applied"
console.log(applied.appliedTargetId); // "ins_…" – the instruction it just createdOdpovědí je návrh ve stavu applied, přičemž appliedTargetId teď odkazuje na skutečnou položku engine, kterou vytvořil nebo aktualizoval. Od této chvíle je tato položka běžnou položkou glosáře, instrukcí nebo hlasu značky – můžete ji otevřít, upravit nebo smazat jako jakoukoli jinou.
Aplikace mění konfiguraci, ne minulé překlady
Aplikace upraví konfiguraci engine. Obsah, který už byl přeložen, si ponechá svůj současný výstup; změna se projeví při příštím překladu engine. Aplikace sama o sobě nic znovu nelokalizuje.
Zamítnutí návrhu#
POST /engine-suggestions/:id/dismissZahodí návrh, který nechcete, označí ho jako dismissed a ponechá engine beze změny. Použijte to ve chvíli, kdy návrh pro váš produkt nedává smysl – engine se nezmění a návrh se přestane zobrazovat jako čekající.
await fetch(
`https://api.lingo.dev/engine-suggestions/${suggestionId}/dismiss`,
{
method: "POST",
headers: { "X-API-Key": process.env.LINGO_API_KEY },
},
);
// The suggestion is now "dismissed"; nothing was written to the engine.Celý proces od začátku do konce#
Tyto čtyři endpointy tvoří jeden cyklus, který můžete kompletně řídit z kódu: dodat zpětnou vazbu, přečíst si, co bylo navrženo, a potvrdit úpravy, se kterými souhlasíte.
Generování
POST …/suggestions/from-text s vaší psanou zpětnou vazbou (nebo …/suggestions/generate, pokud chcete čerpat z nízkých skóre kontroly). Odpověď { "enqueued": true } dostanete okamžitě.
Výpis
O chvíli později použijte GET /engines/:id/suggestions a přečtěte si čekající návrhy, každý se svým payload a reasoning.
Aplikovat nebo zamítnout
POST /engine-suggestions/:id/apply pro potvrzení úpravy nebo …/dismiss pro její zahazení. Aplikace se projeví při příštím překladu engine.
