Entwickler

Schnellstart – Rufen Sie API von Ihrem Server aus auf

Beanspruchen Sie eine Sandbox, speichern Sie den Schlüssel „esk_test_“, bestätigen Sie ihn, erstellen Sie ein Dokument aus einer Vorlage und senden Sie es. Signatursitzungstoken verwenden denselben Schlüssel. Webhooks werden in der Admin-App registriert.

Bevor Sie beginnen

Sie benötigen ein Terminal mit „curl“ und „jq“ sowie einen E-Mail-Posteingang, den Sie steuern. Der Sandbox-Schlüssel ist „esk_test_…“. Ein Produktionsschlüssel ist „esk_live_…“. Senden Sie es als „Autorisierung: Inhaber“. Der Mieter stammt aus dem Schlüssel, also senden Sie nicht „x-tenant-id“.

Ein Sandbox-Schlüssel enthält „integrations:zapier“ und „signing:write“. Das Hochladen, der Umschlagassistent und die webhook-Registrierung nutzen die Admin-Sitzung, nachdem Sie sich angemeldet haben. Ihr Server verwendet den Schlüssel für die folgenden Aufrufe.

Vier Serveraufrufe, dann ein webhook in der Admin-App

  1. 1

    Beanspruchen Sie Ihre Sandbox

    POST /api/auth/register with `mode: sandbox`. The response includes a full `esk_test_…` key, shown once, plus `demoCustomerId`. When seeding succeeds it also includes `sampleTemplateId`.

  2. 2

    Bestätigen Sie den Schlüssel

    GET /api/v1/zapier/auth/test with the key. Expected output: HTTP 200 and `{ success: true, data: { tenantId, tenantName, zapierEnabled: true } }`.

  3. 3

    Erstellen Sie ein Dokument und senden Sie es

    POST /api/v1/zapier/actions/create-from-template with `sampleTemplateId`, then POST /api/v1/zapier/actions/send-for-signing with the returned `documentId`. The signer receives the link by email.

  4. 4

    Registrieren Sie einen webhook im Admin

    Melden Sie sich an und öffnen Sie Admin → Entwickler → Webhooks. Speichern Sie das Signaturgeheimnis. Lieferungen verwenden „X-Endorsed-Signature“. Die Verifizierungsschritte finden Sie im webhooks-Handbuch. Überprüfen Sie die Versuche unter Admin → Entwickler → Konsole.

Schritt 1 – Beanspruchen Sie eine Sandbox

Voraussetzungen: eine E-Mail-Adresse und ein 8+ Zeichen langes Passwort. Erwartete Ausgabe: HTTP 201 mit „data.sandbox.apiKey“ startet „esk_test_“.

bash
curl -sS -X POST https://api.endorsedsign.com/api/auth/register \
  -H 'Content-Type: application/json' \
  -d '{
    "tenantName": "Acme Dev Sandbox",
    "adminEmail": "you@acme.example",
    "password": "your-strong-password",
    "mode": "sandbox"
  }' | tee sandbox.json | jq '.data.sandbox'

# → {
#     "apiKey": "esk_test_…",
#     "keyPrefix": "esk_test_…",
#     "keyId": "…",
#     "scopes": ["signing:write", "integrations:zapier", …],
#     "demoCustomerId": "sandbox-signer-acme-dev-sandbox",
#     "demoCustomerName": "Sandbox Signer",
#     "sampleTemplateId": "…",
#     "expiresAt": "2026-…"
#   }

export ENDORSED_API_KEY="$(jq -r '.data.sandbox.apiKey' sandbox.json)"
export ENDORSED_TEMPLATE_ID="$(jq -r '.data.sandbox.sampleTemplateId // empty' sandbox.json)"

Speichern Sie den Schlüssel in Ihrem Server Secret Manager. Die E-Mail-Verifizierung öffnet die Admin-Konsole. Der Schlüssel funktioniert für die Anrufe auf dieser Seite, sobald er ausgegeben wird.

Schritt 2 – Bestätigen Sie den Schlüssel

Voraussetzungen: `$ENDORSED_API_KEY` aus Schritt 1. Der Sandbox-Schlüssel hat bereits `integrations:zapier`. Erwartete Ausgabe: HTTP 200 und Ihr Mandantenname.

bash
curl -sS https://api.endorsedsign.com/api/v1/zapier/auth/test \
  -H "Authorization: Bearer $ENDORSED_API_KEY" \
  | jq '{ success, tenantId: .data.tenantId, tenantName: .data.tenantName, zapierEnabled: .data.zapierEnabled }'

Ein fehlender oder fehlerhafter Schlüssel ist 401. Ein gültiger Schlüssel ohne „integrations:zapier“ ist 403. „X-Data-Mode“ nicht senden: „esk_test_“ wählt bereits Testdaten aus.

Schritt 3 – Erstellen Sie ein Dokument aus der Sandbox-Vorlage und senden Sie es

Voraussetzungen: „$ENDORSED_API_KEY“ und eine nicht leere „$ENDORSED_TEMPLATE_ID“. Wenn „sampleTemplateId“ null war, erstellen Sie eine Vorlage in der Admin-App und fügen Sie deren ID ein. Erwartete Ausgabe: HTTP 201 mit „data.documentId“, dann eine Sendeantwort mit „Status: „link-sent““.

bash
curl -sS -X POST https://api.endorsedsign.com/api/v1/zapier/actions/create-from-template \
  -H "Authorization: Bearer $ENDORSED_API_KEY" \
  -H 'Content-Type: application/json' \
  -d "{
    \"templateId\": \"$ENDORSED_TEMPLATE_ID\",
    \"recipientEmail\": \"you@acme.example\",
    \"recipientName\": \"Sandbox Signer\"
  }" | tee created.json | jq '.data | { documentId, customerId, status }'

export ENDORSED_DOCUMENT_ID="$(jq -r '.data.documentId' created.json)"

curl -sS -X POST https://api.endorsedsign.com/api/v1/zapier/actions/send-for-signing \
  -H "Authorization: Bearer $ENDORSED_API_KEY" \
  -H 'Content-Type: application/json' \
  -d "{
    \"documentId\": \"$ENDORSED_DOCUMENT_ID\",
    \"channel\": \"email\",
    \"subject\": \"Please sign\"
  }" | jq '.data | { documentId, status, channel, shareLinkExpiresAt }'

Der Signaturlink wird per E-Mail an „recipientEmail“ gesendet. Die JSON-Antwort enthält die Dokument-ID, den Status und den Linkablauf. Öffnen Sie die E-Mail, um die Signatur abzuschließen, und sehen Sie sich dann „document.signed“ auf einem „P0“ an, den Sie im Admin registriert haben.

Mint ein Signiersitzungstoken

Voraussetzungen: „$ENDORSED_API_KEY“ mit „signing:write“ (im Sandbox-Schlüssel enthalten) und einer Signatursitzungs-ID aus einer bereits erstellten Sitzung. Erwartete Ausgabe: HTTP 201 mit einem einmaligen „st_…“-Token.

bash
curl -sS -X POST "https://api.endorsedsign.com/api/v1/signing-sessions/$ENDORSED_SESSION_ID/tokens" \
  -H "Authorization: Bearer $ENDORSED_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{ "scope": "embed", "ttl_seconds": 300 }' \
  | jq '{ token, expires_at, scope }'

Übergeben Sie „st_…“ an die Browser-Einbettung. Behalten Sie „esk_…“ auf dem Server. Anweisungen zum Einlösen finden Sie auf der Einbettungsseite von Elements.

Wenn etwas schief geht

Bereit, tiefer zu gehen?

Sobald Sie ein Dokument vollständig signiert haben, schließen Sie es für den nächsten Teil der Integration an die folgenden Oberflächenbereiche an.