API · Webhooks · Sjablonen

Handtekeningen vanuit je eigen software.

Maak ondertekenverzoeken vanuit je app, laat je ondertekenaars tekenen op je pagina in jouw huisstijl en krijg de verzegelde pdf met audittrail terug via webhook. Een REST-API met idempotency-keys, ondertekende events en stabiele foutcodes.

API-keys en webhooks zitten in het Enterprise-plan. Openbare documentatie, OpenAPI 3.1-specificatie, geen SDK nodig.

curl https://api.wesign.now/v1/signing-requests \
  -H "Authorization: Bearer $WSK_KEY" \
  -H "Idempotency-Key: case-4711/poa" \
  -F "file=@power-of-attorney.pdf" \
  -F 'signers=[{"email":"anna@example.ch","role":"client","name":"Anna Muster"}]' \
  -F "placement=anchors" \
  -F 'metadata={"case_id":"4711"}'

# → 201 Created
# {
#   "documentId": "8a1e4f9a-…",
#   "status": "pending",
#   "signers": [{ "role": "client", "signingUrl": "https://yourco.wesign.now/en/sign/…", "emailed": true, … }], …
# }
Zo werkt het

Vier stappen van je code naar een verzegelde pdf.

Niets te installeren: HTTPS, JSON en multipart. Elke stap linkt naar de pagina in de documentatie die het contract ervan is.

  1. Stap 1

    Maak het verzoek

    Eén POST /v1/signing-requests met de pdf, de ondertekenaars en de veldplaatsing: anchors vindt [[ls:signature:client]]-markers in de pdf, explicit neemt coördinaten, auto_append voegt een handtekeningpagina toe. Het antwoord bevat de documentId en per ondertekenaar een signingUrl.

    In de documentatie
    curl https://api.wesign.now/v1/templates/$TEMPLATE_ID/instantiate \
      -H "Authorization: Bearer $WSK_KEY" \
      -H "Idempotency-Key: case-4711/mandate" \
      -H "Content-Type: application/json" \
      -d '{
        "recipients": [{ "slot": 1, "email": "anna@example.ch", "name": "Anna Muster" }],
        "field_values": { "company.legal_name": "Muster AG", "company.tax_id": "CHE-123.456.789" },
        "metadata": { "case_id": "4711" }
      }'

    Dezelfde verzending vanuit een vergrendeld sjabloon: POST /v1/templates/{id}/instantiate voegt je field_values in de {{placeholders}} in en nodigt de ontvangers uit.

  2. Stap 2

    Je ondertekenaar tekent

    Wij mailen de uitnodiging in de taal van de ondertekenaar vanaf je subdomein in jouw huisstijl — of je bezorgt de link zelf met send_emails: false. Voeg een mobiel nummer en require_sms_verification toe en de ondertekenaar voert eerst een eenmalige code in: een geavanceerde elektronische handtekening (AES) in plaats van het e-maillinkniveau (SES).

    In de documentatie
    "signers": [{
      "email": "anna@example.ch",
      "role": "client",
      "name": "Anna Muster",
      "locale": "de",
      "phone_e164": "+41791112233",
      "require_sms_verification": true
    }]
    
    # The invitation goes out in German from your branded subdomain.
    # Anna asks for the code on the signing page; the signature is AES once verified.
    # Deliver the link yourself instead: send_emails=false
  3. Stap 3

    Je krijgt het event

    Registreer één keer een webhook voor de workspace, of geef callback_url per verzoek mee. Elke levering is HMAC-SHA256-ondertekend, wordt met exponentiële backoff herhaald en staat in een leveringslog waaruit je opnieuw kunt leveren. document.completed komt één keer per document met signed_pdf_url, audit_trail_url en de sha256 van het bestand.

    In de documentatie
    POST https://your-app.example/wesign/callback
    X-WeSign-Event: document.completed
    X-WeSign-Signature: t=1757404800,v1=9c3b…a2f1
    
    {
      "event": "document.completed",
      "document_id": "8a1e4f9a-…",
      "metadata": { "case_id": "4711" },
      "signed_pdf_url": "https://api.wesign.now/v1/documents/8a1e4f9a-…/signed",
      "audit_trail_url": "https://api.wesign.now/v1/documents/8a1e4f9a-…/audit-trail",
      "sha256": "4f9a…d21c", …
    }
  4. Stap 4

    Haal de bestanden op

    GET /v1/documents/{id}/signed levert de PAdES-verzegelde pdf, alle handtekeningen onder één zegel; /audit-trail rendert het eventlog — SHA-256, tijdstempel, gemaskeerde IP's — als pdf, altijd in het Engels. Beide vereisen je key. Vergelijk de hash en bewaar beide bestanden aan jouw kant.

    In de documentatie
    curl -LOJ -H "Authorization: Bearer $WSK_KEY" \
      https://api.wesign.now/v1/documents/$DOC_ID/signed
    
    curl -OJ -H "Authorization: Bearer $WSK_KEY" \
      https://api.wesign.now/v1/documents/$DOC_ID/audit-trail
    
    # Compare the file's SHA-256 with the event's sha256, then store both files on your side.

Elk antwoord draagt een X-Request-Id, en Instellingen → API bewaart 30 dagen een API-log van elke aanroep — status, foutcode, betrokken document; bodies worden nooit opgeslagen. Een Idempotency-Key maakt een herhaalde verzending of instantiate veilig. Elke key mag 60 verzoeken per minuut doen.

Mogelijkheden

Alles wat de API vandaag doet.

Sjablonen en veldregister

Schrijf een contract één keer met {{placeholders}}, vergrendel het, en instantiate vult het vanuit field_values. GET /v1/templates/{id} publiceert het invoerschema; het veldregister van de workspace houdt sleutels en voorbeeldwaarden stabiel.

Ankers

Zet [[ls:signature:client]]-markers in je gegenereerde pdf en de velden komen waar de tekst staat — zonder coördinaten. De markers worden gemaskeerd voordat de ondertekenaar de pagina ziet.

Sms-verificatie (AES)

phone_e164 en require_sms_verification: een eenmalige code voordat het document wordt getoond of bij het drukken op Ondertekenen. Koppelt de handtekening aan een telefoon — een geavanceerde elektronische handtekening.

Sequentieel ondertekenen

signing_mode: sequential nodigt ondertekenaars één na één uit; parallel is de standaard. Waarnemers en webhooks volgen elke vrijgave.

Waarnemers

observer_emails: cc-ontvangers die nooit tekenen. Op de hoogte gebracht bij verzending en wanneer iedereen heeft getekend, met de definitieve pdf en het certificaat.

Meerdere ondertekenaars en enveloppen

Meerdere ondertekenaars tekenen één pdf onder één zegel. Een envelop met meerdere bestanden is meerdere documenten: elk wordt op zichzelf afgerond en vuurt zijn eigen document.completed af.

Ingebed ondertekenen

Maak een kortlevende sessie voor één ondertekenaar aan en toon de ondertekenweergave in je eigen pagina — iframe of mobiele webview, jouw huisstijl, geen API-key in de browser. Enterprise.

Webhooks

Ondertekend, herhaald met exponentiële backoff, volledige of minimale payload (zonder persoonsgegevens), een leveringslog met opnieuw leveren en secret-rotatie die het oude secret 24 uur geldig houdt.

PAdES-verzegeld en verifieerbaar

Elke ondertekende pdf draagt een PAdES-zegel; het RFC 3161-tijdstempel bewaren wij in onze registers. Iedereen kan het bestand op /verify neerzetten en krijgt een oordeel: authentiek, gemanipuleerd of onbekend.

Dataregio EU, CH of US

Elke workspace legt zijn documenten vast in één regio: EU (standaard), Zwitserland of VS. Documenten blijven waar ze zijn gemaakt.

Swiss-made

Handtekeningen binnen eIDAS en de Zwitserse ZertES als SES en AES (geen QES). Openbare documentatie, OpenAPI 3.1-specificatie en 90 dagen aankondiging vóór elke brekende wijziging.

Wie erop bouwt

Software die een contract voor een klant neerlegt.

Belasting- en trustsoftware

Opdrachtbrieven, volmachten en indieningsmachtigingen rechtstreeks uit het dossier: het sjabloon draagt de tekst van het kantoor, jouw platform vult klant- en bedrijfsgegevens, de klant tekent op de pagina in de huisstijl van het kantoor. De audittrail beantwoordt de vraag van de belastingdienst.

HR- en recruitingplatforms

Aanbiedingen, contracten en detacheringsovereenkomsten per kandidaat gegenereerd en sequentieel verzonden — eerst de kandidaat, dan de werkgever — met de ondertekende pdf terug in het kandidaatdossier.

Fintech-onboarding

Onboardingovereenkomsten en beleggersdocumenten uitgevoerd binnen jouw flow, ingebed of via link, met een tweede sms-factor waar het risico dat vraagt, en een verzegelde, via hash verifieerbare pdf voor compliance.

Bureaus en documentgeneratoren

Jouw tool maakt de pdf, ankers plaatsen de velden, de klant tekent zonder account. `metadata` draagt je project-id in elk event terug naar jouw systeem.

Gepubliceerde klantverhalen:Zepf TaxesCurio Capital

API-keys en webhooks komen met Enterprise.

Bestaande Teams-workspaces houden hun API-keys en webhooks. Sjablonen verzenden via de API (instantiate, generate, confirm) en ingebed ondertekenen zijn alleen Enterprise. Elke key mag 60 verzoeken per minuut doen.

Bekijk plannen en prijzen

Vragen

Is er een sandbox of testkey?

Nog niet: elke key is live. send_emails: false maakt het document en de links aan zonder iemand te mailen; validate_only: true controleert een instantiate zonder iets aan te maken; review: true zet een document klaar zodat iemand het bevestigt of weggooit.

Welk handtekeningniveau levert de API?

Een eenvoudige elektronische handtekening (SES) via e-maillink, of een geavanceerde elektronische handtekening (AES) wanneer de ondertekenaar een eenmalige sms-code verifieert. Geen gekwalificeerde handtekening (QES).

Hoe weet ik dat een webhook van jullie komt?

Elke levering draagt X-WeSign-Signature: t=<time>,v1=<hmac> — HMAC-SHA256 over tijdstempel en rauwe body met het secret van de hook. Controleer die voordat je de body vertrouwt; de documentatie heeft verificatiecode in Node en PHP.

Wat gebeurt er als mijn endpoint niet bereikbaar is?

Wij herhalen met exponentiële backoff en houden per hook een leveringslog bij; een levering kan vanuit het log opnieuw worden verzonden. Je kunt ook altijd GET /v1/signing-requests/{id} opvragen.

Kan ik een verzending herhalen zonder twee keer te sturen?

Ja. Stuur een Idempotency-Key mee met POST /v1/signing-requests of instantiate: dezelfde key met dezelfde body geeft binnen 24 uur het eerste antwoord terug; dezelfde key met een andere body wordt geweigerd.

Waar worden de documenten opgeslagen?

In de regio die de workspace vastlegt: EU (standaard), Zwitserland of VS. Versleuteld onderweg en in rust. Een ondertekende pdf kan na een door jou ingestelde bewaartermijn worden verwijderd: bewaar je kopie bij document.completed.

Handtekeningen vanuit je eigen software.

Vertel ons wat je koppelt. De documentatie is openbaar — lees die gerust eerst.