Entwicklerdokumentation

Deepglot integrieren

Source-basierte Referenz für WordPress, REST-API, Authentifizierung, Fehler, Webhooks und sichere Projektabläufe.

Schnellstart

  1. 1.Konto erstellen und im Dashboard ein Projekt mit Quell- und Zielsprachen anlegen.
  2. 2.Einen Projekt-API-Key erstellen. Der Klartext wird nur einmal angezeigt und gehört nicht in Browser-Code.
  3. 3.Das WordPress-Plugin installieren, API-URL und Key eintragen und den Verbindungstest ausführen.
  4. 4.Eine übersetzte URL öffnen und Navigation, hreflang, Cache, dynamische Inhalte und Kontingentstatus prüfen.
Authentifizierung: Nutze bevorzugt Authorization: Bearer <key>. ?api_key=<key> bleibt für ältere Plugin-Clients kompatibel. Dashboard-Routen verwenden dagegen eine angemeldete Sitzung und sind keine öffentliche API.

API-Referenz

POST

/api/translate

public

Übersetzt einen Textstapel mit dem konfigurierten Projektanbieter und berücksichtigt Cache, Glossar, Bots, Kontingent und Geschwindigkeitslimit.

Auth: Projekt-API-Key über Authorization: Bearer oder den Query-Parameter ?api_key=.

Quellcode: src/app/api/translate/route.ts

Anfrage

curl https://deepglot.ai/api/translate \
  -H "Authorization: Bearer dg_live_…" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 9b9e42d8-7ef2-4a91-82ff-b5ec71ba5832" \
  -d '{
    "l_from": "de",
    "l_to": "en",
    "words": [{ "w": "Hallo Welt", "t": 1 }],
    "request_url": "https://example.com/",
    "bot": 0
  }'

Antwort

{
  "l_from": "de",
  "l_to": "en",
  "request_url": "https://example.com/",
  "title": "",
  "bot": 0,
  "cache_only": false,
  "from_words": ["Hallo Welt"],
  "to_words": ["Hello world"]
}
  • Der Worttyp t folgt dem Plugin-Vertrag. Menschlicher Traffic verwendet bot=0; jeder Bot-Wert ab 1 ist ausschließlich cachebasiert und ruft keinen Anbieter auf.
  • cache_only ist für Bots sowie bei deaktivierter automatischer Übersetzung true. Clients dürfen gelieferte Cache-Treffer ausgeben, aber quelltextgleiche Cache-Fehlschläge nicht als Übersetzungen speichern.
  • Nur neue, beim Anbieter abgerechnete Wörter verbrauchen das Monatskontingent. 402 bedeutet Kontingentüberschreitung; 429 enthält Retry-After für Anfrage- oder Wortgeschwindigkeitslimits.
  • Idempotency-Key ist optional. Erfolgreiche und deterministische Antworten können bis zu 24 Stunden ohne erneute Seiteneffekte wiedergegeben werden. Eine wiederholbare 429 wird nur während des begrenzten Retry-After-Fensters dedupliziert und wiedergegeben; danach wird derselbe Key neu ausgeführt. Ein anderer Body führt zu 409, solange der Datensatz gespeichert ist.
GET

/api/public/status

public

Prüft die Verfügbarkeit von API und Datenbank. Liefert 200 bei Bereitschaft und bei Ausfall einen Problem-Details-Body mit 503.

Auth: Keine.

Quellcode: src/app/api/public/status/route.ts

Antwort

HTTP/1.1 200 OK

// Database unavailable: HTTP 503 with a service_unavailable Problem Details body.
GET

/api/public/languages

public

Listet den kanonischen Sprachkatalog und zeigt, ob eine Sprache von allen konfigurierbaren Anbietern gemeinsam unterstützt wird.

Auth: Keine.

Quellcode: src/app/api/public/languages/route.ts

Antwort

[
  {
    "code": "de",
    "local_name": "Deutsch",
    "english_name": "German",
    "sharedAcrossProviders": true
  }
]
  • Die Abdeckung eines einzelnen Anbieters kann kleiner sein. Prüfe den konfigurierten Anbieter, bevor du ein Sprachpaar zusagst.
GET

/api/public/languages/is-supported?languageFrom=de&languageTo=en

public

Prüft, ob beide unterschiedlichen Sprachcodes im kanonischen Katalog enthalten sind.

Auth: Keine.

Quellcode: src/app/api/public/languages/is-supported/route.ts

Antwort

{ "is_supported": true }
GET

/api/plugin/runtime-config

plugin

Liefert die autoritativen SaaS-Projekteinstellungen zusammen mit normalisierten Übersetzungsausschlüssen, kollisionssicheren übersetzten URL-Slugs und dem Synchronisationszeitpunkt für die WordPress-Laufzeit.

Auth: Projekt-API-Key über Bearer-Header oder Query-Parameter.

Quellcode: src/app/api/plugin/runtime-config/route.ts

Antwort

{
  "exclusions": { "urls": [], "regexes": [], "selectors": [] },
  "pageViewsEnabled": false,
  "project": {
    "version": "2026-08-25T10:00:00.000Z",
    "name": "Example website",
    "domain": "example.com",
    "sourceLanguage": "de",
    "targetLanguages": ["en"],
    "autoRedirect": false,
    "displayAiNotice": true,
    "automaticTranslation": true,
    "websiteType": "Corporate website",
    "industryType": "Software & technology"
  },
  "urlSlugs": [
    { "originalSlug": "ueber-uns", "translatedSlug": "about-us", "langTo": "en" }
  ],
  "syncedAt": "2026-07-13T10:00:00.000Z"
}
  • Der project-Block ist die autoritative Laufzeitansicht der im SaaS verwalteten Projekteinstellungen und enthält deren aktuelle Version.
  • Zuordnungen, die einen anderen Quell-Slug verdecken oder keine eindeutige Rückwärtszuordnung besitzen, werden ausgelassen. Projekte oberhalb des begrenzten Runtime-Vertrags mit 10.000 Zeilen erhalten einen 413-Fehler statt einer unbemerkt abgeschnittenen Zuordnung.
POST

/api/plugin/settings-sync

plugin

Speichert WordPress-eigene Routing- und Laufzeitoptionen und vergleicht dabei gespiegelte Projektwerte mit der autoritativen SaaS-Konfiguration.

Auth: Projekt-API-Key über Bearer-Header oder Query-Parameter.

Quellcode: src/app/api/plugin/settings-sync/route.ts

Anfrage

{
  "routingMode": "PATH_PREFIX",
  "siteUrl": "https://example.com",
  "sourceLanguage": "de",
  "targetLanguages": ["en"],
  "autoRedirect": false,
  "translateEmails": false,
  "translateSearch": true,
  "translateAmp": false,
  "domainMappings": []
}

Antwort

{
  "ok": true,
  "project": {
    "id": "project-id",
    "name": "Example website",
    "domain": "example.com",
    "originalLang": "de",
    "languages": [{ "langCode": "en", "isActive": true }]
  },
  "mirrorConflicts": ["domain", "autoRedirect"]
}
  • Das SaaS ist autoritativ für Projektname, Domain, Quell- und Zielsprachen, automatische Weiterleitung, KI-Hinweis, automatische Übersetzung, Website-Typ und Branchenkontext. Eingehende gespiegelte Abweichungen werden in mirrorConflicts aufgeführt und nicht zurückgeschrieben.
  • WordPress ist autoritativ für Routing-Modus, Domain-Zuordnungen sowie E-Mail, Suche und AMP. Die clientseitige dynamische Übersetzung bleibt plugin-lokal und wird nicht in das SaaS-Projekt geschrieben.
  • Im Modus SUBDOMAIN verwenden zugeordnete Zielsprachen ihren eindeutigen Host; nicht zugeordnete Zielsprachen werden über Pfad-Präfixe auf dem Quellhost ausgeliefert.

WordPress

Die Plugin-REST-Routen laufen auf der WordPress-Site und benötigen WordPress-Administratorrechte. Die dynamische Übersetzung verwendet Nonce, kurzlebiges Wortticket, per-IP-Budget und den serverseitigen Organisations-Cap. Fehlende Berechtigung fällt cachebasiert zurück; Bots lösen keine neue Übersetzung aus.

Ein universelles JavaScript-Snippet und ein Reverse Proxy sind derzeit nicht verfügbar. WordPress ist der einzige unterstützte Integrationsweg.

AMP-Seiten durchlaufen die Übersetzung nur bei aktivierter Plugin-Option. Die mehrsprachige Sitemap unter /deepglot-sitemap.xml wird in robots.txt angekündigt und enthält ausschließlich validierte interne Sprachalternativen.

Ab Version 0.12.0 wartet ein normaler Seitenaufruf standardmäßig nicht auf neue Übersetzungen. Fehlende Segmente werden in einer begrenzten, deduplizierten Warteschlange gesammelt und durch WP-Cron übersetzt. Kann ein kalter Aufruf Text und Cache-Ziel wegen einer kurzen Sperre nicht gemeinsam speichern, wird seine Quelltext-Antwort nicht gecacht und ein späterer Aufruf kann es erneut versuchen. Visueller Editor und WooCommerce-E-Mails bleiben synchron, weil diese Ausgaben nicht bei einem späteren Aufruf automatisch konvergieren.

Administratoren können unter Einstellungen → Deepglot eine begrenzte URL-Synchronisierung aus der Deepglot-Sitemap starten. Vor dem Start ist eine nebenwirkungsfreie Vorschau mit festem Snapshot und Beispiel-URLs zu bestätigen. Erkennt WordPress eine sichere HTTPS-Anfrage auf demselben Host wie eine noch mit HTTP gespeicherte interne Ziel-URL, verwendet der Snapshot dieselbe interne Ziel-URL mit HTTPS. Semantische Query-Parameter und Fragmente bleiben erhalten. Ein fremder Request-Host wird niemals übernommen. Eine absolute, query- und fragmentfreie Weiterleitung auf exakt derselben Origin und in derselben Zielsprache wird mit getrennten öffentlichen und Origin-Prüfungen explizit verifiziert; automatisches Folgen bleibt deaktiviert. Andere Weiterleitungen bleiben begrenzte Fehler. Jeder Batch umfasst höchstens 250 Zielseiten, füllt kontrolliert dieselbe Übersetzungswarteschlange und lässt sich pausieren, fortsetzen oder abbrechen. Es gibt keinen permanenten Hintergrundcrawler.

  • GET /wp-json/deepglot/v1/settings
  • PUT /wp-json/deepglot/v1/settings
  • PATCH /wp-json/deepglot/v1/settings
  • GET /wp-json/deepglot/v1/status
  • POST /wp-json/deepglot/v1/test-connection
  • GET /wp-json/deepglot/v1/url-sync
  • POST /wp-json/deepglot/v1/url-sync/preview
  • POST /wp-json/deepglot/v1/url-sync
  • POST /wp-json/deepglot/v1/url-sync/pause
  • POST /wp-json/deepglot/v1/url-sync/resume
  • POST /wp-json/deepglot/v1/url-sync/retry-failed
  • DELETE /wp-json/deepglot/v1/url-sync
  • POST /wp-json/deepglot/v1/translate-dynamic

WordPress-Betriebshilfe

Der erste Aufruf einer noch nicht übersetzten Seite kann bewusst den Quelltext zeigen. Er legt die fehlenden Segmente in die Warm-up-Warteschlange; ein sofort fälliges WP-Cron-Ereignis verarbeitet sie im Hintergrund. Sobald Warteschlange und Ereignis gespeichert sind, stößt Deepglot pro Anfrage einmal nicht blockierend WP-Cron an. Bei DISABLE_WP_CRON oder während eines Cron-Laufs bleibt dieser Anstoß aus. Nach erfolgreichem Abschluss löscht Deepglot betroffene Seiten aus unterstützten Full-Page-Caches, damit der nächste Aufruf die lokal gespeicherte Übersetzung erhält.

Nur Translation-429-Antworten setzen den aktiven Marker. Marker und Warmer-Wartezustand sind an API-Schlüssel und Backend gebunden; Konfigurationswechsel, verspätete Antworten der alten Konfiguration und alte ungebundene Marker blockieren keine neuen Übersetzungen.

Melden alle versuchten Anbieter für denselben mehrteiligen Ausgangsstapel ausschließlich eine Abweichung bei der Ergebnisanzahl, startet Deepglot eine direkte Einzeltext-Isolierung. Redundante binäre Zwischenstufen entfallen; jeder ursprüngliche Text durchläuft die konfigurierte Anbieterkette in seiner Eingabereihenfolge. Für einen mehrteiligen Ausgangsstapel lautet die Anbieteraufrufgrenze Kettenlänge × (Stapelgröße + 1); ein ursprünglicher Einzeltext durchläuft die Kette einmal. Beim Standardfall mit acht Texten und zwei Anbietern sind das höchstens 18 Anbieteraufrufe. Alle Ausgangsstapel und isolierten Einzeltexte teilen sich die anfrageweite Parallelitätsgrenze von standardmäßig 12 und eine gemeinsame Anbieterarbeitsfrist von höchstens 100 Sekunden. Bei PDF-Übersetzungen beginnt am Routeneintritt ein eigenes Budget von 40 Sekunden; Authentifizierung, Multipart-Verarbeitung und PDF-Vorbereitung werden davon abgezogen, damit für Abschlussarbeiten der 60-Sekunden-Route nominell 20 Sekunden bleiben. Fehler eines parallelen Stapels stoppen neue Anbieteraufrufe von Geschwistern. Abweichungen bei einem Einzeltext sowie am Aufruf- oder Zeitlimit bleiben endgültige Fehler; Zeitüberschreitungen, Authentifizierungsfehler, Ratenlimits, U+0000 und andere ungültige Antworten lösen diese Zusatzanfragen nicht aus.

Deepglot wertet alle begrenzten Ausgangsstapel aus, bevor Einzeltextaufrufe beginnen. Gesammelt werden nur Ausgangsstapel, deren vollständige Anbieterkette ausschließlich Abweichungen bei der Ergebnisanzahl geliefert hat; jeder andere endgültige Fehler bricht Geschwister weiterhin sofort ab. Vor dem Start der Kalibrierung vergleicht Deepglot die Restfrist mit einer konservativen Reserve für eine Welle: der kürzesten gemessenen Gesamtdauer unter den vollständig abgeschlossenen Ausgangsketten mit reinen Ergebnisanzahl-Abweichungen. Passt diese Reserve nicht, beginnt kein Einzeltext-Anbieteraufruf. Diese aus Ausgangsstapeln abgeleitete Reserve dient nur der Zulassung der Kalibrierung und wird nie auf spätere Arbeit hochgerechnet. Danach führt Deepglot genau eine globale Kalibrierungswelle mit den ersten min(anfrageweite Parallelität, Anzahl abweichender Texte) echten Einzeltexten durch die vollständige Anbieter-Fallbackkette aus und übernimmt deren Ergebnisse. Läuft die gemeinsame Frist trotz der Zulassungsprüfungen während einer bereits zugelassenen Einzeltextwelle ab, gibt Deepglot denselben typisierten Fristfehler statt einer allgemeinen Zeitüberschreitung zurück. Die verbleibende Arbeit wird in anfrageweit begrenzte Wellen geteilt. Vor jeder späteren Welle vergleicht Deepglot Anzahl noch ausstehender Wellen × gemessene Dauer der unmittelbar vorherigen Einzeltextwelle mit der verbleibenden gemeinsamen Frist und misst nach jeder abgeschlossenen Welle neu. Maßgeblich ist die frühere Frist aus lokaler Anbieterarbeitsgrenze und monotoner absoluter Aufruferfrist; die PDF-Route übergibt ihre beim Routeneintritt beginnende 40-Sekunden-Frist, sodass Authentifizierung, Upload-Verarbeitung und Vorbereitung dasselbe Budget verbrauchen. Passt die ausstehende Arbeit nicht mehr, endet die Anfrage nach der letzten übernommenen Welle und vor jedem weiteren Einzeltextaufruf. API und PDF antworten mit dem stabilen 503-Code „translation_count_mismatch_deadline“; ab dem ersten Anbieteraufruf behält die API ihre Geschwindigkeitslimit-Reservierung konservativ bei und speichert eine idempotente 503-Antwort für denselben Schlüssel höchstens 60 Sekunden. Andernfalls laufen die verbleibenden betroffenen Texte durch dieselbe global begrenzte Einzeltextwarteschlange; Ergebnisreihenfolge und vollständige Anbieter-Fallbackkette bleiben erhalten.

Die lokalisierte öffentliche Anfrage-URL bleibt dabei das Cache-Ziel, auch nachdem der Request-Router intern auf den Quellpfad umgeschrieben hat.

1. URLs synchronisieren

Erstelle in den Deepglot-Einstellungen zunächst eine kleine URL-Vorschau und bestätige den unveränderlichen Snapshot. Prüfe, dass ein veraltetes HTTP-Ziel auf demselben sicheren Host mit HTTPS erscheint und dass semantische Query-Parameter erhalten bleiben. Der Lauf verwendet nur interne Sitemap-Ziele, zeigt den aggregierten Fortschritt, pausiert bei vollem Kontingent oder ungültigem API-Key und wartet bei API-Ratenlimits automatisch. Einzelne Seiten können weiterhin durch einen normalen menschlichen Aufruf angestoßen werden.

2. WP-Cron prüfen

Wenn die Seite im Quelltext bleibt, prüfe, ob WP-Cron oder der konfigurierte System-Cron läuft. Hosts mit DISABLE_WP_CRON benötigen einen eigenen Cron-Aufruf.

3. Seiten-Cache prüfen

Der Status ‚Abgeschlossen‘ bestätigt die abgearbeitete Warteschlange am WordPress-Ursprung, nicht die öffentliche Cache-Ausgabe. WP Rocket, W3 Total Cache und LiteSpeed Cache leeren fertige URLs einzeln. WP Super Cache wird global erst geleert, wenn die verfolgte URL-Warteschlange leer ist; ausstehende Seiten bleiben bis dahin gecacht. Bei anderen Full-Page-Caches leere den Seiten-Cache manuell, behalte den Deepglot-Übersetzungs-Cache und prüfe die Zielsprachseite anschließend ohne Sync-Parameter.

Für schnelle lokale Provider: Der Filter deepglot_max_sync_batches kann eine begrenzte Zahl von Batches wieder im Seitenaufruf übersetzen. Für externe KI-Provider ist der asynchrone Standard empfohlen.

Wöchentlicher Workspace-Rückblick

Der Wochenrückblick ist ein Opt-in pro Benutzer und Workspace. Die Einstellung wird in den Kontoeinstellungen gespeichert; die PATCH-Route aktualisiert sowohl den Aktivierungsstatus als auch die gewünschte E-Mail-Sprache.

Zeitraum und Inhalt

Der Cron-Prozessor aggregiert die letzte vollständige UTC-Woche von Montag bis Montag. Er zählt neue Übersetzungen und Wörter, manuelle Übersetzungen und Wörter sowie Laufzeit-Übersetzungsanfragen — Import- und manuelle Batches werden nicht als Laufzeitanfragen gezählt.

Zustellung und Wiederholung

Der geschützte Vercel-Cron läuft montags um 08:00 UTC. Wochen ohne Aktivität werden übersprungen. Ein eindeutiger Claim pro Benutzer, Workspace und Zeitraum verhindert Doppelzustellungen bei parallelen Aufrufen; fehlgeschlagene Sendungen geben ihren Claim frei.

Autoritative Implementierung: src/lib/activity-digest.ts, src/lib/activity-digest-delivery.ts, src/lib/activity-digest-cron.ts, src/components/einstellungen/activity-digest-preferences.tsx.

WordPress v0.11.4 bis v0.11.7

Die dokumentierte Implementierungshistorie bildet die Grundlage für die aktuelle v0.12.8-Implementierung. v0.12.1 vergab für den Retry-After-fähigen dynamischen Übersetzer eine neue öffentliche Asset-Version. v0.12.2 verifiziert bei der URL-Synchronisierung genau eine sichere kanonische Weiterleitung, ohne automatisches Folgen zu aktivieren. v0.12.3 speichert Text- und URL-Warteschlangen in einer versionierten, prüfsummengeschützten ASCII-Hülle, damit Emoji und anderes Vier-Byte-Unicode auch auf älteren WordPress-Optionstabellen erhalten bleiben; beschädigte Persistenz wird nicht still ersetzt. v0.12.4 schützt auch übersetzte Transient-Werte mit einer getrennten versionierten ASCII-Hülle. Ein Cache-Schreibfehler bleibt in beiden Warteschlangen, verhindert den Seiten-Purge und hält eine nicht dauerhaft gespeicherte Inline-Antwort aus dem Seiten-Cache. v0.12.5 übersetzt gezielt konfigurierte Consent-Widgets auch dann, wenn sie vor dem dynamischen Footer-Observer entstehen, und lokalisiert deren interne Links mit den serverseitigen Routingregeln, ohne URLs an einen Übersetzungsanbieter zu senden. v0.12.6 übernimmt die WordPress-Core-Sichtbarkeit für Beitragstypen: Öffentliche Standardseiten bleiben in Sitemap und URL-Synchronisierung, während nicht sichtbare Builder-Inhaltstypen, Anhänge und nicht öffentlich abfragbare Taxonomien ausgeschlossen bleiben. v0.12.7 synchronisiert die projektweiten Einstellungen als versionierten SaaS-Snapshot. v0.12.8 übersetzt generische ARIA-Beschriftungen, Bild-Tooltips und sichtbare RSS-/Atom-Feed-Titel, ohne normale Link-Metadaten an den Übersetzungsanbieter zu senden, und verwirft leere Übersetzungs-Cachewerte einschließlich älterer Einträge. Ein GitHub-Release oder ZIP-Bau installiert kein Kunden-Plugin automatisch; produktive Installation und Live-QA bleiben getrennte Freigaben.

v0.11.4Numerische Quell-Slugs bleiben nach dem Cache-Readback zugeordnet.
v0.11.5Übersetzungsstapel erhalten ein begrenztes 60-Sekunden-Anfragefenster.
v0.11.6Große kalte Seiten werden nach String-Anzahl und 2.000 UTF-8-Bytes in geordnete parallele Anfragen geteilt.
v0.11.7Ein vertrauenswürdiger finaler HTML-Filter kann sprachabhängige Medien sicher lokalisieren und fällt bei leerem Ergebnis zurück.

Fehler und Wiederholungen

Öffentliche und Plugin-Routen verwenden einen Problem-Details-artigen JSON-Vertrag. error bleibt als Legacy-Alias für bestehende Plugin-Versionen erhalten. Clients sollen code und status auswerten; detail ist für Menschen.

Ein validation_failed für U+0000 bedeutet, dass ein Text-, Sprach-, Titel- oder Anfrage-URL-Feld ein von PostgreSQL nicht unterstütztes NUL-Zeichen enthält. Deepglot sendet solche Eingaben nicht an einen Anbieter und speichert sie nicht. Entferne ausschließlich U+0000 vor einem erneuten Versuch; andere Steuerzeichen und gültige Unicode-Zeichen sind erlaubt.

Wiederholbare 429-Antworten werden unter einem Idempotency-Key nur bis zum begrenzten Retry-After-Zeitpunkt gehalten: Parallele Anfragen mit demselben Key erhalten dieselbe Antwort, nach Ablauf darf der Key erneut ausführen. Ein 422 velocity_request_too_large ist dagegen dauerhaft für diese Anfrageform und wird regulär wiedergegeben. Teile eine zu große Anfrage oder PDF in kleinere Einheiten.

{
  "type": "https://deepglot.ai/problems/validation-failed",
  "title": "Validation failed",
  "status": 400,
  "detail": "languageFrom and languageTo are required.",
  "code": "validation_failed",
  "instance": "/api/public/languages/is-supported",
  "error": "languageFrom and languageTo are required.",
  "errors": { "languageFrom": ["Required"], "languageTo": ["Required"] }
}
400 validation_failed
401 missing_api_key / invalid_api_key
402 quota_exhausted
409 idempotency_conflict
422 velocity_request_too_large
429 rate_limit_exceeded / velocity_limited
500 internal_error
503 service_unavailable

Webhooks

Verwaltende Projektmitglieder konfigurieren öffentliche HTTPS-Ziele. Deepglot prüft Ziele bei Anlage und Versand gegen SSRF, signiert timestamp.payload mit HMAC-SHA256 und sendet X-Deepglot-Event, X-Deepglot-Timestamp und X-Deepglot-Signature. Fehlversuche werden nach 60, 300 und 900 Sekunden wiederholt.

  • translation.created
  • translation.updated
  • translation.manual_updated
  • translation.deleted
  • glossary.upserted
  • glossary.deleted
  • slug.upserted
  • import.completed

Projektoberflächen

Diese Routen versorgen das Dashboard und sind nicht als externer stabiler REST-Vertrag freigegeben. API-Keys, Sprachen, Webhooks, Ausschlüsse und das Pro+-Übersetzungsgedächtnis benötigen Verwaltungsrechte. Menschliche Prüfungen und PDF-Übersetzungen sind zusätzlich projekt- und sprachgebunden. Verwaltende dürfen Segmente bearbeiten, löschen, zuweisen und freigeben; Übersetzende dürfen nur die ihnen zugewiesenen Segmente ihrer Sprache bearbeiten und zur Prüfung einreichen. Glossar-CRUD verwendet derzeit die schwächere Projektmitgliedschaftsprüfung. Import, Export und Editor-Sitzungen verwenden angemeldete, projektspezifische Zugriffe.

RouteAccess
/api/projects/[projektId]/api-keysmanage
/api/projects/[projektId]/languagesmanage
/api/projects/[projektId]/glossarymember
/api/projects/[projektId]/exclusionsmanage
/api/projects/[projektId]/importsession
/api/projects/[projektId]/exportsession
/api/projects/[projektId]/editor-sessionssession
/api/projects/[projektId]/translation-memorymanage / Pro+
/api/projects/[projektId]/translationsproject / language scoped
/api/projects/[projektId]/translations/[translationId]edit / metadata: manager or assigned translator; delete: manager
/api/projects/[projektId]/pdf-translationsproject / language scoped
/api/projects/[projektId]/webhooksmanage

Sprachen, Versionierung und Support

Der Sprachkatalog aus /api/public/languages ist kanonisch. sharedAcrossProviders=false bedeutet: im Produkt unterstützt, aber nicht von jedem auswählbaren Anbieter garantiert.

Die aktuelle öffentliche API ist unversioniert. Rückwärtskompatible Felder werden ergänzt; brechende Änderungen benötigen einen versionierten Pfad oder eine angekündigte Übergangsfrist von mindestens 90 Tagen. Plugin-Versionen und Produktionsänderungen stehen in GitHub Releases, ROADMAP.md und HANDOFF.md.

MCP-Server, offizielles SDK/CLI und Agent-Skills sind derzeit nicht verfügbar. DPP-Lokalisierung ist eine spätere, noch zu validierende Richtung und keine Compliance-Zusage. Entscheidungsprotokoll

Fragen oder Integrationsfeedback? office@ostheimer.at·Zur Startseite