Développeurs

Quickstart — appelez le API depuis votre serveur

Réclamez un bac à sable, stockez la clé `esk_test_`, confirmez-la, créez un document à partir d''un modèle et envoyez-le. Les jetons de session de signature utilisent la même clé. Les Webhook sont enregistrés dans l''application d''administration.

Avant de commencer

Vous avez besoin d''un terminal avec `curl` et `jq`, ainsi que d''une boîte de réception de courrier électronique que vous contrôlez. La clé du bac à sable est `esk_test_…`. Une clé de production est `esk_live_…`. Envoyez-le comme « Autorisation : au porteur ». Le locataire vient de la clé, donc n''envoyez pas `x-tenant-id`.

Une clé sandbox comprend `integrations:zapier` et `signing:write`. Le téléchargement, l''assistant d''enveloppe et l''enregistrement webhook utilisent la session d''administration après votre connexion. Votre serveur utilise la clé pour les appels ci-dessous.

Quatre appels au serveur, puis un webhook dans l''application d''administration

  1. 1

    Réclamez votre bac à sable

    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

    Confirmez la clé

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

  3. 3

    Créer un document et l''envoyer

    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

    Enregistrez un webhook dans l''administrateur

    Connectez-vous et ouvrez Admin → Développeur → Webhooks. Enregistrez le secret de signature. Les livraisons utilisent `X-Endorsed-Signature`. Les étapes de vérification sont sur le guide du webhook. Inspectez les tentatives dans Admin → Développeur → Console.

Étape 1 : réclamer un bac à sable

Prérequis : une adresse e-mail et un mot de passe de plus de 8 caractères. Résultat attendu : HTTP 201 avec `data.sandbox.apiKey` commençant `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)"

Stockez la clé dans le gestionnaire secret de votre serveur. La vérification des e-mails ouvre la console d''administration. La clé fonctionne pour les appels sur cette page dès son émission.

Étape 2 — confirmez la clé

Prérequis : `$ENDORSED_API_KEY` de l''étape 1. La clé du bac à sable a déjà `integrations:zapier`. Résultat attendu : HTTP 200 et le nom de votre locataire.

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 }'

Une clé manquante ou mal formée est 401. Une clé valide sans `integrations:zapier` est 403. N''envoyez pas `X-Data-Mode` : `esk_test_` sélectionne déjà les données de test.

Étape 3 — créez un document à partir du modèle sandbox et envoyez-le

Prérequis : `$ENDORSED_API_KEY` et un `$ENDORSED_TEMPLATE_ID` non vide. Si `sampleTemplateId` était nul, créez un modèle dans l''application d''administration et collez son identifiant. Sortie attendue : HTTP 201 avec `data.documentId`, puis une réponse d''envoi avec `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 }'

Le lien de signature est envoyé par e-mail à `recipientEmail`. La réponse JSON contient l''identifiant du document, le statut et l''expiration du lien. Ouvrez l''e-mail pour terminer la signature, puis regardez `document.signed` sur un webhook que vous avez enregistré dans Admin.

Créez un jeton de session de signature

Prérequis : `$ENDORSED_API_KEY` avec `signing:write` (inclus sur la clé du bac à sable) et un identifiant de session de signature d''une session que vous avez déjà créée. Résultat attendu : HTTP 201 avec un jeton `st_…` unique.

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 }'

Transmettez `st_…` à l''intégration du navigateur. Gardez `esk_…` sur le serveur. Les instructions d’utilisation se trouvent sur la page d’intégration d’Elements.

Quand quelque chose ne va pas

Prêt à aller plus loin ?

Une fois que vous avez signé un document de bout en bout, connectez-vous aux zones ci-dessous pour la tranche suivante de l''intégration.