Zpětná vazba k vašim překladům se jen málokdy objeví jako kliknutí v dashboardu. Častěji je to řádek ve vašem interním 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“. Engine Suggestions API 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í konkrétní, strukturované úpravy glosáře, pravidel nebo hlasu značky vašeho engine, které pak můžete použít.
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ář, pravidla a hlas značky. Vztahují se vždy k jednomu engine podle jeho :id a ověřují se stejným X-API-Key v rámci organizace jako zbytek API. Nikdy nepřekládají obsah ani neupravují minulé překlady; použitý návrh se v engine projeví až při příštím překladu.
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 rule 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 null je to add_*. |
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ý jste už viděli v seznamu – neprobíhá žádné druhé AI volání, takže se zapíše přesně to, co jste zkontrolovali. Návrh add_* vytvoří novou položku glosáře, pravidlo nebo hlas značky; návrh update_* upraví existující položku určenou v 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 rule 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 z ní běžná položka glosáře, pravidlo nebo hlas značky – můžete ji otevřít, upravit nebo smazat stejně 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.
