<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://techcorner.max-it.de/index.php?action=history&amp;feed=atom&amp;title=DocuSeal%3A_API%2C_Webhooks_und_Automatisierung</id>
	<title>DocuSeal: API, Webhooks und Automatisierung - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://techcorner.max-it.de/index.php?action=history&amp;feed=atom&amp;title=DocuSeal%3A_API%2C_Webhooks_und_Automatisierung"/>
	<link rel="alternate" type="text/html" href="https://techcorner.max-it.de/index.php?title=DocuSeal:_API,_Webhooks_und_Automatisierung&amp;action=history"/>
	<updated>2026-10-19T03:44:24Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in maxTechCorner</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://techcorner.max-it.de/index.php?title=DocuSeal:_API,_Webhooks_und_Automatisierung&amp;diff=4811&amp;oldid=prev</id>
		<title>imported&gt;TechCorner-Redaktion: Neuer Artikel: API-Schlüssel, Einreichungen per API, Webhook-Ereignisse, HMAC-Prüfung, n8n, MCP-Server</title>
		<link rel="alternate" type="text/html" href="https://techcorner.max-it.de/index.php?title=DocuSeal:_API,_Webhooks_und_Automatisierung&amp;diff=4811&amp;oldid=prev"/>
		<updated>2026-10-17T00:00:00Z</updated>

		<summary type="html">&lt;p&gt;Neuer Artikel: API-Schlüssel, Einreichungen per API, Webhook-Ereignisse, HMAC-Prüfung, n8n, MCP-Server&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Steckbrief&lt;br /&gt;
| gilt_fuer   = DocuSeal 3.3.x selbst gehostet (Open Source); REST-API unter /api, Webhooks, MCP-Server; Bibliotheken für JavaScript, Python, PHP, Ruby, C#, Java und Go&lt;br /&gt;
| bereich     = Server-Software&lt;br /&gt;
| dauer       = erster API-Aufruf ca. 15 Minuten; Integration je nach System&lt;br /&gt;
| rechte      = Administrator in DocuSeal; Entwickler- bzw. Admin-Zugang zum anzubindenden System&lt;br /&gt;
| stand       = Oktober 2026&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DocuSeal per API und Webhooks automatisieren&amp;#039;&amp;#039;&amp;#039; bedeutet, Unterschriftsprozesse direkt aus anderen Systemen zu starten und ihre Ergebnisse zurückzuschreiben: Das Personalsystem verschickt den Arbeitsvertrag, das CRM den Kundenauftrag, und sobald alle unterschrieben haben, landet das PDF automatisch in der Akte. Die selbst gehostete Open-Source-Version enthält API und Webhooks ohne Aufpreis. Diese Anleitung zeigt Authentifizierung, die wichtigsten Endpunkte, den sicheren Empfang von Webhooks, Beispiele mit n8n und den MCP-Server für KI-Assistenten.&lt;br /&gt;
&lt;br /&gt;
[[Datei:DocuSeal-API.png|thumb|center|750px|DocuSeal-API und Webhooks: Anwendung wie Personal- oder CRM-System ruft die REST-API unter https://sign.firma.de/api mit dem Header X-Auth-Token auf, legt Vorlagen aus PDF, DOCX oder HTML an und erstellt Einreichungen mit Empfängern und vorausgefüllten Feldern; DocuSeal versendet die E-Mails; Webhooks melden form.viewed, form.started, form.completed, form.declined sowie submission.created, submission.completed, submission.expired an den Empfänger, signiert mit HMAC-SHA256 im Header X-Docuseal-Signature, Wiederholung bis 48 Stunden; danach signierte Dokumente abrufen und archivieren; MCP-Server für KI-Assistenten.]]&lt;br /&gt;
&lt;br /&gt;
== Überblick: Schnittstellen von DocuSeal ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Baustein !! Zweck !! Einstellung in DocuSeal&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;REST-API&amp;#039;&amp;#039;&amp;#039; || Vorlagen und Einreichungen anlegen, abfragen, archivieren; Dokumente herunterladen || &amp;#039;&amp;#039;Einstellungen › API&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Webhooks&amp;#039;&amp;#039;&amp;#039; || DocuSeal meldet Ereignisse aktiv an eine URL || &amp;#039;&amp;#039;Einstellungen › Webhooks&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;MCP-Server&amp;#039;&amp;#039;&amp;#039; || KI-Assistenten (z. B. Claude Desktop, VS Code) suchen Vorlagen und versenden Dokumente || &amp;#039;&amp;#039;Einstellungen › MCP&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Eingebettetes Signieren und eingebetteter Editor&amp;#039;&amp;#039;&amp;#039; || Formulare in eigene Webanwendungen einbauen || nur Pro&lt;br /&gt;
|}&lt;br /&gt;
Hintergrund: [[API]], [[Webhook]].&lt;br /&gt;
&lt;br /&gt;
== Schritt 1: API-Schlüssel ==&lt;br /&gt;
# &amp;#039;&amp;#039;Einstellungen › API&amp;#039;&amp;#039; öffnen und den &amp;#039;&amp;#039;&amp;#039;API-Schlüssel&amp;#039;&amp;#039;&amp;#039; anzeigen bzw. kopieren.&lt;br /&gt;
# Den Schlüssel wie ein Administratorpasswort behandeln: Er hat alle Rechte des Kontos. Nur im Secret-Speicher der aufrufenden Anwendung ablegen, nie im Quellcode oder in Tickets.&lt;br /&gt;
# Bei Verdacht auf Missbrauch neu erzeugen.&lt;br /&gt;
Die Basisadresse der selbst gehosteten API ist &amp;lt;code&amp;gt;https://sign.firma.de/api&amp;lt;/code&amp;gt; (statt &amp;lt;code&amp;gt;https://api.docuseal.com&amp;lt;/code&amp;gt; in der Cloud-Dokumentation). Jeder Aufruf trägt den Header &amp;lt;code&amp;gt;X-Auth-Token&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Vorlagen auflisten&lt;br /&gt;
curl -s https://sign.firma.de/api/templates \&lt;br /&gt;
  -H &amp;quot;X-Auth-Token: $DOCUSEAL_TOKEN&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Schritt 2: Dokument per API zur Unterschrift senden ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -s -X POST https://sign.firma.de/api/submissions \&lt;br /&gt;
  -H &amp;quot;X-Auth-Token: $DOCUSEAL_TOKEN&amp;quot; \&lt;br /&gt;
  -H &amp;quot;Content-Type: application/json&amp;quot; \&lt;br /&gt;
  -d &amp;#039;{&lt;br /&gt;
    &amp;quot;template_id&amp;quot;: 12,&lt;br /&gt;
    &amp;quot;send_email&amp;quot;: true,&lt;br /&gt;
    &amp;quot;order&amp;quot;: &amp;quot;preserved&amp;quot;,&lt;br /&gt;
    &amp;quot;submitters&amp;quot;: [&lt;br /&gt;
      { &amp;quot;role&amp;quot;: &amp;quot;Mitarbeiter&amp;quot;, &amp;quot;email&amp;quot;: &amp;quot;max.muster@example.de&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;Max Muster&amp;quot;,&lt;br /&gt;
        &amp;quot;values&amp;quot;: { &amp;quot;Personalnummer&amp;quot;: &amp;quot;4711&amp;quot;, &amp;quot;Eintrittsdatum&amp;quot;: &amp;quot;2026-11-01&amp;quot; } },&lt;br /&gt;
      { &amp;quot;role&amp;quot;: &amp;quot;Personalabteilung&amp;quot;, &amp;quot;email&amp;quot;: &amp;quot;personal@firma.de&amp;quot; }&lt;br /&gt;
    ]&lt;br /&gt;
  }&amp;#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;role&amp;lt;/code&amp;gt; entspricht dem Namen der Partei in der Vorlage, &amp;lt;code&amp;gt;values&amp;lt;/code&amp;gt; füllt Felder anhand ihres Namens vor.&lt;br /&gt;
* Mit &amp;lt;code&amp;gt;&amp;quot;send_email&amp;quot;: false&amp;lt;/code&amp;gt; verschickt DocuSeal keine Mail; die Antwort enthält dann die Unterschriftslinks (&amp;lt;code&amp;gt;embed_src&amp;lt;/code&amp;gt;) zur eigenen Weitergabe.&lt;br /&gt;
* Weitere wichtige Endpunkte:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Endpunkt !! Funktion&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;GET /api/submissions&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;GET /api/submissions/{id}&amp;lt;/code&amp;gt; || Einreichungen und Status abfragen&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;GET /api/submissions/{id}/documents&amp;lt;/code&amp;gt; || Links zu den signierten PDFs&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;POST /api/submissions/pdf&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/docx&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/html&amp;lt;/code&amp;gt; || Einreichung direkt aus einem Dokument ohne gespeicherte Vorlage&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;POST /api/templates/pdf&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/docx&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/html&amp;lt;/code&amp;gt; || Vorlage aus Dokument mit Feld-Tags erzeugen&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;PUT /api/submitters/{id}&amp;lt;/code&amp;gt; || Empfänger ändern, Felder vorbelegen, E-Mail erneut senden&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DELETE /api/submissions/{id}&amp;lt;/code&amp;gt; || Einreichung archivieren&lt;br /&gt;
|}&lt;br /&gt;
* Offizielle Bibliotheken gibt es für JavaScript/TypeScript, Python, PHP, Ruby, C#, Java und Go. Die vollständige Beschreibung liegt als OpenAPI-Datei im Repository.&lt;br /&gt;
* Der &amp;#039;&amp;#039;&amp;#039;Testmodus&amp;#039;&amp;#039;&amp;#039; trennt Testvorlagen und -einreichungen vom Produktivbestand.&lt;br /&gt;
&lt;br /&gt;
== Schritt 3: Webhooks einrichten ==&lt;br /&gt;
# &amp;#039;&amp;#039;Einstellungen › Webhooks&amp;#039;&amp;#039; öffnen, Ziel-URL eintragen (nur HTTPS) und die gewünschten Ereignisse wählen.&lt;br /&gt;
# Ein &amp;#039;&amp;#039;&amp;#039;Webhook-Geheimnis&amp;#039;&amp;#039;&amp;#039; anlegen bzw. die HMAC-Signatur aktivieren.&lt;br /&gt;
# Mit &amp;#039;&amp;#039;Test&amp;#039;&amp;#039; eine Beispielnachricht senden und im Zielsystem prüfen.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Ereignis !! Auslöser&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;form.viewed&amp;lt;/code&amp;gt; || Empfänger öffnet das Formular zum ersten Mal&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;form.started&amp;lt;/code&amp;gt; || Empfänger beginnt mit dem Ausfüllen&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;form.completed&amp;lt;/code&amp;gt; || eine Partei hat fertig unterschrieben&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;form.declined&amp;lt;/code&amp;gt; || Empfänger lehnt ab&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;submission.created&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;submission.completed&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;submission.expired&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;submission.archived&amp;lt;/code&amp;gt; || Einreichung angelegt, von allen abgeschlossen, abgelaufen, archiviert&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;template.created&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;template.updated&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;template.archived&amp;lt;/code&amp;gt; || Änderungen an Vorlagen&lt;br /&gt;
|}&lt;br /&gt;
* Nicht beantwortete oder fehlerhafte Zustellungen (Status 4xx/5xx) wiederholt DocuSeal mehrfach innerhalb von 48 Stunden.&lt;br /&gt;
* Für den Abschluss eines Vorgangs mit mehreren Parteien &amp;lt;code&amp;gt;submission.completed&amp;lt;/code&amp;gt; verwenden; &amp;lt;code&amp;gt;form.completed&amp;lt;/code&amp;gt; kommt je Partei.&lt;br /&gt;
&lt;br /&gt;
=== Webhooks prüfen (HMAC) ===&lt;br /&gt;
DocuSeal sendet im Header &amp;lt;code&amp;gt;X-Docuseal-Signature&amp;lt;/code&amp;gt; den Wert &amp;lt;code&amp;gt;Zeitstempel.Signatur&amp;lt;/code&amp;gt;. Die Signatur ist ein HMAC-SHA256 über &amp;lt;code&amp;gt;Zeitstempel + &amp;quot;.&amp;quot; + Rohdaten des Body&amp;lt;/code&amp;gt;. Der Empfänger sollte Nachrichten verwerfen, deren Signatur nicht passt oder deren Zeitstempel mehr als fünf Minuten abweicht:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import hmac, hashlib, time&lt;br /&gt;
&lt;br /&gt;
def verify(secret: str, body: bytes, header: str, tolerance: int = 300) -&amp;gt; bool:&lt;br /&gt;
    ts, _, sig = header.partition(&amp;quot;.&amp;quot;)&lt;br /&gt;
    if not ts.isdigit() or abs(time.time() - int(ts)) &amp;gt; tolerance:&lt;br /&gt;
        return False&lt;br /&gt;
    expected = hmac.new(secret.encode(), f&amp;quot;{ts}.&amp;quot;.encode() + body, hashlib.sha256).hexdigest()&lt;br /&gt;
    return hmac.compare_digest(expected, sig)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Grundlagen: [[HMAC]]. Zusätzlich kann die Webhook-URL eigene Header (z. B. ein festes Token) verlangen.&lt;br /&gt;
&lt;br /&gt;
== Beispiel: Personalprozess mit n8n ==&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Auslöser&amp;#039;&amp;#039;&amp;#039;: Im Personalsystem wird ein neuer Mitarbeiter angelegt → n8n erhält die Daten.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;HTTP-Request-Knoten&amp;#039;&amp;#039;&amp;#039; ruft &amp;lt;code&amp;gt;POST /api/submissions&amp;lt;/code&amp;gt; mit Vorlage, Partei-Rollen und vorbelegten Feldern auf.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Webhook-Knoten&amp;#039;&amp;#039;&amp;#039; in n8n empfängt &amp;lt;code&amp;gt;submission.completed&amp;lt;/code&amp;gt;, prüft die Signatur und lädt über die Dokument-URLs das signierte PDF samt Prüfprotokoll.&lt;br /&gt;
# Ablage in der digitalen Personalakte bzw. im DMS, Benachrichtigung an die Personalabteilung.&lt;br /&gt;
Gleiches funktioniert mit Make, Zapier oder eigenem Code. Arbeitsverträge mit Befristung brauchen trotzdem Schriftform, siehe [[DocuSeal: Elektronische Signatur – Rechtslage in Deutschland]].&lt;br /&gt;
&lt;br /&gt;
== MCP-Server für KI-Assistenten ==&lt;br /&gt;
* Unter &amp;#039;&amp;#039;Einstellungen › MCP&amp;#039;&amp;#039; den &amp;#039;&amp;#039;&amp;#039;MCP-Server aktivieren&amp;#039;&amp;#039;&amp;#039; und ein Token erzeugen. DocuSeal zeigt die Konfiguration für den MCP-Client an.&lt;br /&gt;
* Der Assistent kann dann Vorlagen und Dokumente suchen, Vorlagen anlegen, Felder vorbelegen und Dokumente versenden.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Vorsicht&amp;#039;&amp;#039;&amp;#039;: Ein KI-Assistent mit Versandrechten verschickt rechtlich relevante Dokumente. Nur für ausgewählte Benutzer freigeben, Token getrennt halten und die Funktion deaktivieren, wenn sie nicht genutzt wird – beim Deaktivieren werden alle MCP-Verbindungen sofort beendet.&lt;br /&gt;
&lt;br /&gt;
== Hinweise ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Dokument-Links laufen ab&amp;#039;&amp;#039;&amp;#039;: Die Download-Links der API gelten standardmäßig 40 Minuten (&amp;lt;code&amp;gt;FILE_URLS_EXPIRE_MINUTES&amp;lt;/code&amp;gt;). Dokumente sofort nach dem Webhook abholen.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Firewall&amp;#039;&amp;#039;&amp;#039;: Webhooks gehen vom DocuSeal-Server aus. Ausgehende Verbindungen nur zu den bekannten Zielen erlauben.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Fehlerbehandlung&amp;#039;&amp;#039;&amp;#039;: Ereignisse können mehrfach ankommen – Empfänger idempotent bauen, z. B. über die ID der Einreichung.&lt;br /&gt;
* Bei Integration von DocuSeal in Fachanwendungen, Portale und Workflows unterstützt Sie die [https://www.max-it.de/development/individuelle-softwareentwicklung/ individuelle Softwareentwicklung von m.a.x. it].&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[DocuSeal]] – Überblick und alle Artikel der Reihe&lt;br /&gt;
* [[DocuSeal: Vorlagen erstellen und Dokumente zur Unterschrift senden]]&lt;br /&gt;
* [[DocuSeal: Absichern, Backup und Betrieb]]&lt;br /&gt;
* [[Webhook]]&lt;br /&gt;
&lt;br /&gt;
== Links und Quellen ==&lt;br /&gt;
* [https://www.docuseal.com/docs/api DocuSeal API-Dokumentation]&lt;br /&gt;
* [https://www.max-it.de/development/individuelle-softwareentwicklung/ Individuelle Softwareentwicklung von m.a.x. it]&lt;br /&gt;
&lt;br /&gt;
{{Uebermax}}&lt;br /&gt;
[[Kategorie:Server-Software]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;TechCorner-Redaktion</name></author>
	</entry>
</feed>