{"id":29993,"date":"2026-10-25T13:12:43","date_gmt":"2026-10-25T12:12:43","guid":{"rendered":"https:\/\/www.e-signature.eu\/?page_id=29993"},"modified":"2026-10-25T21:45:54","modified_gmt":"2026-10-25T20:45:54","slug":"documentatie-voor-aangetekende-mail-api-v3","status":"publish","type":"page","link":"https:\/\/www.e-signature.eu\/nl\/aangetekende-mail-eidas\/documentatie-voor-aangetekende-mail-api-v3\/","title":{"rendered":"Documentatie voor aangetekende mail \u2013 API v3"},"content":{"rendered":"<style>\n.esig-api{--ink:#1f2937;--muted:#6b7280;--line:#e5e7eb;--soft:#f8fafc;--brand:#1d4ed8;--code:#0f172a;\n font-family:inherit;color:var(--ink);line-height:1.6;max-width:1100px;margin:0 auto;font-size:16px}\n.esig-api h2{font-size:1.6em;margin:2.2em 0 .6em;padding-top:.6em;border-top:1px solid var(--line)}\n.esig-api h3{font-size:1.2em;margin:1.8em 0 .5em}\n.esig-api h4{font-size:1em;margin:1.4em 0 .4em;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}\n.esig-api p,.esig-api li{max-width:820px}\n.esig-api code{font-family:SFMono-Regular,Consolas,Menlo,monospace;font-size:.88em;background:#eef2ff;color:#1e3a8a;padding:.1em .35em;border-radius:4px;word-break:break-word}\n.esig-api pre{background:var(--code);color:#e2e8f0;padding:16px 18px;border-radius:8px;overflow-x:auto;font-size:13.5px;line-height:1.5;margin:.8em 0 1.4em}\n.esig-api pre code{background:none;color:inherit;padding:0;font-size:inherit;word-break:normal}\n.esig-api table{border-collapse:collapse;width:100%;margin:.8em 0 1.4em;font-size:.94em;display:block;overflow-x:auto}\n.esig-api th,.esig-api td{border:1px solid var(--line);padding:8px 10px;text-align:left;vertical-align:top}\n.esig-api th{background:var(--soft);font-weight:600}\n.esig-api{display:grid;grid-template-columns:230px minmax(0,1fr);gap:40px;max-width:1240px}\n.esig-api-main{min-width:0}\n.esig-api-nav{position:relative}\n.esig-api-nav-in{position:sticky;top:var(--esig-top,110px);z-index:20}\n.esig-api-nav-in.is-fixed{position:fixed}\n.esig-api-toc{max-height:calc(100vh - var(--esig-top,110px) - 20px);overflow-y:auto;background:var(--soft);border:1px solid var(--line);border-radius:8px;padding:14px 16px;font-size:.92em}\n.esig-api-toc strong{display:block;margin-bottom:.4em}\n.esig-api-toc ol{margin:0;padding-left:1.3em}.esig-api-toc li{margin:.3em 0;max-width:none}\n.esig-api-main a{color:var(--brand)!important;text-decoration:underline!important;text-underline-offset:2px;text-decoration-thickness:1px}.esig-api-main a:hover{text-decoration-thickness:2px}\n.esig-api-details{border:1px solid var(--line);border-radius:8px;padding:10px 16px;margin:.8em 0 1.4em;background:var(--soft)}.esig-api-details summary{cursor:pointer;font-weight:600;color:var(--brand)}.esig-api-details[open] summary{margin-bottom:.6em}.esig-api-details h4{margin:1em 0 .3em;text-transform:none;letter-spacing:0;color:var(--ink)}.esig-api-details ul{margin:.2em 0 .6em}\n.esig-api-toc a{text-decoration:none;color:var(--ink)}.esig-api-toc a:hover{color:var(--brand);text-decoration:underline}\n.esig-api-toc a.is-active{color:var(--brand);font-weight:600;background:#e8efff;border-radius:4px;padding:1px 5px;margin-left:-5px}.esig-api-toc li.is-active::marker{color:var(--brand);font-weight:600}\n.esig-api-toggle{position:absolute;opacity:0;pointer-events:none}\n.esig-api-toc-btn{display:none}\n.esig-api h2{scroll-margin-top:calc(var(--esig-top,110px) + 10px)}\n@media (max-width:900px){\n .esig-api{display:block}\n .esig-api-nav{margin:0 0 1.2em}\n .esig-api-nav-in{top:var(--esig-top,0px)}\n .esig-api-toc-btn{display:flex;align-items:center;justify-content:space-between;background:var(--soft);border:1px solid var(--line);border-radius:8px;padding:10px 14px;font-weight:600;cursor:pointer}\n .esig-api-toc-btn::after{content:\"\u25be\";font-size:1.1em}\n .esig-api-toggle:checked + .esig-api-toc-btn::after{content:\"\u25b4\"}\n .esig-api-toc{display:none;position:static;max-height:60vh;margin-top:6px;box-shadow:0 6px 16px rgba(0,0,0,.08);background:#fff}\n .esig-api-toc strong{display:none}\n .esig-api-toggle:checked ~ .esig-api-toc{display:block}\n .esig-api h2{scroll-margin-top:calc(var(--esig-top,0px) + 60px)}\n}\n.esig-api .ep{display:flex;flex-wrap:wrap;align-items:center;gap:10px;background:var(--soft);border:1px solid var(--line);border-radius:8px;padding:10px 14px;margin:.6em 0 1em;font-family:SFMono-Regular,Consolas,Menlo,monospace;font-size:.95em}\n.esig-api .m{font-weight:700;color:#fff;border-radius:4px;padding:2px 8px;font-size:.85em}\n.esig-api .GET{background:#059669}.esig-api .POST{background:#1d4ed8}.esig-api .PATCH{background:#d97706}.esig-api .DELETE{background:#dc2626}\n.esig-api .note{border-left:4px solid var(--brand);background:#eff6ff;padding:10px 14px;border-radius:0 6px 6px 0;margin:1em 0}\n.esig-api .warn{border-left:4px solid #d97706;background:#fffbeb;padding:10px 14px;border-radius:0 6px 6px 0;margin:1em 0}\n.esig-api .badge{display:inline-block;font-size:.75em;font-weight:700;background:#dbeafe;color:#1e40af;border-radius:999px;padding:1px 8px;margin-left:4px;vertical-align:middle}\n.esig-api .req{color:#dc2626;font-weight:700}\n<\/style>\n<div class=\"esig-api\">\n<nav class=\"esig-api-nav\" aria-label=\"Inhoud\">\n<div class=\"esig-api-nav-in\"><input type=\"checkbox\" id=\"esig-api-toc\" class=\"esig-api-toggle\"><label for=\"esig-api-toc\" class=\"esig-api-toc-btn\">Inhoud<\/label><\/p>\n<div class=\"esig-api-toc\"><strong>Inhoud<\/strong><\/p>\n<ol>\n<li><a href=\"#overview\" onclick=\"var t=document.getElementById('esig-api-toc');if(t)t.checked=false;\">Overzicht<\/a><\/li>\n<li><a href=\"#auth\" onclick=\"var t=document.getElementById('esig-api-toc');if(t)t.checked=false;\">Authenticatie<\/a><\/li>\n<li><a href=\"#conventions\" onclick=\"var t=document.getElementById('esig-api-toc');if(t)t.checked=false;\">Conventies<\/a><\/li>\n<li><a href=\"#credits\" onclick=\"var t=document.getElementById('esig-api-toc');if(t)t.checked=false;\">Credits<\/a><\/li>\n<li><a href=\"#flow\" onclick=\"var t=document.getElementById('esig-api-toc');if(t)t.checked=false;\">Hoe een aangetekende zending werkt<\/a><\/li>\n<li><a href=\"#sender\" onclick=\"var t=document.getElementById('esig-api-toc');if(t)t.checked=false;\">Afzenderadres<\/a><\/li>\n<li><a href=\"#request\" onclick=\"var t=document.getElementById('esig-api-toc');if(t)t.checked=false;\">Een aangetekende zending versturen<\/a><\/li>\n<li><a href=\"#object\" onclick=\"var t=document.getElementById('esig-api-toc');if(t)t.checked=false;\">Het object aangetekende zending<\/a><\/li>\n<li><a href=\"#endpoints\" onclick=\"var t=document.getElementById('esig-api-toc');if(t)t.checked=false;\">Andere endpoints<\/a><\/li>\n<li><a href=\"#callbacks\" onclick=\"var t=document.getElementById('esig-api-toc');if(t)t.checked=false;\">Callbacks (webhooks)<\/a><\/li>\n<li><a href=\"#errors\" onclick=\"var t=document.getElementById('esig-api-toc');if(t)t.checked=false;\">Fouten<\/a><\/li>\n<li><a href=\"#retention\" onclick=\"var t=document.getElementById('esig-api-toc');if(t)t.checked=false;\">Bewaring<\/a><\/li>\n<\/ol>\n<\/div>\n<\/div>\n<\/nav>\n<div class=\"esig-api-main\">\n<p style=\"color:#6b7280;margin-top:0\">REST API van e-Signature.eu \u2014 elektronische aangetekende zending<\/p>\n<h2 id=\"overview\">1. Overzicht<\/h2>\n<p>Met de REST API van e-Signature.eu verstuurt uw applicatie elektronische aangetekende zendingen zonder via onze website te gaan. U stuurt de pdf, een geverifieerd afzenderadres en de ontvanger; het document krijgt een gekwalificeerde elektronische tijdstempel en de ontvanger ondertekent een ontvangstbewijs na controle van zijn identiteit. U ontvangt het resultaat via de API of een callback.<\/p>\n<table style=\"display:table;width:100%\">\n<tbody>\n<tr>\n<td style=\"width:180px;min-width:140px;white-space:nowrap\">Basis-URL<\/td>\n<td><code>https:\/\/api.e-signature.eu\/v3\/regis\/<\/code><\/td>\n<\/tr>\n<tr>\n<td style=\"width:180px;min-width:140px;white-space:nowrap\">Postman<\/td>\n<td><a href=\"https:\/\/documenter.getpostman.com\/view\/10230512\/2sBYHUSKry\" target=\"_blank\" rel=\"noopener\">Postman-documentatie en -collectie<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p class=\"note\">De vorige basis-URL <code>https:\/\/www.e-signature.eu\/wp-json\/esig\/v3\/regis\/<\/code> blijft geldig. We raden aan de URL van <code>api.e-signature.eu<\/code> te gebruiken.<\/p>\n<h2 id=\"auth\">2. Authenticatie<\/h2>\n<p>Uw gegevens staan in <strong>Mijn account &gt; API-handtekeningen<\/strong> zodra u bent aangemeld op e-signature.eu:<\/p>\n<ul>\n<li><strong>User ID<\/strong>: in de URL, als parameter <code>userid<\/code> van elke oproep;<\/li>\n<li><strong>API token<\/strong>: in de HTTP-header <code>x-api-key<\/code> van elke oproep.<\/li>\n<\/ul>\n<pre><code>curl -X GET \"https:\/\/api.e-signature.eu\/v3\/regis\/requestBalance?userid=123\" \\\n  -H \"x-api-key: YOUR_API_TOKEN\"<\/code><\/pre>\n<p>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.<\/p>\n<h2 id=\"conventions\">3. Conventies<\/h2>\n<h3>Verzoeken en antwoorden<\/h3>\n<ul>\n<li>Alleen HTTPS. De request bodies zijn JSON (<code>Content-Type: application\/json<\/code>).<\/li>\n<li>Elk antwoord is JSON, in een van deze twee vormen:<\/li>\n<\/ul>\n<pre><code>{ \"success\": true,  \"result\": { ... } }\n{ \"success\": false, \"error\": \"Readable error message\" }<\/code><\/pre>\n<h3>Limieten<\/h3>\n<table>\n<thead>\n<tr>\n<th>Limiet<\/th>\n<th>Waarde<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Oproepen<\/td>\n<td>10 per minuut per account en IP-adres (daarboven HTTP 403, opnieuw proberen na een minuut)<\/td>\n<\/tr>\n<tr>\n<td>Document<\/td>\n<td>E\u00e9n pdf per aanvraag, maximaal 30 MB, niet versleuteld \/ zonder wachtwoord<\/td>\n<\/tr>\n<tr>\n<td>Download van ondertekende documenten<\/td>\n<td>30 dagen na afronding (zie <a href=\"#retention\">Bewaring<\/a>)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2 id=\"credits\">4. Credits<\/h2>\n<p>Aanvragen worden betaald met uw prepaid credits van e-signature.eu. De prijs van een methode vraagt u op met <a href=\"#getMethods\"><code>getMethods<\/code><\/a> (uw specifieke prijzen worden meegerekend). Uw saldo staat in <a href=\"#requestBalance\"><code>requestBalance<\/code><\/a> en in elk aanvraagobject (<code>credits_balance<\/code>).<\/p>\n<h3 id=\"auto-recharge\">Automatisch opladen van credits<\/h3>\n<p>Om nooit zonder credits te vallen, kan uw account zich automatisch opladen. Dit stelt u \u00e9\u00e9n keer in via <strong>Mijn account &gt; API-handtekeningen<\/strong>, niet via de API:<\/p>\n<ol>\n<li>Kies een <strong>drempel<\/strong> (in credits) en het te bestellen <strong>creditpakket<\/strong>.<\/li>\n<li>Sla een betaalmethode op bij onze betaalprovider Mollie (kaart, of SEPA-domicili\u00ebring via Bancontact, iDEAL\u2026). E\u00e9n keer wordt een verificatiebetaling van \u20ac 0,01 gevraagd.<\/li>\n<li>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.<\/li>\n<\/ol>\n<table>\n<thead>\n<tr>\n<th><\/th>\n<th>Automatisch opladen<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Activering<\/td>\n<td>Een afschrijving van credits (bv. een nieuwe aanvraag) waardoor het saldo onder de drempel zakt<\/td>\n<\/tr>\n<tr>\n<td>Toevoeging van de credits<\/td>\n<td>Zodra de betaling is bevestigd: onmiddellijk per kaart, na enkele werkdagen per SEPA-domicili\u00ebring<\/td>\n<\/tr>\n<tr>\n<td>Lopende opladingen<\/td>\n<td>E\u00e9n tegelijk<\/td>\n<\/tr>\n<tr>\n<td>Veiligheidslimiet<\/td>\n<td>Een maximaal aantal automatische opladingen per 30 dagen<\/td>\n<\/tr>\n<tr>\n<td>Mislukte betaling<\/td>\n<td>De bestelling wordt als mislukt gemarkeerd, automatisch opladen wordt uitgeschakeld en u wordt per e-mail verwittigd<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"note\">Het opladen wordt door een afschrijving geactiveerd. Een aanvraag die meer kost dan uw huidige saldo wordt geweigerd (HTTP 403, <code>You do not have enough credits<\/code>) en activeert geen oplading: kies een drempel hoger dan de kosten van uw grootste aanvragen, en houd een marge bij betaling per SEPA-domicili\u00ebring. Uw saldo blijft altijd beschikbaar via <a href=\"#requestBalance\"><code>requestBalance<\/code><\/a> en <code>credits_balance<\/code>.<\/div>\n<h2 id=\"flow\">5. Hoe een aangetekende zending werkt<\/h2>\n<ol>\n<li>U stuurt de pdf, een <strong>geverifieerd<\/strong> afzenderadres en de ontvanger. Het document krijgt een gekwalificeerde elektronische tijdstempel en de credits worden afgeschreven.<\/li>\n<li>De ontvanger krijgt een e-mail met twee links: \u00e9\u00e9n om het ontvangstbewijs te ondertekenen en het document te openen, \u00e9\u00e9n om te weigeren.<\/li>\n<li>Om te ondertekenen bevestigt de ontvanger zijn identiteit met een van de toegelaten methoden (itsme\u00ae, Evrotrust, OTP\u2026).<\/li>\n<li>De aangetekende zending wordt <code>finished<\/code> (ondertekend), <code>declined<\/code> (geweigerd), of <code>expired<\/code> als er na 14 dagen niets is gebeurd.<\/li>\n<\/ol>\n<p>E\u00e9n afzender en \u00e9\u00e9n ontvanger per aangetekende zending. Zoals op de website wordt om de 4 dagen een automatische herinnering verstuurd (niet instelbaar); er is geen manuele herinnering en geen annulering.<\/p>\n<h2 id=\"sender\">6. Afzenderadres<\/h2>\n<p>Zoals op de website moet het afzenderadres (<code>sender_email<\/code>) eerst <strong>geverifieerd<\/strong> zijn:<\/p>\n<ol>\n<li>Roep <code>verifySender<\/code> op: er wordt een e-mail met een verificatielink naar het adres gestuurd (antwoord <code>202<\/code>). Is het adres al geverifieerd, dan is het antwoord <code>200<\/code> met <code>\"verified\": true<\/code>.<\/li>\n<li>De eigenaar van het adres klikt op de link.<\/li>\n<li>Het adres kan dan worden gebruikt in <code>request<\/code>.<\/li>\n<\/ol>\n<div class=\"ep\"><span class=\"m POST\">POST<\/span><span>\/v3\/regis\/verifySender?userid={userid}<\/span><\/div>\n<pre><code>{ \"email\": \"contact@example.com\", \"lang\": \"en\" }<\/code><\/pre>\n<pre><code>{\n  \"success\": true,\n  \"result\": {\n    \"email\": \"contact@example.com\",\n    \"verified\": false,\n    \"message\": \"A verification email has been sent to contact@example.com. The address can be used as sender_email once the link in this email has been clicked.\"\n  }\n}<\/code><\/pre>\n<div class=\"ep\"><span class=\"m GET\">GET<\/span><span>\/v3\/regis\/senders?userid={userid}<\/span><\/div>\n<p>Geeft de afzenderadressen van uw account met hun status.<\/p>\n<pre><code>{\n  \"success\": true,\n  \"result\": [\n    {\n      \"email\": \"contact@example.com\",\n      \"verified\": true\n    },\n    {\n      \"email\": \"legal@example.com\",\n      \"verified\": false\n    }\n  ]\n}<\/code><\/pre>\n<h2 id=\"request\">7. Een aangetekende zending versturen<\/h2>\n<div class=\"ep\"><span class=\"m POST\">POST<\/span><span>\/v3\/regis\/request?userid={userid}<\/span><\/div>\n<pre><code>{\n  \"title\": \"Formal notice rent October\",\n  \"lang\": \"en\",\n  \"sender_email\": \"contact@example.com\",\n  \"recipient\": {\n    \"firstname\": \"Ann\",\n    \"lastname\": \"Peeters\",\n    \"email\": \"ann.peeters@example.com\",\n    \"phone\": \"+32475111222\"\n  },\n  \"methods\": [\n    \"itsme-qes-signature\",\n    \"evrotrust-signature\"\n  ],\n  \"send_email\": true,\n  \"note_html\": \"Please acknowledge receipt.\",\n  \"signature_redirect\": \"https:\/\/www.example.com\/thank-you\",\n  \"external_reference\": \"INV-2026-0042\",\n  \"metadata\": {\n    \"customer_id\": 311\n  },\n  \"pdf_file_base64\": \"JVBERi0xLjcKJeLjz9MK...\"\n}<\/code><\/pre>\n<table>\n<thead>\n<tr>\n<th>Veld<\/th>\n<th>Verplicht<\/th>\n<th>Type<\/th>\n<th>Beschrijving<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>title<\/code><\/td>\n<td><span class=\"req\">ja<\/span><\/td>\n<td>string<\/td>\n<td>Naam van het document. Letters, cijfers en koppeltekens blijven behouden; bestaat de naam al, dan wordt <code>-1<\/code>, <code>-2<\/code>\u2026 toegevoegd.<\/td>\n<\/tr>\n<tr>\n<td><code>lang<\/code><\/td>\n<td><span class=\"req\">ja<\/span><\/td>\n<td>string<\/td>\n<td>Taal van de e-mails en pagina\u2019s: <code>fr<\/code>, <code>nl<\/code>, <code>en<\/code>, <code>de<\/code>, <code>es<\/code>.<\/td>\n<\/tr>\n<tr>\n<td><code>sender_email<\/code><\/td>\n<td><span class=\"req\">ja<\/span><\/td>\n<td>string<\/td>\n<td><strong>Geverifieerd<\/strong> afzenderadres, zie <a href=\"#sender\">Afzenderadres<\/a>.<\/td>\n<\/tr>\n<tr>\n<td><code>recipient.lastname<\/code>, <code>recipient.email<\/code><\/td>\n<td><span class=\"req\">ja<\/span><\/td>\n<td>string<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><code>recipient.firstname<\/code><\/td>\n<td>nee<\/td>\n<td>string<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><code>recipient.phone<\/code><\/td>\n<td>nee<\/td>\n<td>string<\/td>\n<td>Internationaal formaat (<code>+32\u2026<\/code>). Een ongeldig nummer wordt genegeerd.<\/td>\n<\/tr>\n<tr>\n<td><code>methods<\/code><\/td>\n<td><span class=\"req\">ja<\/span><\/td>\n<td>array<\/td>\n<td>Methoden toegelaten om het ontvangstbewijs te ondertekenen, zie <a href=\"#getMethods\"><code>getMethods<\/code><\/a>.<\/td>\n<\/tr>\n<tr>\n<td><code>pdf_file_base64<\/code><\/td>\n<td><span class=\"req\">ja<\/span><\/td>\n<td>string<\/td>\n<td>De pdf, base64-gecodeerd. E\u00e9n bestand, maximaal 30 MB, niet versleuteld.<\/td>\n<\/tr>\n<tr>\n<td><code>send_email<\/code><\/td>\n<td>nee<\/td>\n<td>boolean<\/td>\n<td>Standaard <code>true<\/code>. Met <code>false<\/code> wordt geen e-mail naar de ontvanger of de afzender gestuurd: bezorg zelf <code>signature_link<\/code> en <code>declined_link<\/code>.<\/td>\n<\/tr>\n<tr>\n<td><code>note_html<\/code><\/td>\n<td>nee<\/td>\n<td>string<\/td>\n<td>Bericht toegevoegd aan de e-mail voor de ontvanger.<\/td>\n<\/tr>\n<tr>\n<td><code>signature_redirect<\/code><\/td>\n<td>nee<\/td>\n<td>string (URL)<\/td>\n<td>Pagina die de ontvanger na het ondertekenen ziet.<\/td>\n<\/tr>\n<tr>\n<td><code>external_reference<\/code><\/td>\n<td>nee<\/td>\n<td>string<\/td>\n<td>Uw eigen referentie (factuur, dossier\u2026), maximaal 255 tekens.<\/td>\n<\/tr>\n<tr>\n<td><code>metadata<\/code><\/td>\n<td>nee<\/td>\n<td>object<\/td>\n<td>Vrij JSON-object, maximaal 4 KB, ongewijzigd teruggestuurd.<\/td>\n<\/tr>\n<tr>\n<td><code>callback_url<\/code><\/td>\n<td>nee<\/td>\n<td>string (URL)<\/td>\n<td>Callback-URL alleen voor deze aangetekende zending (publieke HTTPS). Standaard: de URL van uw account.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Kosten<\/h3>\n<p>Prijs van de duurste methode in <code>methods<\/code>, voor \u00e9\u00e9n ontvanger. Afgeschreven bij het aanmaken van de aangetekende zending.<\/p>\n<h3>Antwoord <code>201 Created<\/code><\/h3>\n<pre><code>{\n  \"success\": true,\n  \"result\": {\n    \"type\": \"regis\",\n    \"id_sign\": 123,\n    \"doc_name\": \"Formal-notice-rent-October\",\n    \"lang\": \"en\",\n    \"sender_email\": \"contact@example.com\",\n    \"status_id\": \"pending\",\n    \"date_added\": \"2026-10-20 11:50:00\",\n    \"date_status\": \"2026-10-20 11:50:00\",\n    \"date_expired\": \"2026-11-03 11:50:00\",\n    \"timezone\": \"Europe\/Brussels\",\n    \"methods\": [\n      \"itsme-qes-signature\",\n      \"evrotrust-signature\"\n    ],\n    \"reminder\": 4,\n    \"last_reminder\": null,\n    \"send_email\": true,\n    \"from_api\": true,\n    \"credits\": 1,\n    \"credits_balance\": 41,\n    \"recipient\": {\n      \"firstname\": \"Ann\",\n      \"lastname\": \"Peeters\",\n      \"email\": \"ann.peeters@example.com\",\n      \"phone\": \"+32475111222\",\n      \"status\": \"pending\",\n      \"signing_time\": \"\",\n      \"signing_method\": \"\",\n      \"verified_firstname\": \"\",\n      \"verified_lastname\": \"\",\n      \"signature_link\": \"https:\/\/www.e-signature.eu\/en\/sign-regis\/?key=\u2026\",\n      \"declined_link\": \"https:\/\/www.e-signature.eu\/en\/sign-regis\/?key=\u2026\"\n    },\n    \"external_reference\": \"INV-2026-0042\",\n    \"metadata\": {\n      \"customer_id\": 311\n    }\n  }\n}<\/code><\/pre>\n<h2 id=\"object\">8. Het object aangetekende zending<\/h2>\n<p>Teruggegeven door <code>request<\/code>, <code>getRequest<\/code>, <code>modifyRecipient<\/code>, <code>delete<\/code> en verstuurd in de callbacks. Het veld <code>\"type\": \"regis\"<\/code> onderscheidt het van een ondertekeningsaanvraag als beide dezelfde callback-URL gebruiken.<\/p>\n<table>\n<thead>\n<tr>\n<th>Veld<\/th>\n<th>Beschrijving<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>id_sign<\/code><\/td>\n<td>ID van de aangetekende zending<\/td>\n<\/tr>\n<tr>\n<td><code>status_id<\/code><\/td>\n<td><code>pending<\/code> wacht op de ontvanger \u00b7 <code>finished<\/code> ontvangstbewijs ondertekend \u00b7 <code>declined<\/code> geweigerd door de ontvanger \u00b7 <code>expired<\/code> niet ondertekend na 14 dagen \u00b7 <code>deleted<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>date_added<\/code>, <code>date_status<\/code>, <code>date_expired<\/code><\/td>\n<td>Aanmaak, laatste statuswijziging, vervaldatum (tijdzone van de zending)<\/td>\n<\/tr>\n<tr>\n<td><code>sender_email<\/code>, <code>lang<\/code>, <code>methods<\/code>, <code>reminder<\/code>, <code>send_email<\/code><\/td>\n<td>Zoals bij het aanmaken ingesteld<\/td>\n<\/tr>\n<tr>\n<td><code>last_reminder<\/code><\/td>\n<td>Datum van de laatste herinnering, of <code>null<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>credits<\/code>, <code>credits_balance<\/code><\/td>\n<td>Credits van de zending, huidig saldo van uw account<\/td>\n<\/tr>\n<tr>\n<td><code>recipient<\/code><\/td>\n<td><code>firstname<\/code>, <code>lastname<\/code>, <code>email<\/code>, <code>phone<\/code>, <code>status<\/code>; na ondertekening <code>signing_time<\/code>, <code>signing_method<\/code>, <code>verified_firstname<\/code>, <code>verified_lastname<\/code>; zolang open <code>signature_link<\/code> en <code>declined_link<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>pdf_file_base64<\/code><\/td>\n<td>Document met tijdstempel, zodra de zending niet meer openstaat<\/td>\n<\/tr>\n<tr>\n<td><code>receipt_file_base64<\/code><\/td>\n<td>Ondertekend ontvangstbewijs, bij <code>finished<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>external_reference<\/code>, <code>metadata<\/code><\/td>\n<td>Zoals verstuurd bij het aanmaken<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2 id=\"endpoints\">9. Andere endpoints<\/h2>\n<p>Alle endpoints krijgen <code>userid<\/code> in de URL en <code>x-api-key<\/code> in de headers. <code>id_sign<\/code> wordt in de URL meegegeven.<\/p>\n<h3 id=\"list\">De aangetekende zendingen oplijsten<\/h3>\n<div class=\"ep\"><span class=\"m GET\">GET<\/span><span>\/v3\/regis\/list?userid={userid}&amp;status_id=pending<\/span><\/div>\n<p><code>status_id<\/code> (optioneel): <code>pending<\/code>, <code>finished<\/code>, <code>declined<\/code> of <code>expired<\/code>. <code>external_reference<\/code> (optioneel): alleen de zendingen met deze referentie.<\/p>\n<pre><code>{\n  \"success\": true,\n  \"result\": [\n    {\n      \"id_sign\": 123,\n      \"status_id\": \"pending\",\n      \"doc_name\": \"Formal-notice-rent-October\",\n      \"date_added\": \"2026-10-20 11:50:00\",\n      \"external_reference\": \"INV-2026-0042\"\n    }\n  ]\n}<\/code><\/pre>\n<h3 id=\"getRequest\">Een aangetekende zending opvragen<\/h3>\n<div class=\"ep\"><span class=\"m GET\">GET<\/span><span>\/v3\/regis\/getRequest?userid={userid}&amp;id_sign=123<\/span><\/div>\n<h3 id=\"modifyRecipient\">De ontvanger wijzigen<\/h3>\n<div class=\"ep\"><span class=\"m PATCH\">PATCH<\/span><span>\/v3\/regis\/modifyRecipient?userid={userid}&amp;id_sign=123<\/span><\/div>\n<pre><code>{ \"email\": \"a.peeters@example.org\", \"phone\": \"+32475333444\" }<\/code><\/pre>\n<p>Alleen voor zendingen <code>pending<\/code>. Stuur enkel de te wijzigen velden mee uit <code>firstname<\/code>, <code>lastname<\/code>, <code>email<\/code>, <code>phone<\/code>. Wijzigt het e-mailadres, dan wordt de vorige ontvanger op de hoogte gebracht van de annulering en ontvangt de nieuwe ontvanger de zending.<\/p>\n<h3 id=\"delete\">Een aangetekende zending verwijderen<\/h3>\n<div class=\"ep\"><span class=\"m DELETE\">DELETE<\/span><span>\/v3\/regis\/delete?userid={userid}&amp;id_sign=123<\/span><\/div>\n<p>Alleen status <code>finished<\/code>, <code>declined<\/code> of <code>expired<\/code>. Verwijdert de bestanden en de geschiedenis; het antwoord bevat de zending nog \u00e9\u00e9n keer (<code>status_id: deleted<\/code>): download de documenten v\u00f3\u00f3r het verwijderen.<\/p>\n<h3 id=\"requestAuditTrail\">De audit trail downloaden<\/h3>\n<div class=\"ep\"><span class=\"m GET\">GET<\/span><span>\/v3\/regis\/requestAuditTrail?userid={userid}&amp;id_sign=123<\/span><\/div>\n<p>Niet beschikbaar zolang de zending openstaat. Geeft de zending terug met <code>audit_trail_base64<\/code>: een pdf met tijdstempel en de volledige geschiedenis.<\/p>\n<h3 id=\"requestBalance\">Het creditsaldo opvragen<\/h3>\n<div class=\"ep\"><span class=\"m GET\">GET<\/span><span>\/v3\/regis\/requestBalance?userid={userid}<\/span><\/div>\n<h3 id=\"getMethods\">De methoden oplijsten<\/h3>\n<div class=\"ep\"><span class=\"m GET\">GET<\/span><span>\/v3\/regis\/getMethods?userid={userid}&amp;lang=en<\/span><\/div>\n<p>Methoden toegelaten in <code>methods<\/code> voor aangetekende zendingen, met de prijs <strong>voor uw account<\/strong>. De lijst kan verschillen van die van de handtekening-API.<\/p>\n<pre><code>{\n  \"success\": true,\n  \"result\": [\n    {\n      \"id\": \"itsme-qes-signature\",\n      \"label\": \"itsme\u00ae | QES\",\n      \"credits\": 1\n    },\n    {\n      \"id\": \"otp-email-non-qualified\",\n      \"label\": \"OTP by Email\/SMS | SES\",\n      \"credits\": 0.4\n    }\n  ]\n}<\/code><\/pre>\n<h2 id=\"callbacks\">10. Callbacks (webhooks)<\/h2>\n<p>Stel uw callback-URL in via <strong>Mijn account &gt; API-handtekeningen<\/strong> (HTTPS, publiek bereikbaar). U kunt ook per aanvraag een <code>callback_url<\/code> opgeven. De callback is een <code>POST<\/code> met een JSON-body met de volledige huidige status van de aanvraag (zelfde formaat als <code>getRequest<\/code>), verstuurd voor aanvragen die via de API zijn aangemaakt.<\/p>\n<h3>Eventvelden<\/h3>\n<table>\n<thead>\n<tr>\n<th>Veld<\/th>\n<th>Beschrijving<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>event<\/code><\/td>\n<td>Type event (zie hieronder)<\/td>\n<\/tr>\n<tr>\n<td><code>event_id<\/code><\/td>\n<td>Unieke ID van het event (<code>evt_\u2026<\/code>). <strong>Identiek bij elke nieuwe poging<\/strong> voor hetzelfde event: gebruik het om dubbels te negeren.<\/td>\n<\/tr>\n<tr>\n<td><code>event_at<\/code><\/td>\n<td>Datum van het event (UTC, ISO 8601)<\/td>\n<\/tr>\n<tr>\n<td><code>changes<\/code><\/td>\n<td>Statuswijziging van de ontvanger, bv. <code>[{\"signer_key\": 1, \"from\": \"pending\", \"to\": \"signed\"}]<\/code> (alleen bij een wijziging)<\/td>\n<\/tr>\n<tr>\n<td><code>changes<\/code> (<code>signer.email_failed<\/code>)<\/td>\n<td>Niet-afgeleverde e-mail, bv. <code>[{\"signer_key\": 2, \"email\": \"marc.dubois@example.com\", \"bounce_type\": \"permanent\", \"reason\": \"smtp; 550 5.1.1 user unknown\"}]<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>external_reference<\/code>, <code>metadata<\/code><\/td>\n<td>Zoals verstuurd bij het aanmaken van de aanvraag<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Types events<\/h3>\n<table>\n<thead>\n<tr>\n<th>Event<\/th>\n<th>Wanneer<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>signer.signed<\/code><\/td>\n<td>Een ondertekenaar heeft ondertekend, de aanvraag loopt nog<\/td>\n<\/tr>\n<tr>\n<td><code>signer.declined<\/code>, <code>signer.skipped<\/code>, <code>signer.expired<\/code><\/td>\n<td>Een ondertekenaar heeft geweigerd, werd overgeslagen of is verlopen<\/td>\n<\/tr>\n<tr>\n<td><code>request.completed<\/code><\/td>\n<td>Alle ondertekenaars hebben ondertekend: de ondertekende pdf is inbegrepen (<code>pdf_file_base64<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><code>request.stopped<\/code><\/td>\n<td>De aanvraag werd stopgezet: de gedeeltelijk ondertekende pdf is inbegrepen<\/td>\n<\/tr>\n<tr>\n<td><code>request.cancelled<\/code><\/td>\n<td>De aanvraag werd geannuleerd<\/td>\n<\/tr>\n<tr>\n<td><code>request.deleted<\/code><\/td>\n<td>De aanvraag werd verwijderd<\/td>\n<\/tr>\n<tr>\n<td><code>request.expired<\/code><\/td>\n<td>De aanvraag is verlopen<\/td>\n<\/tr>\n<tr>\n<td><code>request.declined<\/code><\/td>\n<td>Aangetekende zending geweigerd door de ontvanger<\/td>\n<\/tr>\n<tr>\n<td><code>signer.email_failed<\/code><\/td>\n<td>Een e-mail naar een ondertekenaar kon niet worden afgeleverd, zie <a href=\"#undelivered\">Niet-afgeleverde e-mails<\/a><\/td>\n<\/tr>\n<tr>\n<td><code>request.updated<\/code><\/td>\n<td>Elke andere wijziging: herinnering verstuurd, ondertekenaar gewijzigd, nieuwe ondertekeningslinks\u2026<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>De body bevat altijd de volledige huidige status: uw integratie kan steunen op <code>status_id<\/code> en de status van elke ondertekenaar, niet alleen op het type event.<\/p>\n<h3 id=\"undelivered\">Niet-afgeleverde e-mails<\/h3>\n<p>Wanneer een e-mail die e-Signature.eu naar een ondertekenaar (of naar de ontvanger van een aangetekende zending) stuurt, door diens mailserver wordt teruggestuurd (onbekend adres, volle mailbox, server die het bericht weigert\u2026), ontvangt u de callback <code>signer.email_failed<\/code>. De status van de aanvraag en van de ondertekenaar verandert niet.<\/p>\n<table>\n<thead>\n<tr>\n<th>Veld van <code>changes<\/code><\/th>\n<th>Beschrijving<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>signer_key<\/code><\/td>\n<td>Sleutel van de ondertekenaar in <code>signers<\/code> (altijd 1 voor een aangetekende zending)<\/td>\n<\/tr>\n<tr>\n<td><code>email<\/code><\/td>\n<td>Adres met fout<\/td>\n<\/tr>\n<tr>\n<td><code>bounce_type<\/code><\/td>\n<td><code>permanent<\/code>: het adres bestaat niet of weigert berichten \u00b7 <code>transient<\/code>: tijdelijk probleem (mailbox vol, server onbereikbaar), aflevering opgegeven na meerdere pogingen \u00b7 <code>undetermined<\/code>: onbekende reden<\/td>\n<\/tr>\n<tr>\n<td><code>reason<\/code><\/td>\n<td>Technisch bericht van de mailserver van de ontvanger, indien beschikbaar<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Corrigeer het adres met <code>modifySigner<\/code> (ondertekeningsaanvraag) of <code>modifyRecipient<\/code> (aangetekende zending): de uitnodiging wordt naar het nieuwe adres verstuurd en er wordt geen annuleringsmail naar het foutieve adres gestuurd. De accounthouder wordt ook per e-mail verwittigd, en de ondertekenaar wordt in het online dashboard gemarkeerd met <strong>E-mail niet afgeleverd<\/strong>.<\/p>\n<p><code>permanent<\/code>: er worden voor deze aanvraag geen e-mails meer naar dit adres gestuurd (ook geen herinneringen) tot het gecorrigeerd is. <code>transient<\/code> of <code>undetermined<\/code>: e-mails worden niet geblokkeerd; de volgende herinnering wordt normaal verstuurd en als die opnieuw mislukt, ontvangt u een nieuwe callback <code>signer.email_failed<\/code>.<\/p>\n<p class=\"note\">Alleen lopende aanvragen en ondertekenaars die nog niet ondertekend hebben zijn betrokken. Met <code>send_email: false<\/code> stuurt e-Signature.eu geen e-mail naar de ondertekenaars, dus deze gebeurtenis doet zich niet voor.<\/p>\n<h3>Headers<\/h3>\n<table>\n<thead>\n<tr>\n<th>Header<\/th>\n<th>Voorbeeld<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>X-Esig-Api-Version<\/code><\/td>\n<td><code>3<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>X-Esig-Event<\/code><\/td>\n<td><code>signer.signed<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>X-Esig-Event-Id<\/code><\/td>\n<td><code>evt_4f0c2b9e1d7a3c55e8b1a2f0<\/code><\/td>\n<\/tr>\n<tr>\n<td><code>X-Esig-Delivery-Attempt<\/code><\/td>\n<td><code>1<\/code>, <code>2<\/code>, \u2026<\/td>\n<\/tr>\n<tr>\n<td><code>X-Esig-Signature<\/code><\/td>\n<td><code>t=1792407600,v1=5d41402abc4b2a76b9719d911017c592\u2026<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>De handtekening controleren<\/h3>\n<p>Uw ondertekeningsgeheim staat in <strong>Mijn account &gt; API-handtekeningen<\/strong>, waar u het ook opnieuw kunt aanmaken. <code>v1<\/code> is de HMAC-SHA256 van <code>\"&lt;t&gt;.&lt;raw request body&gt;\"<\/code> met uw geheim, hexadecimaal gecodeerd. Gebruik de <strong>ruwe<\/strong> body, v\u00f3\u00f3r elke JSON-verwerking, en weiger callbacks ouder dan 5 minuten.<\/p>\n<h4>PHP<\/h4>\n<pre><code>$body   = file_get_contents( 'php:\/\/input' );\n$header = $_SERVER['HTTP_X_ESIG_SIGNATURE'] ?? '';\npreg_match( '\/t=(\\d+),v1=([a-f0-9]{64})\/', $header, $m );\n$valid = $m\n    &amp;&amp; abs( time() - (int) $m[1] ) &lt;= 300\n    &amp;&amp; hash_equals( hash_hmac( 'sha256', $m[1] . '.' . $body, $secret ), $m[2] );<\/code><\/pre>\n<h4>Node.js<\/h4>\n<pre><code>const crypto = require('crypto');\nfunction verify(rawBody, header, secret) {\n  const m = \/t=(\\d+),v1=([a-f0-9]{64})\/.exec(header || '');\n  if (!m || Math.abs(Date.now() \/ 1000 - Number(m[1])) &gt; 300) return false;\n  const expected = crypto.createHmac('sha256', secret).update(`${m[1]}.${rawBody}`).digest('hex');\n  return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(m[2]));\n}<\/code><\/pre>\n<h4>C# (.NET)<\/h4>\n<pre><code>using System.Security.Cryptography; using System.Text; using System.Text.RegularExpressions;\nstatic bool Verify(string rawBody, string header, string secret) {\n    var m = Regex.Match(header ?? \"\", @\"t=(\\d+),v1=([a-f0-9]{64})\");\n    if (!m.Success || Math.Abs(DateTimeOffset.UtcNow.ToUnixTimeSeconds() - long.Parse(m.Groups[1].Value)) &gt; 300) return false;\n    using var h = new HMACSHA256(Encoding.UTF8.GetBytes(secret));\n    var expected = Convert.ToHexString(h.ComputeHash(Encoding.UTF8.GetBytes(m.Groups[1].Value + \".\" + rawBody))).ToLowerInvariant();\n    return CryptographicOperations.FixedTimeEquals(Encoding.ASCII.GetBytes(expected), Encoding.ASCII.GetBytes(m.Groups[2].Value));\n}<\/code><\/pre>\n<h3>Antwoorden en nieuwe pogingen<\/h3>\n<ul>\n<li>Antwoord met <strong>HTTP 2xx<\/strong> zodra de callback is ontvangen en verwerk hem zo nodig asynchroon.<\/li>\n<li>Bij een netwerkfout, time-out (30 s), HTTP 429 of 5xx wordt de callback elk uur opnieuw verstuurd met hetzelfde <code>event_id<\/code>, tot 24 pogingen. Andere 4xx-antwoorden gelden als definitief. Wijzigt de aanvraag opnieuw v\u00f3\u00f3r een geslaagde levering, dan bevat de volgende callback een nieuw event en de volledige huidige status. De huidige status blijft altijd beschikbaar via <code>getRequest<\/code>.<\/li>\n<li>Doorverwijzingen worden gevolgd (de methode <code>POST<\/code> blijft behouden). <code>localhost<\/code> en priv\u00e9-adressen kunnen niet worden gebruikt.<\/li>\n<\/ul>\n<p>Voor aangetekende zendingen wordt de callback verstuurd wanneer het ontvangstbewijs is ondertekend, geweigerd of verlopen, bij elke automatische herinnering en wanneer de ontvanger wordt gewijzigd (op de website of via de API). De ontvanger is <code>signer_key<\/code> 1 in <code>changes<\/code>.<\/p>\n<h2 id=\"errors\">11. Fouten<\/h2>\n<p>Fouten worden teruggegeven met <code>\"success\": false<\/code> en een leesbaar bericht <code>error<\/code>. Baseer uw logica op de HTTP-code: de berichten kunnen worden verbeterd.<\/p>\n<table>\n<thead>\n<tr>\n<th>HTTP-code<\/th>\n<th>Betekenis<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>200 \/ 201 \/ 202<\/td>\n<td>OK \/ zending aangemaakt \/ verificatiemail verstuurd<\/td>\n<\/tr>\n<tr>\n<td>400<\/td>\n<td>Ontbrekend of ongeldig veld (het bericht noemt het veld)<\/td>\n<\/tr>\n<tr>\n<td>401<\/td>\n<td>Ongeldige <code>userid<\/code> of <code>x-api-key<\/code><\/td>\n<\/tr>\n<tr>\n<td>403<\/td>\n<td>Onvoldoende credits, of limiet van oproepen bereikt (10 per minuut)<\/td>\n<\/tr>\n<tr>\n<td>404<\/td>\n<td><code>id_sign<\/code> ontbreekt of is onbekend voor dit account<\/td>\n<\/tr>\n<tr>\n<td>412<\/td>\n<td>Actie niet mogelijk in de huidige status (afzenderadres niet geverifieerd, verkeerde status)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2 id=\"retention\">12. Bewaring<\/h2>\n<p>Het document met tijdstempel en het ondertekende ontvangstbewijs kunnen <strong>30 dagen<\/strong> worden gedownload, via <code>getRequest<\/code> of de callback. De audit trail wordt bewaard gedurende de periode vastgelegd in onze <a href=\"https:\/\/www.e-signature.eu\/nl\/dpa\/\">DPA<\/a>. Archiveer de documenten binnen 30 dagen aan uw kant.<\/p>\n<\/div>\n<\/div>\n<p><script data-no-optimize=\"1\" data-no-defer=\"1\" data-no-minify=\"1\" data-cfasync=\"false\" nowprocket>\n(function(){\n  var root=document.querySelector('.esig-api'); if(!root) return;\n  var nav=root.querySelector('.esig-api-nav'), box=root.querySelector('.esig-api-nav-in');\n  function headerBottom(){\n    \/* empile les \u00e9l\u00e9ments fixes du haut (barre d'admin WordPress, en-t\u00eate collant\u2026) *\/\n    var b=0, xs=[Math.round(window.innerWidth\/2), 40, window.innerWidth-40];\n    for(var k=0; k<6; k++){\n      var y=b+2, found=0;\n      xs.forEach(function(x){\n        (document.elementsFromPoint?document.elementsFromPoint(x,y):[]).forEach(function(el){\n          for(var n=el; n; n=n.parentElement){\n            if(n===document.body||n===document.documentElement||n===root) break;\n            var p=getComputedStyle(n).position;\n            if(p==='fixed'||p==='sticky'){\n              var r=n.getBoundingClientRect();\n              if(r.top<=y){ if(r.bottom>b){ if(r.bottom<window.innerHeight\/2){ b=r.bottom; found=1; } } }\n              break;\n            }\n          }\n        });\n      });\n      if(!found) break;\n    }\n    return Math.round(b);\n  }\n  \/* section en cours de lecture surlign\u00e9e dans le sommaire *\/\n  var toc=root.querySelector('.esig-api-toc'), links=[].slice.call(root.querySelectorAll('.esig-api-toc a'));\n  var heads=links.map(function(a){ return document.getElementById((a.getAttribute('href')||'').slice(1)); });\n  var current=-1;\n  function spy(top){\n    var cur=0;\n    var line=top+(window.innerHeight-top)*0.3; \/* titre pass\u00e9 au-dessus du premier tiers de l'\u00e9cran *\/\n    heads.forEach(function(h,i){ if(h){ if(h.getBoundingClientRect().top<=line) cur=i; } });\n    if(window.innerHeight+window.scrollY>=document.documentElement.scrollHeight-2) cur=links.length-1;\n    if(cur===current) return;\n    current=cur;\n    links.forEach(function(a,i){ a.classList.toggle('is-active',i===cur); a.parentNode.classList.toggle('is-active',i===cur); });\n    var a=links[cur];\n    if(a){ if(toc.scrollHeight>toc.clientHeight){\n      var y=a.getBoundingClientRect().top-toc.getBoundingClientRect().top+toc.scrollTop;\n      if(y<toc.scrollTop+20) toc.scrollTop=y-20;\n      else if(y>toc.scrollTop+toc.clientHeight-40) toc.scrollTop=y-toc.clientHeight+40;\n    } }\n  }\n  function reset(){box.classList.remove('is-fixed');box.style.left=box.style.width=box.style.top='';nav.style.minHeight='';}\n  var ticking=false;\n  function update(){\n    ticking=false;\n    var mobile=window.innerWidth<=900, gap=mobile?0:20, top=headerBottom()+gap;\n    root.style.setProperty('--esig-top',top+'px');\n    spy(top);\n    reset();\n    var n=nav.getBoundingClientRect(), b=box.getBoundingClientRect(), end=root.getBoundingClientRect().bottom;\n    if(n.top>=top) return;                       \/* pas encore atteint : position normale *\/\n    if(mobile) nav.style.minHeight=b.height+'px'; \/* garde la place du bouton *\/\n    var y=Math.min(top, end-b.height);           \/* s'arr\u00eate en bas de la documentation *\/\n    box.classList.add('is-fixed'); box.style.top=y+'px'; box.style.left=n.left+'px'; box.style.width=n.width+'px';\n    \/* parent avec transform (animations Elementor\u2026) : position:fixed relative \u00e0 ce parent \u2192 correction *\/\n    var f=box.getBoundingClientRect(), dy=f.top-y, dx=f.left-n.left;\n    if(Math.abs(dy)>1||Math.abs(dx)>1){ box.style.top=(y-dy)+'px'; box.style.left=(n.left-dx)+'px'; }\n  }\n  function req(){ if(!ticking){ticking=true;requestAnimationFrame(update);} }\n  window.addEventListener('scroll',req,{passive:true}); window.addEventListener('resize',req);\n  document.addEventListener('change',function(e){ if(e.target){ if(e.target.id==='esig-api-toc') req(); } });\n  update(); window.addEventListener('load',update); setTimeout(update,1500);\n})();\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Inhoud Inhoud Overzicht Authenticatie Conventies Credits Hoe een aangetekende zending werkt Afzenderadres Een aangetekende zending versturen Het object aangetekende zending&#8230;<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":24186,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-29993","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.e-signature.eu\/nl\/wp-json\/wp\/v2\/pages\/29993","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.e-signature.eu\/nl\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.e-signature.eu\/nl\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.e-signature.eu\/nl\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.e-signature.eu\/nl\/wp-json\/wp\/v2\/comments?post=29993"}],"version-history":[{"count":2,"href":"https:\/\/www.e-signature.eu\/nl\/wp-json\/wp\/v2\/pages\/29993\/revisions"}],"predecessor-version":[{"id":30019,"href":"https:\/\/www.e-signature.eu\/nl\/wp-json\/wp\/v2\/pages\/29993\/revisions\/30019"}],"up":[{"embeddable":true,"href":"https:\/\/www.e-signature.eu\/nl\/wp-json\/wp\/v2\/pages\/24186"}],"wp:attachment":[{"href":"https:\/\/www.e-signature.eu\/nl\/wp-json\/wp\/v2\/media?parent=29993"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}