Flowyer

Externe KI-Assistenten anbinden

So verbinden Sie ChatGPT, Claude, Gemini, Grok, DeepSeek oder Cursor mit Flowyer, und was ein API-Schlüssel kann und nicht kann.

API-Referenz für Entwickler

Worum geht es?

Mit einem persönlichen API-Schlüssel kann ein externer KI-Assistent in Ihrem Namen Datensätze (Akten, Mandanten, Aufgaben, Zeiteinträge, Kosten und Dokumente) in Flowyer lesen und anlegen und, wo Sie es erlauben, auch ändern. Jede Anfrage läuft genau mit Ihren Berechtigungen, zusätzlich eingeschränkt durch die Freigaben des Schlüssels; von einem Bot angelegte Akten, Mandanten und Aufgaben tragen in den Listen eine kleine Markierung mit dem erstellenden Schlüssel, bei Zeiteinträgen, Kosten und Dokumenten wird der erstellende Schlüssel festgehalten, ist aber nur für einen Kanzlei-Administrator unter "Über die API angelegte Datensätze" sichtbar.

Was ein Schlüssel NICHT kann

API-Schlüssel anlegen

  1. Ein Kanzlei-Administrator schaltet den API-Zugang unter Einstellungen > API-Schlüssel für die Kanzlei frei (standardmäßig aus).
  2. Auf derselben Seite legen Sie einen Schlüssel an: geben Sie ihm einen Namen (z. B. "ChatGPT"), damit Sie später wissen, welcher Bot zu welchem Schlüssel gehört.
  3. Wählen Sie, was der Bot darf (lesen, anlegen oder ändern), und setzen Sie ein Ablaufdatum. Die Berechtigungen eines Schlüssels lassen sich später nicht ändern: Wird mehr benötigt, legen Sie einen neuen Schlüssel an.
  4. Der Schlüssel wird nur einmal angezeigt: kopieren Sie ihn in die Einstellungen des Assistenten. Sie können ihn jederzeit mit sofortiger Wirkung widerrufen.

Geben Sie jedem Bot einen eigenen Schlüssel. So lassen sie sich getrennt widerrufen, und die Akten-, Mandanten- und Aufgabenlisten zeigen, welcher einen Datensatz angelegt hat.

Verfügbare Berechtigungen

Anbindung

Verwenden Sie immer genau den https-Host mit www. am Anfang (eine Weiterleitung würde den Autorisierungs-Header verwerfen). Bei Verbindungen mit API-Schlüssel senden Sie den Schlüssel als "Authorization: Bearer <Schlüssel>"; MCP-Clients authentifizieren sich stattdessen per OAuth über die Anmeldung im Browser, ein Schlüssel muss nicht eingegeben werden.

Basis-URL
https://www.flowyer.de/api/agent
OpenAPI
https://www.flowyer.de/api/agent/openapi.json
MCP
https://mcp.flowyer.com/mcp

ChatGPT (Actions)

Importieren Sie in einem eigenen GPT unter Actions die untenstehende OpenAPI-Beschreibung, wählen Sie API-Schlüssel-Authentifizierung vom Typ "Bearer" und fügen Sie Ihren Flowyer-Schlüssel ein.

https://www.flowyer.de/api/agent/openapi.json

Grok

Geben Sie Grok die Adresse der OpenAPI-Beschreibung und den Schlüssel; aus der Beschreibung erfährt es, welche Operationen es gibt und welche Parameter sie erwarten.

Claude Code

Claude Code verbindet sich mit dem MCP-Server; bei der ersten Nutzung meldet es Sie im Browser an (OAuth), ein Schlüssel ist nicht nötig:

claude mcp add --transport http flowyer https://mcp.flowyer.com/mcp

Claude Desktop / Cursor / Gemini CLI / DeepSeek

Claude Desktop, Cursor, die Gemini-CLI und MCP-Clients auf DeepSeek-Basis erwarten dieselbe MCP-Adresse in ihrer Konfigurationsdatei; bei der ersten Verbindung meldet der Client Sie im Browser an (OAuth), ein Schlüssel muss nicht eingegeben werden:

{
  "mcpServers": {
    "flowyer": {
      "url": "https://mcp.flowyer.com/mcp"
    }
  }
}

REST (curl)

Beispiele für direkte REST-Aufrufe:

curl -H "Authorization: Bearer flw_..." https://www.flowyer.de/api/agent/me
curl -H "Authorization: Bearer flw_..." "https://www.flowyer.de/api/agent/matters?q=2026/0025"
curl -X POST -H "Authorization: Bearer flw_..." -H "Content-Type: application/json" \
     -H "Idempotency-Key: 7f3a9c21-1b2c-4d5e-8f90-0a1b2c3d4e5f" \
     -d '{"name":"Kovács Kft.","email":"info@kovacs.hu"}' https://www.flowyer.de/api/agent/clients

Regeln

Sichere Wiederholungen (Idempotency-Key)

Jedes Anlegen akzeptiert einen Idempotency-Key-Header (oder ein Feld idempotency_key): eine mit demselben Wert wiederholte Anfrage liefert denselben Datensatz zurück, statt einen weiteren anzulegen, und unterschiedliche Schlüssel legen immer getrennte Datensätze an. Ohne Schlüssel gilt: ein identisches Anlegen innerhalb von 120 Sekunden liefert den ersten Datensatz.

Fehler

Jeder Fehler hat dieselbe Form: ein Maschinencode (error), eine englische Meldung (message) und die Meldung in der Kanzleisprache (message_localized). Die Meldung sagt, was zu tun ist. Bei 401, 403, 404 und 422 ist es sinnlos, die unveränderte Anfrage zu wiederholen, mit zwei Ausnahmen: bei 404 upload_not_finished schließen Sie zuerst den Upload zur upload_url ab und rufen dann complete erneut auf; bei einem abgelaufenen OAuth-Zugriffstoken (401 expired_key) erneuern Sie zuerst das Token.

{
  "error": "scope_missing",
  "message": "This API key does not have the \"clients:create\" permission. ...",
  "message_localized": "Ehhez az API-kulcshoz nem tartozik \"clients:create\" jogosultság. ...",
  "locale": "hu",
  "details": { "required_scope": "clients:create" }
}
HTTPerrorBedeutung
400invalid_json, use_www_host, bad_requestFehlerhafte Anfrage: ungültiger JSON-Text, falscher Host (verwenden Sie den www.-Host) oder eine nicht lesbare Anfrage.
401missing_key, invalid_key, revoked_key, expired_key, user_inactive, office_not_foundDer Schlüssel fehlt, ist ungültig, widerrufen oder abgelaufen, sein Inhaber ist nicht mehr aktiv, oder die Kanzlei des Schlüssels wurde nicht gefunden.
403scope_missing, module_forbidden, forbidden, office_api_disabled, licence_expired, office_archivedEine Berechtigung fehlt beim Schlüssel oder beim Benutzer, oder die Kanzlei hat die API nicht freigeschaltet.
404not_found, matter_not_visible, unknown_endpoint, upload_not_finished, replay_not_visibleDer Datensatz existiert nicht oder der Benutzer darf ihn nicht sehen; unbekannter Endpunkt; die hochgeladene Datei ist noch nicht im Speicher angekommen (upload_not_finished: laden Sie sie zur upload_url hoch und rufen Sie dann complete erneut auf); oder eine wiederholte Anlage, deren Datensatz bereits angelegt, inzwischen aber gelöscht oder verborgen wurde (replay_not_visible: es wurde nichts Neues angelegt, legen Sie ihn nicht erneut an).
405delete_not_allowed, update_not_allowed, method_not_allowedLöschen ist über die API nicht möglich; Ändern nur dort, wo die Beschreibung eine PATCH-Operation anbietet.
409client_exists, client_exists_generic, idempotency_key_reused, duplicate_in_progress, record_conflict, record_locked, duplicate_nameEin Mandant mit diesem Namen existiert bereits; im Ordner existiert bereits ein Dokument mit diesem Namen (duplicate_name); der Datensatz wurde seit dem Lesen geändert (record_conflict: lesen Sie ihn erneut und senden Sie die Änderung mit dem neuen updated_at erneut); der Datensatz ist abgerechnet oder gesperrt (record_locked: nehmen Sie die Änderung in Flowyer vor); der Idempotency-Key wurde für eine andere Ressource verwendet; oder eine identische Anfrage wird gerade verarbeitet.
413request_too_large, file_too_largeDer Anfragetext ist zu groß (request_too_large), oder die hochzuladende Datei überschreitet die Grenze (file_too_large; details.max nennt die Grenze in Byte).
422validation_failed, unknown_client, unknown_colleague, blocked_file_type, upload_token_invalid, folder_not_in_matter, document_name_too_longEin ungültiges oder fehlendes Feld (details.fields zeigt welches); ein ungültiges, bereits verwendetes oder abgelaufenes Upload-Token (upload_token_invalid: starten Sie den Upload erneut); oder ein Ordner, der nicht zur Akte gehört (folder_not_in_matter).
429rate_limited, auth_rate_limitedZu viele Anfragen (300 pro Minute und Schlüssel); der Retry-After-Header sagt, wann Sie es erneut versuchen können.
500server_errorUnerwarteter Fehler. Die Anfrage wurde unter ihrer request_id protokolliert; versuchen Sie es später erneut und nennen Sie bei Wiederholung diese ID dem Flowyer-Support.
503office_maintenance, office_setup_incomplete, temporarily_unavailableDie Kanzlei ist vorübergehend nicht verfügbar (Wartung oder laufende Einrichtung); der Retry-After-Header sagt, wann Sie es erneut versuchen können.

Datenschutz

Der Anbieter des Assistenten (z. B. OpenAI, Anthropic, xAI) sieht alle Daten, die der Schlüssel zurückgibt. Geben Sie nur einem Bot einen Schlüssel, dessen Datenverarbeitung die Kanzlei akzeptiert hat, und nur mit den wirklich nötigen Berechtigungen.