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,
  "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.
  • 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. Derselbe Body und Key liefern innerhalb von 24 Stunden die erste Antwort erneut, ohne Seiteneffekte zu wiederholen; ein anderer Body führt zu 409.
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 normalisierte Übersetzungsausschlüsse, kollisionssichere übersetzte URL-Slugs und den 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": [] },
  "urlSlugs": [
    { "originalSlug": "ueber-uns", "translatedSlug": "about-us", "langTo": "en" }
  ],
  "syncedAt": "2026-07-13T10:00:00.000Z"
}
  • 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

Synchronisiert WordPress-Routing, Sprachen, Laufzeitoptionen, Quellhost und optionale Subdomain-Zuordnungen in das Projekt.

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",
    "originalLang": "de",
    "languages": [{ "langCode": "en", "isActive": true }]
  }
}
  • 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.

  • 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
  • POST /wp-json/deepglot/v1/translate-dynamic

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.

{
  "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
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
  • 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; nur Verwaltende dürfen zuweisen oder freigeben. 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]manager or assigned translator
/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