REST API van e-Signature.eu — elektronische handtekeningen (SES, AES, QES)

1. Overzicht

Met de REST API van e-Signature.eu verstuurt uw applicatie documenten ter elektronische ondertekening (eenvoudig SES, geavanceerd AES of gekwalificeerd QES volgens eIDAS) zonder via onze website te gaan. U stuurt de pdf en de ondertekenaars; wij verzorgen de identiteitscontrole, de ondertekening en de opvolging; u ontvangt het ondertekende document via de API of een callback.

Basis-URL https://api.e-signature.eu/v3/signature/

Deze documentatie beschrijft API v3. Gebruikt u al API v2 (https://api.e-signature.eu/v2/signature/)? Zie de Changelog.

2. Authenticatie

Uw gegevens staan in Mijn account > API-handtekeningen zodra u bent aangemeld op e-signature.eu:

  • User ID: in de URL, als parameter userid van elke oproep;
  • API token: in de HTTP-header x-api-key van elke oproep.
curl -X GET "https://api.e-signature.eu/v3/signature/requestBalance?userid=123" \
  -H "x-api-key: YOUR_API_TOKEN"

Houd uw token geheim: het geeft via de API volledige toegang tot uw account. Oproepen moeten vanaf uw server gebeuren, nooit vanuit een browser of mobiele app.

3. Conventies

Verzoeken en antwoorden

  • Alleen HTTPS. De request bodies zijn JSON (Content-Type: application/json).
  • Elk antwoord is JSON, in een van deze twee vormen:
{ "success": true,  "result": { ... } }
{ "success": false, "error": "Readable error message" }

Limieten

Limiet Waarde
Oproepen 10 per minuut per account en IP-adres (daarboven HTTP 403, opnieuw proberen na een minuut)
Document Eén pdf per aanvraag, maximaal 30 MB, niet versleuteld / zonder wachtwoord
Download van ondertekende documenten 30 dagen na afronding (zie Bewaring)

4. Credits

Aanvragen worden betaald met uw prepaid credits van e-signature.eu. De prijs van een methode vraagt u op met getMethods (uw specifieke prijzen worden meegerekend). Uw saldo staat in requestBalance en in elk aanvraagobject (credits_balance).

Automatisch opladen van credits

Om nooit zonder credits te vallen, kan uw account zich automatisch opladen. Dit stelt u één keer in via Mijn account > API-handtekeningen, niet via de API:

  1. Kies een drempel (in credits) en het te bestellen creditpakket.
  2. Sla een betaalmethode op bij onze betaalprovider Mollie (kaart, of SEPA-domiciliëring via Bancontact, iDEAL…). Eén keer wordt een verificatiebetaling van € 0,01 gevraagd.
  3. Telkens wanneer credits worden afgeschreven en uw saldo onder de drempel zakt, wordt een bestelling van het gekozen pakket aangemaakt en automatisch betaald met de opgeslagen betaalmethode. De factuur wordt u per e-mail bezorgd.
Automatisch opladen
Activering Een afschrijving van credits (bv. een nieuwe aanvraag) waardoor het saldo onder de drempel zakt
Toevoeging van de credits Zodra de betaling is bevestigd: onmiddellijk per kaart, na enkele werkdagen per SEPA-domiciliëring
Lopende opladingen Eén tegelijk
Veiligheidslimiet Een maximaal aantal automatische opladingen per 30 dagen
Mislukte betaling De bestelling wordt als mislukt gemarkeerd, automatisch opladen wordt uitgeschakeld en u wordt per e-mail verwittigd
Het opladen wordt door een afschrijving geactiveerd. Een aanvraag die meer kost dan uw huidige saldo wordt geweigerd (HTTP 403, You do not have enough credits) en activeert geen oplading: kies een drempel hoger dan de kosten van uw grootste aanvragen, en houd een marge bij betaling per SEPA-domiciliëring. Uw saldo blijft altijd beschikbaar via requestBalance en credits_balance.

5. Hoe een ondertekeningsaanvraag werkt

  1. U maakt de aanvraag aan met de pdf, de ondertekenaars en de toegelaten ondertekeningsmethoden. De credits worden afgeschreven.
  2. Elke ondertekenaar ontvangt een e-mail met een persoonlijke ondertekeningslink (of u bezorgt zelf de signature_link wanneer send_email false is).
  3. De ondertekenaar bevestigt zijn identiteit met een van de toegelaten methoden (itsme®, Evrotrust, Veriff, OTP…) en ondertekent.
  4. Wanneer iedereen heeft ondertekend, is de aanvraag finished: de ondertekende pdf (PAdES) is beschikbaar via getRequest en wordt meegestuurd in de callback.

Volgorde van ondertekening

Standaard ondertekenen alle ondertekenaars parallel. Om een volgorde vast te leggen, zet u sign_first: true bij de ondertekenaars van de eerste groep: zij worden meteen uitgenodigd, eventueel met meerderen tegelijk. De andere ondertekenaars worden pas uitgenodigd wanneer de hele eerste groep heeft ondertekend. Maximaal twee groepen.

Twee integratiemodi

Modus Werking
E-mailmodus (send_email: true, standaard) Wij sturen namens u de uitnodigingen, herinneringen en afrondingsmails naar de ondertekenaars.
Ingebedde modus (send_email: false) Bij het aanmaken wordt geen e-mail verstuurd: de signature_link van elke ondertekenaar staat in het antwoord en u leidt uw gebruikers ernaartoe vanuit uw eigen interface.
Ook met send_email: false stuurt een herinnering of annulering vanuit het online dashboard een e-mail naar de openstaande ondertekenaars.

Vraag de API niet herhaaldelijk op

Roep getRequest niet herhaaldelijk op om de status van een aanvraag te volgen: gebruik de callbacks, die automatisch bij elke wijziging worden verstuurd. Te veel oproepen activeren een automatische beperking die de verwerking van uw verzoeken tijdelijk opschort.

6. Een ondertekeningsaanvraag aanmaken

POST/v3/signature/request?userid={userid}
{
  "title": "Sales agreement 2026-114",
  "lang": "en",
  "methods": [
    "itsme-qes-signature",
    "evrotrust-signature"
  ],
  "signature_place": "position_auto",
  "reminder": 3,
  "send_email": true,
  "email_notification": false,
  "note_html": "Please sign the agreement before Friday.",
  "signature_redirect": "https://www.example.com/thank-you",
  "external_reference": "QUOTE-2026-114",
  "metadata": {
    "crm_deal_id": 8812
  },
  "callback_url": "https://erp.example.com/hooks/esignature",
  "signers": [
    {
      "firstname": "Ann",
      "lastname": "Peeters",
      "email": "[email protected]",
      "phone": "+32475111222",
      "sign_first": true
    },
    {
      "firstname": "Marc",
      "lastname": "Dubois",
      "email": "[email protected]",
      "sign_first": false
    }
  ],
  "pdf_file_base64": "JVBERi0xLjcKJeLjz9MK..."
}

Ondertekeningsmethoden

Methode Niveau Dekking Prijs
itsme-qes-signature — itsme® QES (gekwalificeerd) 32 Europese landen 1 credit / ondertekenaar
evrotrust-signature — Evrotrust QES (gekwalificeerd) 69 landen 1 credit / ondertekenaar
veriff-advanced-signature — Veriff AES (geavanceerd) 198 landen 0,7 credit / ondertekenaar
otp-email-non-qualified — OTP per e-mail of sms SES (eenvoudig) Wereldwijd 0,4 credit / ondertekenaar

Dit zijn de standaardprijzen: getMethods geeft de beschikbare methoden en de prijzen voor uw account. Alleen een gekwalificeerde elektronische handtekening (QES) is volgens de eIDAS-verordening wettelijk gelijkwaardig aan een handgeschreven handtekening. otp-email-non-qualified dekt e-mail en sms: de code wordt per sms verstuurd als de ondertekenaar een phone heeft, anders per e-mail, tegen dezelfde prijs.

Velden van de request body

Veld Verplicht Type Beschrijving
title ja string Naam van het document. Letters, cijfers en koppeltekens blijven behouden; als de naam al in uw account bestaat, wordt een achtervoegsel -1, -2… toegevoegd.
lang ja string Taal van de e-mails en ondertekeningspagina’s: fr, nl, en, de, es.
methods ja array Toegelaten ondertekeningsmethoden, zie Ondertekeningsmethoden. Zijn er meerdere toegelaten, dan kiest elke ondertekenaar.
signers ja array Ondertekenaars, zie hieronder.
pdf_file_base64 ja string De pdf, base64-gecodeerd. Eén bestand, maximaal 30 MB, niet versleuteld.
signature_place nee string position_auto (standaard) of position_manual, zie Plaatsing van de handtekeningen.
reminder nee number Automatische herinnering om de N dagen, 0 tot 14. Standaard 0 (geen herinnering).
send_email nee boolean Standaard true (e-mailmodus). Met false (ingebedde modus) wordt geen uitnodigings- of afrondingsmail verstuurd: bezorg zelf de signature_link. Niet combineerbaar met sign_first: true.
email_notification nee boolean Standaard false. Met true ontvangt u een e-mail bij elke ondertekening.
note_html nee string Bericht toegevoegd aan de e-mails voor de ondertekenaars (e-mailmodus). HTML-tags zijn toegestaan, bv. Note with <strong>HTML</strong>.
signature_redirect nee string (URL) Pagina die de ondertekenaar na het ondertekenen ziet. Moet een geldige URL zijn (lege tekst wordt geweigerd). Standaard: bevestigingspagina op e-signature.eu.
external_reference nee string Uw eigen referentie (offerte, contract…), maximaal 255 tekens. Komt terug in elk antwoord en elke callback.
metadata nee object Vrij JSON-object, maximaal 4 KB, ongewijzigd teruggestuurd.
callback_url nee string (URL) Callback-URL alleen voor deze aanvraag (publieke HTTPS). Standaard: de URL van uw account.

Velden van een ondertekenaar

Veld Verplicht Type Beschrijving
lastname ja string
email ja string Geldig e-mailadres
firstname nee string
phone nee string Internationaal formaat met + en de landcode (+32…); spaties worden verwijderd. Een ongeldig nummer wordt genegeerd. Met de OTP-methode wordt de code per sms verstuurd als er een nummer is, anders per e-mail.
sign_first nee boolean Standaard false. Zie Volgorde van ondertekening.
sign_page, sign_left, sign_bottom met position_manual number Zie Plaatsing van de handtekeningen.

Kosten

Prijs van de duurste methode in methods × aantal ondertekenaars. De credits worden afgeschreven bij het aanmaken van de aanvraag. De credits van ondertekenaars die niet hebben ondertekend, worden terugbetaald als de aanvraag wordt geannuleerd of stopgezet.

Antwoord 201 Created

{
  "success": true,
  "result": {
    "id_sign": 4521,
    "lang": "en",
    "doc_name": "Sales-agreement-2026-114",
    "send_email": true,
    "from_api": true,
    "signature_redirect": "https://www.example.com/thank-you",
    "status_id": "pending",
    "date_status": "2026-10-20 10:15:02",
    "last_reminder": null,
    "timezone": "Europe/Brussels",
    "credits": 2,
    "credits_balance": 38.4,
    "signers": {
      "1": {
        "firstname": "Ann",
        "lastname": "Peeters",
        "email": "[email protected]",
        "phone": "+32475111222",
        "sign_first": true,
        "status": "pending",
        "signature_link": "https://www.e-signature.eu/en/sign/?key=…"
      },
      "2": {
        "firstname": "Marc",
        "lastname": "Dubois",
        "email": "[email protected]",
        "sign_first": false,
        "status": "pending",
        "signature_link": "https://www.e-signature.eu/en/sign/?key=…"
      }
    },
    "external_reference": "QUOTE-2026-114",
    "metadata": {
      "crm_deal_id": 8812
    }
  }
}

7. Plaatsing van de handtekeningen

position_auto (standaard)

Plaats de markeringen #SIG01, #SIG02… (ook toegestaan: #SIG01#) als tekst in uw document, op de plaats waar elke ondertekenaar moet tekenen (#SIG01 = eerste ondertekenaar van de array signers). De handtekening wordt linksboven de markering geplaatst. Komt dezelfde markering meerdere keren voor, dan geldt de eerste. Een markering wordt overgeslagen als haar handtekeningzone een reeds geplaatste (of bestaande) handtekening zou bedekken: de ondertekenaar krijgt dan de volgende vrije markering. Een markering zo dicht bij de paginarand dat de handtekening moet worden verschoven, wordt alleen in laatste instantie gebruikt.

Tip: schrijf de markeringen in witte tekst (op een witte achtergrond), zodat ze onzichtbaar zijn in de ondertekende pdf. Ze moeten echte tekst blijven, geen afbeelding, om te worden herkend.

Document nog niet ondertekend

Bevat het document geen markering, of ontbreekt de markering van een ondertekenaar, dan wordt aan het einde van het document een handtekeningenpagina met de markeringen toegevoegd en worden alle handtekeningen op die pagina geplaatst (6 ondertekenaars op de eerste toegevoegde pagina, daarna 10 per extra pagina).

Document al ondertekend

Aan een pdf die al elektronisch is ondertekend, kan geen pagina worden toegevoegd: dat zou de bestaande handtekeningen ongeldig maken. Met position_auto worden de handtekeningen op de vrije markeringen geplaatst, d.w.z. de markeringen waarvan de handtekeningzone geen bestaande handtekening bedekt. Vrije markeringen worden in volgorde aan de ondertekenaars toegewezen (#SIG01, #SIG02…).

Bevat het ondertekende document niet genoeg vrije markeringen voor alle ondertekenaars, dan wordt de aanvraag geweigerd (HTTP 400): gebruik position_manual.

position_manual

Geef voor elke ondertekenaar de positie van de handtekening op, in centimeter:

Veld Waarde
sign_page Paginanummer, vanaf 1 (geheel getal)
sign_left Afstand van de linkerrand van de pagina tot de linkerkant van de handtekening, in cm (decimalen toegestaan)
sign_bottom Afstand van de onderrand van de pagina tot de bovenkant van de handtekening, in cm (decimalen toegestaan)
{ "lastname": "Peeters", "email": "[email protected]", "sign_page": 3, "sign_left": 2.5, "sign_bottom": 6 }

sign_left en sign_bottom geven de linkerbovenhoek van de handtekening. De handtekening wordt onder en rechts van dit punt geplaatst.

De limieten hangen af van de werkelijke grootte van de pagina en van de grootte van de visuele stempel: de volledige handtekening moet minstens 2 cm van elke rand van de pagina blijven. Zijn er meerdere ondertekeningsmethoden toegelaten, dan geldt de grootste stempel. Valt een waarde buiten de limieten, dan vermeldt de foutmelding het toegestane bereik voor die pagina.

Een handtekening mag geen andere handtekening van de aanvraag bedekken, noch een bestaande handtekening als het document al ondertekend is.

8. Het object ondertekeningsaanvraag

Teruggegeven door request, getRequest, cancel, skip, remind, delete en verstuurd in de callbacks.

Veld Beschrijving
id_sign ID van de aanvraag
doc_name Naam van het document
status_id pending lopend · finished door iedereen ondertekend · skipped stopgezet, gedeeltelijk ondertekend · cancelled · deleted
signers Object met de ondertekenaars, per sleutel ("1", "2"…) — zie hieronder
lang, send_email, signature_redirect, timezone Zoals bij het aanmaken ingesteld
from_api true als de aanvraag via de API is aangemaakt
date_status Datum van de laatste statuswijziging (tijdzone van de aanvraag)
last_reminder Datum van de laatste herinnering, of null
credits Credits van de aanvraag (gereserveerd zolang ze loopt, gebruikt na afronding)
credits_balance Huidig saldo van uw account
pdf_file_base64 Ondertekende pdf, wanneer de aanvraag niet meer loopt
external_reference, metadata Zoals verstuurd bij het aanmaken

Ondertekenaar

Veld Beschrijving
firstname, lastname, email, phone, sign_first Zoals verstuurd bij het aanmaken
status pending · signed · skipped
signature_link Persoonlijke ondertekeningslink, zolang de ondertekenaar niet heeft ondertekend
signing_time, signing_method Na ondertekening: datum en gebruikte methode
verified_firstname, verified_lastname Na ondertekening: identiteit gecontroleerd door de ondertekeningsmethode
{
  "1": {
    "firstname": "Ann",
    "lastname": "Peeters",
    "email": "[email protected]",
    "status": "signed",
    "signing_time": "2026-10-20 11:02:47",
    "signing_method": "itsme-qes-signature",
    "verified_firstname": "Ann",
    "verified_lastname": "Peeters"
  }
}

9. Andere endpoints

Alle endpoints krijgen userid in de URL en x-api-key in de headers. id_sign wordt in de URL meegegeven.

De aanvragen oplijsten

GET/v3/signature/list?userid={userid}&status_id=pending

status_id (optioneel): pending, finished of skipped. external_reference (optioneel): alleen de aanvragen met deze referentie.

{
  "success": true,
  "result": [
    {
      "id_sign": 4521,
      "status_id": "pending",
      "external_reference": "QUOTE-2026-114"
    },
    {
      "id_sign": 4498,
      "status_id": "finished"
    }
  ]
}

Een aanvraag opvragen

GET/v3/signature/getRequest?userid={userid}&id_sign=4521

Geeft het object ondertekeningsaanvraag terug, met de ondertekende pdf zodra de aanvraag is afgerond. Gebruik de callbacks om de status te volgen, niet herhaalde oproepen.

Een herinnering sturen

PATCH/v3/signature/remind?userid={userid}&id_sign=4521

Stuurt een herinneringsmail naar de ondertekenaars met status: pending van de groep die momenteel is uitgenodigd (eerst de groep sign_first). Alleen voor aanvragen pending. Werkt ook voor aanvragen aangemaakt met send_email: false.

Een aanvraag stopzetten (met behoud van de reeds geplaatste handtekeningen)

PATCH/v3/signature/skip?userid={userid}&id_sign=4521

Mogelijk wanneer minstens één ondertekenaar heeft ondertekend en minstens één nog niet. De aanvraag wordt skipped, de gedeeltelijk ondertekende pdf is beschikbaar en de credits van de niet-ondertekenaars worden terugbetaald.

Een aanvraag annuleren

DELETE/v3/signature/cancel?userid={userid}&id_sign=4521

Mogelijk zolang niemand heeft ondertekend; gebruik skip om een gedeeltelijk ondertekende aanvraag af te sluiten. Het antwoord bevat de aanvraag met status_id: cancelled; daarna worden de aanvraag en het document uit uw dashboard verwijderd, werken de ondertekeningslinks niet meer en worden de credits terugbetaald.

Een aanvraag verwijderen

DELETE/v3/signature/delete?userid={userid}&id_sign=4521

Alleen aanvragen finished of skipped. Verwijdert de documenten en de aanvraag. Het antwoord bevat de aanvraag nog één keer, met status_id: deleted: download de ondertekende pdf vóór het verwijderen.

De audit trail downloaden

GET/v3/signature/requestAuditTrail?userid={userid}&id_sign=4521

Niet beschikbaar zolang de aanvraag loopt (HTTP 412). Geeft het aanvraagobject terug met audit_trail_base64: een pdf met de geschiedenis van de aanvraag (data, methoden, gecontroleerde identiteiten).

Het creditsaldo opvragen

GET/v3/signature/requestBalance?userid={userid}
{ "success": true, "result": { "credits_balance": 38.4 } }

De ondertekeningsmethoden oplijsten

GET/v3/signature/getMethods?userid={userid}&lang=en

Methoden toegelaten in methods, met de prijs in credits per ondertekenaar voor uw account. lang (optioneel) vertaalt de labels.

{
  "success": true,
  "result": [
    {
      "id": "itsme-qes-signature",
      "label": "itsme® | QES",
      "credits": 1
    },
    {
      "id": "evrotrust-signature",
      "label": "Evrotrust | QES",
      "credits": 1
    },
    {
      "id": "veriff-advanced-signature",
      "label": "Veriff | AES",
      "credits": 0.7
    },
    {
      "id": "otp-email-non-qualified",
      "label": "OTP by Email/SMS | SES",
      "credits": 0.4
    }
  ]
}

10. Callbacks (webhooks)

Stel uw callback-URL in via Mijn account > API-handtekeningen (HTTPS, publiek bereikbaar). U kunt ook per aanvraag een callback_url opgeven. De callback is een POST met een JSON-body met de volledige huidige status van de aanvraag (zelfde formaat als getRequest), verstuurd voor aanvragen die via de API zijn aangemaakt.

Eventvelden

Veld Beschrijving
event Type event (zie hieronder)
event_id Unieke ID van het event (evt_…). Identiek bij elke nieuwe poging voor hetzelfde event: gebruik het om dubbels te negeren.
event_at Datum van het event (UTC, ISO 8601)
changes Statuswijzigingen van ondertekenaars, bv. [{"signer_key": 1, "from": "pending", "to": "signed"}] (alleen als een ondertekenaar is gewijzigd)
external_reference, metadata Zoals verstuurd bij het aanmaken van de aanvraag

Types events

Event Wanneer
signer.signed Een ondertekenaar heeft ondertekend, de aanvraag loopt nog
signer.declined, signer.skipped, signer.expired Een ondertekenaar heeft geweigerd, werd overgeslagen of is verlopen
request.completed Alle ondertekenaars hebben ondertekend: de ondertekende pdf is inbegrepen (pdf_file_base64)
request.stopped De aanvraag werd stopgezet: de gedeeltelijk ondertekende pdf is inbegrepen
request.cancelled De aanvraag werd geannuleerd
request.deleted De aanvraag werd verwijderd
request.expired De aanvraag is verlopen
request.declined Aangetekende zending geweigerd door de ontvanger
request.updated Elke andere wijziging: herinnering verstuurd, ondertekenaar gewijzigd, nieuwe ondertekeningslinks…

De body bevat altijd de volledige huidige status: uw integratie kan steunen op status_id en de status van elke ondertekenaar, niet alleen op het type event.

Headers

Header Voorbeeld
X-Esig-Api-Version 3
X-Esig-Event signer.signed
X-Esig-Event-Id evt_4f0c2b9e1d7a3c55e8b1a2f0
X-Esig-Delivery-Attempt 1, 2, …
X-Esig-Signature t=1792407600,v1=5d41402abc4b2a76b9719d911017c592…

De handtekening controleren

Uw ondertekeningsgeheim staat in Mijn account > API-handtekeningen, waar u het ook opnieuw kunt aanmaken. v1 is de HMAC-SHA256 van "<t>.<raw request body>" met uw geheim, hexadecimaal gecodeerd. Gebruik de ruwe body, vóór elke JSON-verwerking, en weiger callbacks ouder dan 5 minuten.

PHP

$body   = file_get_contents( 'php://input' );
$header = $_SERVER['HTTP_X_ESIG_SIGNATURE'] ?? '';
preg_match( '/t=(\d+),v1=([a-f0-9]{64})/', $header, $m );
$valid = $m
    && abs( time() - (int) $m[1] ) <= 300
    && hash_equals( hash_hmac( 'sha256', $m[1] . '.' . $body, $secret ), $m[2] );

Node.js

const crypto = require('crypto');
function verify(rawBody, header, secret) {
  const m = /t=(\d+),v1=([a-f0-9]{64})/.exec(header || '');
  if (!m || Math.abs(Date.now() / 1000 - Number(m[1])) > 300) return false;
  const expected = crypto.createHmac('sha256', secret).update(`${m[1]}.${rawBody}`).digest('hex');
  return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(m[2]));
}

C# (.NET)

using System.Security.Cryptography; using System.Text; using System.Text.RegularExpressions;
static bool Verify(string rawBody, string header, string secret) {
    var m = Regex.Match(header ?? "", @"t=(\d+),v1=([a-f0-9]{64})");
    if (!m.Success || Math.Abs(DateTimeOffset.UtcNow.ToUnixTimeSeconds() - long.Parse(m.Groups[1].Value)) > 300) return false;
    using var h = new HMACSHA256(Encoding.UTF8.GetBytes(secret));
    var expected = Convert.ToHexString(h.ComputeHash(Encoding.UTF8.GetBytes(m.Groups[1].Value + "." + rawBody))).ToLowerInvariant();
    return CryptographicOperations.FixedTimeEquals(Encoding.ASCII.GetBytes(expected), Encoding.ASCII.GetBytes(m.Groups[2].Value));
}

Antwoorden en nieuwe pogingen

  • Antwoord met HTTP 2xx zodra de callback is ontvangen en verwerk hem zo nodig asynchroon.
  • Bij een netwerkfout, time-out (30 s), HTTP 429 of 5xx wordt de callback elk uur opnieuw verstuurd met hetzelfde event_id, tot 24 pogingen. Andere 4xx-antwoorden gelden als definitief. Wijzigt de aanvraag opnieuw vóór een geslaagde levering, dan bevat de volgende callback een nieuw event en de volledige huidige status. De huidige status blijft altijd beschikbaar via getRequest.
  • Doorverwijzingen worden gevolgd (de methode POST blijft behouden). localhost en privé-adressen kunnen niet worden gebruikt.

11. Fouten

Fouten worden teruggegeven met "success": false en een leesbaar bericht error. Baseer uw logica op de HTTP-code: de berichten kunnen worden verbeterd.

HTTP-code Betekenis
200 / 201 OK / aanvraag aangemaakt
400 Ontbrekend of ongeldig veld (het bericht noemt het veld)
400 Ontbrekende id_sign, of ongeldige filter status_id
401 Ongeldige userid of x-api-key
403 Onvoldoende credits, of limiet van oproepen bereikt (10 per minuut)
404 Onbekende id_sign voor dit account
412 Actie niet mogelijk in de huidige status (bv. annuleren na een handtekening, een lopende aanvraag verwijderen)

Fouten per endpoint

Endpoint HTTP-code Bericht Oorzaak
Alle endpoints 401 Please provide a valid x-api-key in headers & userid in url parameters. Ongeldige userid of x-api-key
Alle endpoints 403 Rate limit exceeded: 10 requests per minute is allowed. Please try again after a minute. Meer dan 10 oproepen per minuut
request 400 Zie Validatieberichten Ontbrekend of ongeldig veld, pdf of positie
request 403 You do not have enough credits Saldo lager dan de kosten van de aanvraag
list 400 Incorrect value for status_id. Onbekende filter status_id
getRequest, remind, skip, cancel, delete, requestAuditTrail 400 please provide id_sign parameter. id_sign ontbreekt
getRequest, remind, skip, cancel, delete, requestAuditTrail 404 invalid id_sign value. Onbekende id_sign voor dit account
remind 412 request can not be remind to user(s): wrong status De aanvraag loopt niet
skip 412 request can not be skipped: wrong status Nog niemand heeft ondertekend, iedereen heeft ondertekend, of de aanvraag loopt niet meer
cancel 412 request can not be cancelled: someone already signed the PDF Minstens één ondertekenaar heeft ondertekend
delete 412 request can not be deleted: wrong status_id De aanvraag loopt nog
requestAuditTrail 412 Can not download Audit Trail while the signature request is pending De aanvraag loopt nog

Validatieberichten bij het aanmaken (request, HTTP 400)

Het bericht noemt het veld of het probleem; … staat voor een waarde uit uw verzoek. Baseer uw code op de HTTP-code en toon het bericht om het verzoek te helpen corrigeren.

Alle validatieberichten tonen

Request body

  • Request body can not be empty

title, lang

  • Field 'title' must be of type string and can not be empty
  • Field 'lang' is an invalid language code

signers

  • field 'signers' is omitted or is empty
  • Firstname, Lastname & email address must be of type string and can not be empty
  • … is not an email address
  • field 'sign_first' is not a boolean value
  • field 'sign_first' can not be 'true' when field 'send_email' is 'false'

methods

  • You must set at least one signing method
  • … is not a valid method

Opties

  • Field 'reminder' should be of type numeric between 0 & 14 (days)
  • Field 'send_email' should be of type boolean
  • Field 'email_notification' should be of type boolean
  • Field 'note_html' should be of type string
  • Field 'signature_redirect' is not a valid url

external_reference, metadata, callback_url

  • Field 'external_reference' must be a string
  • Field 'external_reference' can not exceed 255 characters
  • Field 'metadata' must be a JSON object
  • Field 'metadata' can not exceed 4096 bytes
  • Field 'callback_url' must be a publicly reachable HTTPS URL

PDF

  • Field 'pdf_file_base64' should be of type string and not empty
  • Field 'pdf_file_base64' doesn't contains a base64 encoded string
  • Field 'pdf_file_base64' doesn't contains a base64 encoded PDF file
  • Your file is too big > 30 MB
  • Couldn't load your PDF document
  • PDF file is encrypted and password protected. Please unprotected your PDF file.
  • Couldn't get pages from PDF document

Plaatsing van de handtekeningen

  • field 'signature_place' is incorrect
  • field 'sign_page' is empty or is not an integer
  • field 'sign_left' is empty or is not a number (cm)
  • field 'sign_bottom' is empty or is not a number (cm)
  • Field 'sign_left' for signer … must be between … and … cm (page … is … x … cm, signature … x … cm, margin … cm)
  • Field 'sign_bottom' for signer … must be between … and … cm (…)
  • Field 'sign_page' for signer … is too big: the document has … page(s)
  • Page … is too small for the signature of … (…)
  • The signature of … on page … overlaps an existing signature of the document (…)
  • The signatures of … and … overlap on page … (…)
  • The existing signatures of the document could not be read: the position of the signature of … can not be checked

Document al ondertekend (position_auto)

  • Your PDF file is already signed: pages can not be added without invalidating the existing signatures. It contains … free marker(s) for … signer(s): place the signatures manually (signature_place: position_manual).
  • Your PDF file is already signed: pages can not be added without invalidating the existing signatures. The free markers could not be determined: place the signatures manually (signature_place: position_manual).

Verwerking

  • Couldn't extract markers from PDF document: …
  • Unknown error: Request could not be saved into the Database
  • Foutmelding van de ondertekeningsprovider (eID Easy)

12. Bewaring

Ondertekende documenten kunnen gedurende 30 dagen na afronding worden gedownload, via getRequest of de callback request.completed. De audit trail wordt bewaard gedurende de periode vastgelegd in onze DPA. Archiveer het ondertekende document en de audit trail binnen 30 dagen aan uw kant.

13. Changelog

API v3 — verschillen met API v2

API v2 (https://api.e-signature.eu/v2/signature/) blijft beschikbaar en ongewijzigd. Endpoints, parameters en authenticatie zijn in beide versies identiek: om over te stappen op API v3 vervangt u de basis-URL door https://api.e-signature.eu/v3/signature/. U kunt endpoint per endpoint overstappen.

De vorige URL’s (https://www.e-signature.eu/wp-json/signature/ voor API v2 en https://www.e-signature.eu/wp-json/esig/v3/signature/ voor API v3) blijven geldig. We raden aan de URL’s van api.e-signature.eu te gebruiken.

Onderwerp API v2 API v3
Basis-URL /v2/signature/ /v3/signature/
Uw eigen referenties — Nieuwe velden external_reference en metadata, teruggegeven in elk antwoord en elke callback; filter list op external_reference
Callback-URL Eén URL per account Ook per aanvraag (callback_url)
Inhoud van de callback Volledige status van de aanvraag Volledige status van de aanvraag + event, event_id, event_at, changes
Beveiliging van de callback — HMAC-SHA256-handtekening in de header X-Esig-Signature
Nieuwe pogingen van de callback Elk uur bij een netwerkfout, tot ontvangst Elk uur bij een netwerkfout, time-out, HTTP 429 of 5xx, tot 24 pogingen, zelfde event_id
Ontbrekende id_sign, ongeldige filter status_id HTTP 401 HTTP 400
Onbekende id_sign HTTP 401 HTTP 404
Audit trail van een lopende aanvraag HTTP 401 HTTP 412
Manuele plaatsing: sign_left / sign_bottom Vaste limieten voor een A4-pagina staand (0 tot 15 cm / 4 tot 28,7 cm), handtekeninghoogte 2,5 cm Limieten berekend op basis van de werkelijke paginagrootte en de stempelgrootte van de toegelaten methoden, marge van 2 cm; decimalen toegestaan; de foutmelding vermeldt het toegestane bereik
Manuele plaatsing: overlappingen Niet gecontroleerd Geweigerd als een handtekening een andere handtekening van de aanvraag of een bestaande handtekening van het document bedekt
Manuele plaatsing: sign_page Een paginanummer één hoger dan de laatste pagina werd niet geweigerd Elke niet-bestaande pagina wordt geweigerd

Callbacks volgen de versie waarmee de aanvraag is aangemaakt: een aanvraag via API v2 blijft callbacks van API v2 ontvangen.

Winkelwagen

0
image/svg+xml

No products in the cart.

Verder winkelen
This site is registered on wpml.org as a development site. Switch to a production site key to remove this banner.