{"id":2347,"date":"2020-10-29T19:24:03","date_gmt":"2020-10-29T19:24:03","guid":{"rendered":"https:\/\/staging.ezsign.ca\/prix\/forfaits-moyennes-et-grandes-entreprises\/api\/"},"modified":"2026-07-13T14:56:57","modified_gmt":"2026-07-13T14:56:57","slug":"api","status":"publish","type":"page","link":"https:\/\/www.ezsign.com\/fr\/api\/","title":{"rendered":"API"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2347\" class=\"elementor elementor-2347 elementor-2215\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e4e7a4f e-con-full ms-back e-flex e-con e-parent\" data-id=\"e4e7a4f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-76e1c20 elementor-widget elementor-widget-heading\" data-id=\"76e1c20\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Connectez eZsign \u00e0 vos outils<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-98af1e1 elementor-widget elementor-widget-text-editor\" data-id=\"98af1e1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Int\u00e9grations populaires :<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3876eda e-con-full e-flex e-con e-child\" data-id=\"3876eda\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-4f77ffd e-con-full e-flex e-con e-child\" data-id=\"4f77ffd\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-29d2b4b elementor-widget elementor-widget-image\" data-id=\"29d2b4b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"800\" height=\"500\" src=\"https:\/\/www.ezsign.com\/wp-content\/smush-webp\/2025\/08\/2.png2_.png.webp\" class=\"attachment-full size-full wp-image-27777\" alt=\"\" srcset=\"https:\/\/www.ezsign.com\/wp-content\/smush-webp\/2025\/08\/2.png2_.png.webp 800w, https:\/\/www.ezsign.com\/wp-content\/uploads\/2025\/08\/2.png2_-300x188.png 300w, https:\/\/www.ezsign.com\/wp-content\/smush-webp\/2025\/08\/2.png2_-768x480.png.webp 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-dab8e17 e-con-full e-flex e-con e-child\" data-id=\"dab8e17\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0c9ce5f elementor-widget elementor-widget-image\" data-id=\"0c9ce5f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"800\" height=\"500\" src=\"https:\/\/www.ezsign.com\/wp-content\/smush-webp\/2025\/08\/1.png2_.png.webp\" class=\"attachment-large size-large wp-image-27779\" alt=\"\" srcset=\"https:\/\/www.ezsign.com\/wp-content\/smush-webp\/2025\/08\/1.png2_.png.webp 800w, https:\/\/www.ezsign.com\/wp-content\/smush-webp\/2025\/08\/1.png2_-300x188.png.webp 300w, https:\/\/www.ezsign.com\/wp-content\/smush-webp\/2025\/08\/1.png2_-768x480.png.webp 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-e793066 e-con-full e-flex e-con e-child\" data-id=\"e793066\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-efcd9e0 elementor-widget elementor-widget-image\" data-id=\"efcd9e0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/hopem.com\/en\/property-management-software\/\">\n\t\t\t\t\t\t\t<img decoding=\"async\" width=\"800\" height=\"500\" src=\"https:\/\/www.ezsign.com\/wp-content\/smush-webp\/2025\/08\/4.png2_.png.webp\" class=\"attachment-large size-large wp-image-27781\" alt=\"\" srcset=\"https:\/\/www.ezsign.com\/wp-content\/smush-webp\/2025\/08\/4.png2_.png.webp 800w, https:\/\/www.ezsign.com\/wp-content\/smush-webp\/2025\/08\/4.png2_-300x188.png.webp 300w, https:\/\/www.ezsign.com\/wp-content\/smush-webp\/2025\/08\/4.png2_-768x480.png.webp 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f25e51f e-con-full e-flex e-con e-child\" data-id=\"f25e51f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-48468ca elementor-widget elementor-widget-image\" data-id=\"48468ca\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/www.viridem.ca\/en\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"500\" src=\"https:\/\/www.ezsign.com\/wp-content\/smush-webp\/2025\/08\/3.png2_.png.webp\" class=\"attachment-large size-large wp-image-27783\" alt=\"\" srcset=\"https:\/\/www.ezsign.com\/wp-content\/smush-webp\/2025\/08\/3.png2_.png.webp 800w, https:\/\/www.ezsign.com\/wp-content\/smush-webp\/2025\/08\/3.png2_-300x188.png.webp 300w, https:\/\/www.ezsign.com\/wp-content\/smush-webp\/2025\/08\/3.png2_-768x480.png.webp 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7b88018 e-con-full e-flex e-con e-child\" data-id=\"7b88018\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-57d2acc elementor-widget elementor-widget-image\" data-id=\"57d2acc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/pgsolutions.com\/\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"500\" src=\"https:\/\/www.ezsign.com\/wp-content\/smush-webp\/2025\/08\/5.png2_.png.webp\" class=\"attachment-large size-large wp-image-27785\" alt=\"\" srcset=\"https:\/\/www.ezsign.com\/wp-content\/smush-webp\/2025\/08\/5.png2_.png.webp 800w, https:\/\/www.ezsign.com\/wp-content\/smush-webp\/2025\/08\/5.png2_-300x188.png.webp 300w, https:\/\/www.ezsign.com\/wp-content\/smush-webp\/2025\/08\/5.png2_-768x480.png.webp 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-462f436 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"462f436\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-21cbb17\" data-id=\"21cbb17\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-a0097d8 elementor-widget elementor-widget-heading\" data-id=\"a0097d8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\"><a href=\"https:\/\/www.ezsign.com\/fr\/tarifications\/forfaits-moyennes-et-grandes-entreprises\/\">Retour aux options de forfaits<\/a><\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-19d0a33 elementor-widget elementor-widget-heading\" data-id=\"19d0a33\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">API<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-006f3d2 elementor-widget elementor-widget-text-editor\" data-id=\"006f3d2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span class=\"a_GcMg\">Pour acc\u00e9der \u00e0 l\u2019API, vous devez poss\u00e9der un compte entreprise au co\u00fbt mensuel de 222.80$. Ce compte vous donne automatiquement 10 <\/span><span class=\"a_GcMg\">utilisateurs eZsign et 100 dossiers mensuels compl\u00e9t\u00e9s via l\u2019API.<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ade1394 elementor-widget elementor-widget-html\" data-id=\"ade1394\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- Styles for underline and popup -->\r\n\r\n<style>\r\n  \/* Your existing styles... *\/\r\n\r\n  @media (max-width: 570px) {\r\n    .custom-popup {\r\n      width: 70% !important;\r\n      padding: 15px;\r\n      font-size: 14px;\r\n      line-height: 20px;\r\n      \r\n    }\r\n\r\n    .popup-link {\r\n      font-size: 14px;\r\n      line-height: 20px;\r\n    }\r\n\r\n    .popup-close {\r\n      font-size: 18px;\r\n    }\r\n  }\r\n<\/style>\r\n\r\n<style>\r\n  .popup-link {\r\n    text-decoration: underline;\r\n    cursor: pointer;\r\n    color: inherit !important;\r\n    font-weight: bold !important;\r\n  }\r\n  .popup-link {\r\n  text-decoration: underline;\r\n  cursor: pointer;\r\n  color: inherit;\r\n  display: inline !important;\r\n  visibility: visible !important;\r\n}\r\n\r\n  .custom-popup {\r\n    display: none;\r\n    position: fixed;\r\n    z-index: 9999;\r\n    top: 50%;\r\n    left: 50%;\r\n    transform: translate(-50%, -50%);\r\n    width: 90%;\r\n    max-width: 500px;\r\n    background: white;\r\n    padding: 20px;\r\n    border-radius: 10px;\r\n    box-shadow: 0 0 15px rgba(0,0,0,0.3);\r\n  }\r\n\r\n  .popup-overlay {\r\n    display: none;\r\n    position: fixed;\r\n    z-index: 9998;\r\n    top: 0;\r\n    left: 0;\r\n    width: 100%;\r\n    height: 100%;\r\n    background: rgba(0,0,0,0.5);\r\n  }\r\n\r\n  .popup-close {\r\n    text-align: right;\r\n    margin-top: -10px;\r\n    margin-bottom: 10px;\r\n    cursor: pointer;\r\n    font-weight: bold;\r\n  }\r\n<\/style>\r\n\r\n<!-- Paragraph with clickable popup words -->\r\n<p style=\"font-weight:bold;\">Qu\u2019est\u2011ce qu\u2019un dossier ?<\/p>\r\n<p>\r\n  Un dossier regroupe un ou plusieurs documents \u00e0 faire signer. Vous pouvez y mettre plusieurs fichiers et signataires\u202f; la facturation se fait par\r\ndossier, pas par document individuel. Le forfait Entreprise API comprend 100 dossiers API compl\u00e9t\u00e9s par mois, qu\u2019ils proviennent d\u2019une int\u00e9gration, d\u2019un\r\n\r\n  <span class=\"popup-link\" onclick=\"openPopup('popup1')\">envoi group\u00e9<\/span> \r\n  ou d\u2019un \r\n  <span class=\"popup-link\" onclick=\"openPopup('popup2')\">lien partag\u00e9<\/span>.\r\n  <span >\r\nVous pouvez en cr\u00e9er autant que vous le souhaitez ; au-del\u00e0 de 100 dossiers API mensuels, les dossiers\r\nsuppl\u00e9mentaires sont factur\u00e9s selon le tableau ci-dessous.\r\n<\/span>\r\n\r\n  \r\n<\/p>\r\n\r\n<!-- Popup 1: Envoi group\u00e9 -->\r\n<div id=\"popup1\" class=\"custom-popup\">\r\n  <div class=\"popup-close\" onclick=\"closePopup()\">\u2716<\/div>\r\n  <p>\r\n    L\u2019envoi group\u00e9 vous permet de faire signer un m\u00eame document \u00e0\r\n    plusieurs personnes en quelques clics. Chaque destinataire re\u00e7oit sa\r\n    propre copie personnalis\u00e9e, avec son nom et ses informations.\r\n  <\/p>\r\n  <p>\r\n    Par exemple, vous pouvez envoyer un formulaire de consentement \u00e0\r\n    200 employ\u00e9s en une seule op\u00e9ration. eZsign cr\u00e9e automatiquement\r\n    200 dossiers distincts et suit chaque signature s\u00e9par\u00e9ment.\r\n  <\/p>\r\n<\/div>\r\n\r\n<!-- Popup 2: Lien partag\u00e9 -->\r\n<div id=\"popup2\" class=\"custom-popup\">\r\n  <div class=\"popup-close\" onclick=\"closePopup()\">\u2716<\/div>\r\n  <p>\r\n    Un lien partag\u00e9 vous permet de rendre un document accessible \u00e0 la signature via\r\n    un simple lien web, sans avoir \u00e0 conna\u00eetre les courriels des signataires \u00e0 l\u2019avance.\r\n  <\/p>\r\n  <p>\r\n    Par exemple, vous pouvez publier un formulaire d\u2019inscription sur votre site web\r\n    ou votre intranet. Chaque personne qui clique sur le lien acc\u00e8de \u00e0 une version\r\n    unique du document \u00e0 compl\u00e9ter et signer. eZsign cr\u00e9e automatiquement un\r\n    nouveau dossier pour chaque soumission, avec un suivi complet.\r\n  <\/p>\r\n<\/div>\r\n\r\n<!-- Overlay background -->\r\n<div id=\"popupOverlay\" class=\"popup-overlay\" onclick=\"closePopup()\"><\/div>\r\n\r\n<!-- JavaScript to open\/close popup -->\r\n<script>\r\n  function openPopup(id) {\r\n    document.getElementById(id).style.display = 'block';\r\n    document.getElementById('popupOverlay').style.display = 'block';\r\n  }\r\n  function closePopup() {\r\n    document.querySelectorAll('.custom-popup').forEach(p => p.style.display = 'none');\r\n    document.getElementById('popupOverlay').style.display = 'none';\r\n  }\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-afa0e01 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"afa0e01\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-6df015f\" data-id=\"6df015f\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-fec5827 elementor-widget elementor-widget-heading\" data-id=\"fec5827\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Tarification des dossiers API<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-d884bd0 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"d884bd0\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-25 elementor-top-column elementor-element elementor-element-7140e22\" data-id=\"7140e22\" data-element_type=\"column\" data-e-type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-91bfa85 cs-te elementor-widget elementor-widget-html\" data-id=\"91bfa85\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\r\n  \/* Clickable link with icon *\/\r\n  .popup-link-666 {\r\n    cursor: pointer;\r\n    color: white !important;\r\n    font-size: 16px;\r\n    line-height: 22px;\r\n    display: inline-flex;\r\n    align-items: center;\r\n    gap: 0px;\r\n  }\r\n\r\n  \/* Small circle icon *\/\r\n  .info-icon-666 {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    width: 18px;\r\n    height: 18px;\r\n    background-color: #435363;\r\n    color: white;\r\n    border-radius: 50%;\r\n    font-size: 12px;\r\n    font-weight: bold;\r\n  }\r\n\r\n  \/* Popup styling *\/\r\n  .custom-popup-666 {\r\n    display: none;\r\n    position: fixed;\r\n    z-index: 9999;\r\n    top: 50%;\r\n    left: 50%;\r\n    transform: translate(-50%, -50%);\r\n    width: 90%;\r\n    max-width: 500px;\r\n    background: white;\r\n    padding: 20px;\r\n    border-radius: 10px;\r\n    box-shadow: 0 0 15px rgba(0,0,0,0.3);\r\n    text-align: left;\r\n  }\r\n\r\n  \/* Dark overlay *\/\r\n  .popup-overlay-666 {\r\n    display: none;\r\n    position: fixed;\r\n    z-index: 9998;\r\n    top: 0;\r\n    left: 0;\r\n    width: 100%;\r\n    height: 100%;\r\n    background: rgba(0,0,0,0.5);\r\n  }\r\n\r\n  \/* Close button *\/\r\n  .popup-close-666 {\r\n    text-align: right;\r\n    margin-top: -10px;\r\n    margin-bottom: 10px;\r\n    cursor: pointer;\r\n    font-weight: bold;\r\n    font-size: 18px;\r\n  }\r\n\r\n  \/* Mobile adjustments *\/\r\n  @media (max-width: 600px) {\r\n    .custom-popup-666 {\r\n      width: 70% !important;\r\n      padding: 15px;\r\n      font-size: 14px;\r\n      line-height: 20px;\r\n    }\r\n    .popup-link-666 {\r\n      font-size: 14px;\r\n      line-height: 20px;\r\n    }\r\n    .popup-close-666 {\r\n      font-size: 18px;\r\n    }\r\n    .popup-link-666 {\r\n    cursor: pointer;\r\n    color: white !important;\r\n    font-size: 10px !important;\r\n    line-height: 22px;\r\n    display: inline-flex;\r\n    gap: 8px;\r\n    \r\n  }\r\n  }\r\n<\/style>\r\n\r\n<!-- Clickable text + icon -->\r\n<span class=\"popup-link-666\" onclick=\"openPopup666('popup-666')\">\r\n <span>Nombre de dossiers <u>compl\u00e9t\u00e9s<\/u> par mois<\/span>\r\n  <span class=\"info-icon-666\">?<\/span>\r\n<\/span>\r\n\r\n<!-- Popup content -->\r\n<div id=\"popup-666\" class=\"custom-popup-666\">\r\n  <div class=\"popup-close-666\" onclick=\"closePopup666()\">\u2716<\/div>\r\n  <p><strong>Qu\u2019est-ce qu\u2019un dossier ?<\/strong><\/p>\r\n  <p>\r\nUn dossier regroupe un ou plusieurs documents \u00e0 faire signer.\r\nVous pouvez y mettre plusieurs fichiers et signataires\u202f; la\r\nfacturation se fait par dossier, pas par document individuel. \r\n  <\/p>\r\n  <p>\r\n    Le\r\nforfait Entreprise API comprend 100 dossiers API par mois, qu\u2019ils\r\nproviennent d\u2019une int\u00e9gration, d\u2019un envoi group\u00e9 ou d\u2019un lien\r\npartag\u00e9 .\r\n  <\/p>\r\n<\/div>\r\n\r\n<!-- Background overlay -->\r\n<div id=\"popupOverlay-666\" class=\"popup-overlay-666\" onclick=\"closePopup666()\"><\/div>\r\n\r\n<!-- Script -->\r\n<script>\r\n  function openPopup666(id) {\r\n    document.getElementById(id).style.display = 'block';\r\n    document.getElementById('popupOverlay-666').style.display = 'block';\r\n  }\r\n  function closePopup666() {\r\n    document.querySelectorAll('.custom-popup-666').forEach(p => p.style.display = 'none');\r\n    document.getElementById('popupOverlay-666').style.display = 'none';\r\n  }\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-25 elementor-top-column elementor-element elementor-element-009d0b6\" data-id=\"009d0b6\" data-element_type=\"column\" data-e-type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-5763cb2 elementor-widget elementor-widget-heading\" data-id=\"5763cb2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">Nombre de dossiers inclus<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-25 elementor-top-column elementor-element elementor-element-00ce2aa\" data-id=\"00ce2aa\" data-element_type=\"column\" data-e-type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d349190 elementor-widget elementor-widget-heading\" data-id=\"d349190\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">Prix mensuel<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-25 elementor-top-column elementor-element elementor-element-5fad3f1\" data-id=\"5fad3f1\" data-element_type=\"column\" data-e-type=\"column\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-e394fcd cs-te elementor-widget elementor-widget-html\" data-id=\"e394fcd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\r\n  \/* Unique Namespace: ez-tooltip- *\/\r\n  .ez-tooltip-wrapper {\r\n    height: 100%; \r\n    width: 100%;\r\n    position: relative;\r\n    display: flex;\r\n    align-items: center;\r\n  }\r\n\r\n  .ez-tooltip-trigger {\r\n    position: relative;\r\n    display: flex;\r\n    align-items: center;\r\n    height: 100%;\r\n    width: 100%;\r\n    cursor: pointer;\r\n    box-sizing: border-box;\r\n    padding-right: 22px; \/* Space for the corner icon *\/\r\n  }\r\n\r\n  .ez-tooltip-text {\r\n    color: white !important;\r\n    font-size: 14px;\r\n    line-height: 1.2;\r\n    word-wrap: break-word;\r\n    user-select: none;\r\n    text-align: left;\r\n  }\r\n\r\n  .ez-tooltip-icon {\r\n    position: absolute;\r\n    top: 0;\r\n    right: 0;\r\n    display: inline-flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    width: 16px;\r\n    height: 16px;\r\n    background-color: #3f4d5a;\r\n    color: white;\r\n    font-size: 11px;\r\n    font-weight: bold;\r\n    border-radius: 50%;\r\n    font-family: Arial, sans-serif;\r\n  }\r\n\r\n  \/* Modal Styles *\/\r\n  .ez-tooltip-modal {\r\n    display: none;\r\n    position: fixed;\r\n    z-index: 100000; \/* Higher than most elements *\/\r\n    top: 50%;\r\n    left: 50%;\r\n    transform: translate(-50%, -50%);\r\n    width: 85%;\r\n    max-width: 380px;\r\n    background: white;\r\n    padding: 20px;\r\n    border-radius: 10px;\r\n    box-shadow: 0 10px 30px rgba(0,0,0,0.5);\r\n    box-sizing: border-box;\r\n  }\r\n\r\n  .ez-tooltip-modal p {\r\n    margin: 0 0 12px;\r\n    color: #333 !important;\r\n    font-size: 14px;\r\n    line-height: 1.5;\r\n  }\r\n\r\n  .ez-tooltip-overlay {\r\n    display: none;\r\n    position: fixed;\r\n    z-index: 99999;\r\n    top: 0;\r\n    left: 0;\r\n    width: 100%;\r\n    height: 100%;\r\n    background: rgba(0,0,0,0.7);\r\n  }\r\n\r\n  .ez-tooltip-close {\r\n    text-align: right;\r\n    cursor: pointer;\r\n    font-size: 22px;\r\n    color: #e5322d;\r\n    font-weight: bold;\r\n    margin-bottom: 5px;\r\n    line-height: 1;\r\n  }\r\n\r\n  @media (max-width: 600px) {\r\n    .ez-tooltip-text { font-size: 10px; }\r\n    .ez-tooltip-modal { width: 90%; padding: 18px; }\r\n  }\r\n<\/style>\r\n\r\n<div class=\"ez-tooltip-wrapper\">\r\n  <div class=\"ez-tooltip-trigger\" onclick=\"openEzTooltip('ez-modal-4')\">\r\n    <span class=\"ez-tooltip-text\">Prix par dossier compl\u00e9t\u00e9 suppl\u00e9mentaire<\/span>\r\n    <span class=\"ez-tooltip-icon\">?<\/span>\r\n  <\/div>\r\n<\/div>\r\n\r\n<div id=\"ez-modal-4\" class=\"ez-tooltip-modal\">\r\n  <div class=\"ez-tooltip-close\" onclick=\"closeEzTooltip()\">\u00d7<\/div>\r\n  <p><strong>Qu\u2019est-ce qu\u2019un document compl\u00e9t\u00e9 ?<\/strong><\/p>\r\n  <p>\r\n    Nous ne comptons un document (PDF, Word, etc.) que\r\n    lorsqu\u2019il est enti\u00e8rement sign\u00e9 par toutes les parties ;\r\n    c\u2019est \u00e0 ce moment-l\u00e0 qu\u2019il d\u00e9clenche la tarification.\r\n  <\/p>\r\n<\/div>\r\n\r\n<div id=\"ez-tooltip-overlay-bg\" class=\"ez-tooltip-overlay\" onclick=\"closeEzTooltip()\"><\/div>\r\n\r\n<script>\r\n  function openEzTooltip(id) {\r\n    const modal = document.getElementById(id);\r\n    const overlay = document.getElementById('ez-tooltip-overlay-bg');\r\n    if(modal && overlay) {\r\n      modal.style.display = 'block';\r\n      overlay.style.display = 'block';\r\n    }\r\n  }\r\n\r\n  function closeEzTooltip() {\r\n    document.querySelectorAll('.ez-tooltip-modal').forEach(m => m.style.display = 'none');\r\n    const overlay = document.getElementById('ez-tooltip-overlay-bg');\r\n    if(overlay) overlay.style.display = 'none';\r\n  }\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t<div class=\"elementor-element elementor-element-db79c61 e-flex e-con-boxed e-con e-parent\" data-id=\"db79c61\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-2e0cd32 e-con-full e-flex e-con e-child\" data-id=\"2e0cd32\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-337b02f e-con-full cs-tab1 e-flex e-con e-child\" data-id=\"337b02f\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-442818b elementor-widget elementor-widget-html\" data-id=\"442818b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- Styles -->\r\n<style>\r\n  \/* Your existing styles... *\/\r\n  @media (max-width: 600px) {\r\n    .custom-popup-66 {\r\n      width: 70% !important;\r\n      padding: 15px;\r\n      font-size: 14px !important;\r\n      line-height: 20px;\r\n    }\r\n    .popup-link-66{\r\n        font-size: px !important;\r\n    }\r\n\r\n    .popup-link-66 {\r\n      font-size: 14px !important;\r\n      line-height: 20px;\r\n    }\r\n\r\n    .popup-close {\r\n      font-size: 18px;\r\n    }\r\n  }\r\n<\/style>\r\n \r\n<style>\r\n  .popup-link-66 {\r\n    cursor: pointer;\r\n    color: inherit;\r\n    display: inline !important;\r\n    visibility: visible !important;\r\n    opacity: 1 !important;\r\n    font-size: 16px !important;\r\n  }\r\n\r\n  .custom-popup-66 {\r\n    display: none;\r\n    position: fixed;\r\n    z-index: 9999;\r\n    top: 50%;\r\n    left: 50%;\r\n    transform: translate(-50%, -50%);\r\n    width: 90%;\r\n    max-width: 500px;\r\n    background: white;\r\n    padding: 20px;\r\n    border-radius: 10px;\r\n    box-shadow: 0 0 15px rgba(0,0,0,0.3);\r\n  }\r\n\r\n  .popup-overlay-66 {\r\n    display: none;\r\n    position: fixed;\r\n    z-index: 9998;\r\n    top: 0;\r\n    left: 0;\r\n    width: 100%;\r\n    height: 100%;\r\n    background: rgba(0,0,0,0.5);\r\n  }\r\n\r\n  .popup-close-66 {\r\n    text-align: right;\r\n    margin-top: -10px;\r\n    margin-bottom: 10px;\r\n    cursor: pointer;\r\n    font-weight: bold;\r\n  }\r\n<\/style>\r\n\r\n<!-- Paragraph with popup trigger -->\r\n<p>\r\n  <span class=\"popup-link-66\" onclick=\"openPopup66()\"><\/span>\r\n<\/p>\r\n\r\n<!-- Popup content -->\r\n<div id=\"popup66\" class=\"custom-popup-66\">\r\n  <div class=\"popup-close-66\" onclick=\"closePopup66()\">\u2716<\/div>\r\n  <p>\r\n   Pour acc\u00e9der \u00e0 l\u2019API, vous devez poss\u00e9der un compte entreprise au co\u00fbt mensuel de 222.80$. Ce compte vous donne automatiquement 10 utilisateurs eZsign et 100 dossiers mensuels compl\u00e9t\u00e9s via l\u2019API.\r\n  <\/p>\r\n<\/div>\r\n\r\n<!-- Overlay background -->\r\n<div id=\"popupOverlay66\" class=\"popup-overlay-66\" onclick=\"closePopup66()\"><\/div>\r\n\r\n<!-- JavaScript -->\r\n<script>\r\n  function openPopup66() {\r\n    document.getElementById('popup66').style.display = 'block';\r\n    document.getElementById('popupOverlay66').style.display = 'block';\r\n  }\r\n\r\n  function closePopup66() {\r\n    document.getElementById('popup66').style.display = 'none';\r\n    document.getElementById('popupOverlay66').style.display = 'none';\r\n  }\r\n<\/script>\r\n\r\n<div class=\"popup-trigger-flex\" onclick=\"openPopup66()\">\r\n <span class=\"info-icon-666\">?<\/span>\r\n  <span class=\"popup-link-66\">**1 \u2013 100 ***<\/span>\r\n<\/div>\r\n\r\n<style>\r\n  .popup-trigger-flex {\r\n    display: flex;\r\n    flex-direction: row-reverse; \/* icon on right, text on left *\/\r\n    align-items: center;\r\n    justify-content: space-between; \/* space between icon and text *\/\r\n    cursor: pointer;\r\n  }\r\n\r\n  .info-icon {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    width: 24px;\r\n    height: 24px;\r\n    background-color: #3f4d5a;\r\n    color: white;\r\n    font-size: 16px;\r\n    font-weight: bold;\r\n    border-radius: 50%;\r\n    font-family: Arial, sans-serif;\r\n  }\r\n\r\n  .popup-link-66 {\r\n    font-size: 16px;\r\n    color: inherit;\r\n    opacity: 1 !important;\r\n    display: inline !important;\r\n  }\r\n  @media (max-width: 425px){\r\n      .popup-link-66{\r\n          font-size: 14px !important;\r\n      }\r\n  }\r\n<\/style>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-eceb473 elementor-icon-list--layout-traditional elementor-list-item-link-full_width elementor-widget elementor-widget-icon-list\" data-id=\"eceb473\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-list.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<ul class=\"elementor-icon-list-items\">\n\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">101 - 200<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">201 - 350<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">351 - 600<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">601 - 1 100<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">1 101 - 2 600<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">2 601 - 5 100<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">5 101 - 10 100<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">10 101 - 25 100<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">25 101 - 50 100<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">50 101 - et plus<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-563e75f e-con-full e-flex e-con e-child\" data-id=\"563e75f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-fe20548 e-con-full e-flex e-con e-child\" data-id=\"fe20548\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-59ff2be elementor-widget elementor-widget-heading\" data-id=\"59ff2be\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">Les 100 premiers dossiers compl\u00e9t\u00e9s sont inclus<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-e5b6c88 e-con-full e-flex e-con e-child\" data-id=\"e5b6c88\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-8523c07 e-con-full e-flex e-con e-child\" data-id=\"8523c07\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1c923ef elementor-mobile-align-center cs-tab elementor-icon-list--layout-traditional elementor-list-item-link-full_width elementor-widget elementor-widget-icon-list\" data-id=\"1c923ef\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-list.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<ul class=\"elementor-icon-list-items\">\n\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">100<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">200<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">350<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">600<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">1 100<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">2 600<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">5 100<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">10 100<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">25 100<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">50 100<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4e9d1ba e-con-full e-flex e-con e-child\" data-id=\"4e9d1ba\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4847503 elementor-mobile-align-center elementor-icon-list--layout-traditional elementor-list-item-link-full_width elementor-widget elementor-widget-icon-list\" data-id=\"4847503\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-list.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<ul class=\"elementor-icon-list-items\">\n\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">0 $<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">180 $<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">438 $<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">810.50 $<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">1 485,50 $<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">3 300,50 $<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">6 025,50 $<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">10 925,50 $<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">24 275,50 $<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">45 525,50 $<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-0e28ae1 e-con-full e-flex e-con e-child\" data-id=\"0e28ae1\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4cbc361 elementor-mobile-align-center elementor-icon-list--layout-traditional elementor-list-item-link-full_width elementor-widget elementor-widget-icon-list\" data-id=\"4cbc361\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-list.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<ul class=\"elementor-icon-list-items\">\n\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">1,80 $<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">1,72 $<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">1,49 $<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">1,35 $<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">1,21 $<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">1,09 $<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">0,98 $<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">0,89 $<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">0,85 $<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">0,80 $<\/span>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-e2788da elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"e2788da\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-21437ba\" data-id=\"21437ba\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d566442 elementor-widget elementor-widget-heading\" data-id=\"d566442\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Simulateur de tarification API<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t<div class=\"elementor-element elementor-element-0a1fa79 e-flex e-con-boxed e-con e-parent\" data-id=\"0a1fa79\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-cac4b92 elementor-widget elementor-widget-html\" data-id=\"cac4b92\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"fr\" data-theme=\"light\">\r\n\r\n<head>\r\n    <meta charset=\"UTF-8\" \/>\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" \/>\r\n    <title>Calculateur eZsign<\/title>\r\n\r\n    <style>\r\n        \/* ==========================================================================\r\n           THEME TOKENS \/ CSS VARIABLES\r\n           ========================================================================== *\/\r\n        :root {\r\n            --brand-primary: #e63946;\r\n            --brand-primary-600: #d62839;\r\n            --brand-bg: #fff;\r\n            --card-bg: #fff;\r\n            --output-bg: #fff;\r\n            --brand-soft: #fff5f5;\r\n            --brand-border: #f5c2c7;\r\n            --note-bg: #fff8f8;\r\n            --ink: #2d2d2d;\r\n            --ink-muted: #666;\r\n            --ok: #16a34a;\r\n            --ok-b: #bbf7d0;\r\n            --warn: #d97706;\r\n            --warn-b: #fde68a;\r\n            --shadow: 0 8px 24px rgba(0, 0, 0, .06);\r\n            --radius: 14px;\r\n        }\r\n\r\n        html[data-theme=\"dark\"] {\r\n            --brand-bg: #0A0F1C;\r\n            --card-bg: #0f172a;\r\n            --output-bg: #0b1220;\r\n            --brand-soft: #0b1220;\r\n            --brand-border: #23324A;\r\n            --note-bg: rgba(59, 130, 246, .06);\r\n            --ink: #E5E7EB;\r\n            --ink-muted: #94a3b8;\r\n            --shadow: 0 10px 30px rgba(0, 0, 0, .25);\r\n        }\r\n\r\n        \/* Base *\/\r\n        * {\r\n            box-sizing: border-box\r\n        }\r\n\r\n        html,\r\n        body {\r\n            height: 100%;\r\n            background: var(--brand-bg);\r\n            color: var(--ink);\r\n            font-family: Inter, system-ui, Segoe UI, Roboto, Arial\r\n        }\r\n\r\n        body {\r\n            margin: 0;\r\n            min-height: 100vh\r\n        }\r\n\r\n        \/* ==========================================================================\r\n           TOP BAR\r\n           ========================================================================== *\/\r\n        .appbar {\r\n            background: var(--brand-primary);\r\n            color: #fff;\r\n            padding: 14px 22px;\r\n            display: none;\r\n            align-items: center;\r\n            gap: 12px;\r\n            position: sticky;\r\n            top: 0;\r\n            z-index: 10;\r\n            box-shadow: 0 2px 10px rgba(0, 0, 0, .06)\r\n        }\r\n\r\n        .appbar img {\r\n            height: 32px;\r\n            width: auto;\r\n            display: block\r\n        }\r\n\r\n        .app-title {\r\n            font-weight: 700;\r\n            font-size: clamp(16px, 1.8vw, 18px);\r\n            margin-right: auto\r\n        }\r\n\r\n        .chip,\r\n        .lang-btn,\r\n        .icon-btn {\r\n            background: #fff;\r\n            color: #a61b26;\r\n            border: 1px solid #fecdd3;\r\n            padding: 6px 10px;\r\n            border-radius: 999px;\r\n            cursor: pointer;\r\n            font-weight: 600\r\n        }\r\n\r\n        .chip:hover,\r\n        .lang-btn:hover,\r\n        .icon-btn:hover {\r\n            background: #fff5f5\r\n        }\r\n\r\n        .icon-btn {\r\n            width: 32px;\r\n            height: 32px;\r\n            display: grid;\r\n            place-items: center;\r\n            font-weight: 800;\r\n            padding: 0\r\n        }\r\n\r\n        \/* ==========================================================================\r\n           PAGE LAYOUT\r\n           ========================================================================== *\/\r\n        .container {\r\n            max-width: 1640px;\r\n            margin: 28px auto;\r\n            display: grid;\r\n            gap: 18px\r\n        }\r\n\r\n        .inline-toolbar {\r\n            display: flex;\r\n            gap: 10px;\r\n            flex-wrap: wrap\r\n        }\r\n\r\n        .btn-ghost {\r\n            background: transparent;\r\n            color: var(--brand-primary);\r\n            border: 1px solid var(--brand-border)\r\n        }\r\n\r\n        .btn-ghost:hover {\r\n            background: var(--brand-soft)\r\n        }\r\n\r\n        .lanes {\r\n            display: grid;\r\n            grid-template-columns: repeat(1, minmax(520px, 1fr));\r\n            gap: 18px\r\n        }\r\n\r\n        .lanes.cols-2 {\r\n            grid-template-columns: repeat(2, minmax(520px, 1fr))\r\n        }\r\n\r\n        .lanes.cols-3 {\r\n            grid-template-columns: repeat(3, minmax(500px, 1fr))\r\n        }\r\n\r\n        .lane-title {\r\n            font-weight: 800;\r\n            color: var(--brand-primary);\r\n            margin: 2px 0 0 2px\r\n        }\r\n\r\n        @media (max-width:1200px) {\r\n\r\n            .lanes,\r\n            .lanes.cols-2,\r\n            .lanes.cols-3 {\r\n                grid-template-columns: repeat(auto-fit, minmax(360px, 1fr));\r\n            }\r\n        }\r\n\r\n        @media (max-width:700px) {\r\n\r\n            .lanes,\r\n            .lanes.cols-2,\r\n            .lanes.cols-3 {\r\n                grid-template-columns: 1fr;\r\n            }\r\n        }\r\n\r\n        \/* Cards *\/\r\n        .card {\r\n            background: var(--card-bg);\r\n            border-radius: var(--radius);\r\n            padding: 18px;\r\n            box-shadow: var(--shadow)\r\n        }\r\n\r\n        .card h2 {\r\n            margin: 6px 0 10px;\r\n            color: var(--brand-primary);\r\n            font-size: 18px\r\n        }\r\n\r\n        .sub {\r\n            color: var(--ink-muted);\r\n            font-size: 14px;\r\n            margin-top: -2px\r\n        }\r\n\r\n        .note {\r\n            margin-top: 10px;\r\n            font-size: 13px;\r\n            color: var(--ink);\r\n            background: var(--note-bg);\r\n            border: 1px dashed var(--brand-border);\r\n            padding: 10px 12px;\r\n            border-radius: 10px\r\n        }\r\n\r\n        \/* ==========================================================================\r\n           FORM CONTROLS\r\n           ========================================================================== *\/\r\n        .controls {\r\n            display: grid;\r\n            grid-template-columns: 1fr 1fr 1fr auto;\r\n            gap: 10px;\r\n            align-items: end;\r\n            margin-top: 12px\r\n        }\r\n\r\n        @media (max-width:1100px) {\r\n            .controls {\r\n                grid-template-columns: 1fr 1fr\r\n            }\r\n            .controls .btn {\r\n                grid-column: 1\/-1\r\n            }\r\n        }\r\n\r\n        @media (max-width:640px) {\r\n            .controls {\r\n                grid-template-columns: 1fr\r\n            }\r\n        }\r\n\r\n        .field label {\r\n            display: block;\r\n            font-size: 13px;\r\n            color: var(--ink-muted);\r\n            margin-bottom: 6px\r\n        }\r\n\r\n        .field input[type=number],\r\n        .field select {\r\n            width: 100%;\r\n            padding: 10px 12px;\r\n            font-size: 16px;\r\n            border: 1px solid var(--brand-border);\r\n            border-radius: 10px;\r\n            background: #fff;\r\n            color: #222;\r\n            transition: border-color .15s, box-shadow .15s\r\n        }\r\n\r\n        html[data-theme=\"dark\"] .field input[type=number],\r\n        html[data-theme=\"dark\"] .field select {\r\n            background: #0b1220;\r\n            color: #E5E7EB\r\n        }\r\n\r\n        .field input[type=number]:focus,\r\n        .field select:focus {\r\n            border-color: var(--brand-primary);\r\n            box-shadow: 0 0 0 3px rgba(230, 57, 70, .15)\r\n        }\r\n\r\n        .btn {\r\n            padding: 11px 16px;\r\n            border-radius: 10px;\r\n            border: none;\r\n            background: var(--brand-primary);\r\n            color: #fff;\r\n            font-weight: 600;\r\n            cursor: pointer;\r\n            transition: background .2s\r\n        }\r\n\r\n        .btn:hover {\r\n            background: var(--brand-primary-600)\r\n        }\r\n\r\n        \/* ==========================================================================\r\n           KPIs \/ TOTAL BANNER\r\n           ========================================================================== *\/\r\n        .kpi-row {\r\n            display: grid;\r\n            grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\r\n            gap: 10px;\r\n            margin: 12px 0 6px\r\n        }\r\n\r\n        .kpi {\r\n            background: var(--brand-soft);\r\n            border: 1px solid var(--brand-border);\r\n            border-radius: 10px;\r\n            padding: 12px\r\n        }\r\n\r\n        .kpi .label {\r\n            font-size: 12px;\r\n            color: var(--ink-muted)\r\n        }\r\n\r\n        .kpi .value {\r\n            font-weight: 700;\r\n            font-size: 18px;\r\n            margin-top: 4px\r\n        }\r\n\r\n        .total {\r\n            margin-top: 12px;\r\n            padding: 12px;\r\n            border-radius: 10px;\r\n            font-weight: 800;\r\n            background: #f0fdf4;\r\n            color: var(--ok);\r\n            border: 1px solid var(--ok-b)\r\n        }\r\n\r\n        .total.warn {\r\n            background: #fff7ed;\r\n            border-color: var(--warn-b);\r\n            color: var(--warn)\r\n        }\r\n\r\n        \/* Large-team upsell callout (shown when users > 100) *\/\r\n        .large-team {\r\n            padding: 12px 14px;\r\n            border-radius: 10px;\r\n            background: var(--brand-soft);\r\n            border: 1px solid var(--brand-border);\r\n            color: var(--ink);\r\n            font-size: 14px;\r\n            font-weight: 600\r\n        }\r\n\r\n        .large-team a {\r\n            color: var(--brand-primary);\r\n            font-weight: 700;\r\n            text-decoration: underline\r\n        }\r\n\r\n        .large-team a:hover {\r\n            color: var(--brand-primary-600)\r\n        }\r\n\r\n        \/* Simulation output *\/\r\n        .output {\r\n            white-space: pre-wrap;\r\n            font-family: ui-monospace, Menlo, Consolas, monospace;\r\n            background: var(--output-bg);\r\n            border: 1px solid var(--brand-border);\r\n            border-radius: 12px;\r\n            padding: 16px;\r\n            line-height: 1.6;\r\n            color: var(--ink)\r\n        }\r\n\r\n        \/* ==========================================================================\r\n           MODALS\r\n           ========================================================================== *\/\r\n        .modal {\r\n            position: fixed;\r\n            inset: 0;\r\n            display: none\r\n        }\r\n\r\n        .modal.open {\r\n            display: block\r\n        }\r\n\r\n        .modal .backdrop {\r\n            position: absolute;\r\n            inset: 0;\r\n            background: rgba(0, 0, 0, .35)\r\n        }\r\n\r\n        .modal .dialog {\r\n            position: absolute;\r\n            left: 50%;\r\n            top: 50%;\r\n            transform: translate(-50%, -50%);\r\n            width: min(1100px, 92vw);\r\n            max-height: 85vh;\r\n            overflow: auto;\r\n            background: var(--card-bg);\r\n            color: var(--ink);\r\n            border: 1px solid var(--brand-border);\r\n            border-radius: 14px;\r\n            box-shadow: var(--shadow)\r\n        }\r\n\r\n        @media (max-width:640px) {\r\n            .modal .dialog {\r\n                width: 96vw;\r\n                max-height: 92vh;\r\n                border-radius: 10px;\r\n            }\r\n        }\r\n\r\n        .modal .head {\r\n            display: flex;\r\n            align-items: center;\r\n            gap: 12px;\r\n            justify-content: space-between;\r\n            padding: 14px 16px;\r\n            border-bottom: 1px solid var(--brand-border);\r\n            background: var(--brand-soft)\r\n        }\r\n\r\n        .modal .head h3 {\r\n            margin: 0;\r\n            color: var(--brand-primary)\r\n        }\r\n\r\n        .close-x {\r\n            border: none;\r\n            background: transparent;\r\n            color: var(--ink);\r\n            font-size: 20px;\r\n            cursor: pointer;\r\n            padding: 6px 10px;\r\n            border-radius: 8px\r\n        }\r\n\r\n        .close-x:hover {\r\n            background: rgba(0, 0, 0, .06)\r\n        }\r\n\r\n        .modal .body {\r\n            padding: 16px\r\n        }\r\n\r\n        \/* Pricing tables *\/\r\n        .price-table {\r\n            width: 100%;\r\n            border-collapse: separate;\r\n            border-spacing: 0\r\n        }\r\n\r\n        .price-table th {\r\n            background: var(--brand-primary);\r\n            color: #fff;\r\n            text-align: left;\r\n            padding: 10px 12px;\r\n            font-weight: 700\r\n        }\r\n\r\n        .price-table td {\r\n            padding: 10px 12px;\r\n            border-left: 1px solid var(--brand-border);\r\n            border-bottom: 1px solid var(--brand-border)\r\n        }\r\n\r\n        .price-table th:first-child {\r\n            border-top-left-radius: 8px\r\n        }\r\n\r\n        .price-table th:last-child {\r\n            border-top-right-radius: 8px\r\n        }\r\n\r\n        .price-table tr:last-child td:first-child {\r\n            border-bottom-left-radius: 8px\r\n        }\r\n\r\n        .price-table tr:last-child td:last-child {\r\n            border-bottom-right-radius: 8px\r\n        }\r\n\r\n        .muted {\r\n            color: var(--ink-muted);\r\n            font-size: 13px\r\n        }\r\n\r\n        .badge {\r\n            display: inline-block;\r\n            padding: 3px 8px;\r\n            border-radius: 999px;\r\n            border: 1px solid var(--ok-b);\r\n            background: #f0fdf4;\r\n            color: var(--ok);\r\n            font-weight: 700;\r\n            font-size: 12px\r\n        }\r\n    <\/style>\r\n<\/head>\r\n\r\n<body>\r\n\r\n    <!-- ===== APP BAR ===== -->\r\n    <div class=\"appbar\">\r\n        <img decoding=\"async\" src=\".\/logo-ezsign.png\" alt=\"eZsign\" onerror=\"this.style.display='none'\">\r\n        <div id=\"title\" class=\"app-title\">Calculateur eZsign<\/div>\r\n        <button id=\"infoBtn\" class=\"icon-btn\" title=\"Tarifs\">i<\/button>\r\n        <button id=\"compareBtn\" class=\"chip\">Comparer<\/button>\r\n        <button id=\"themeBtn\" class=\"chip\">Th\u00e8me clair<\/button>\r\n        <button id=\"langBtn\" class=\"lang-btn\">EN<\/button>\r\n    <\/div>\r\n\r\n    <!-- ===== MAIN ===== -->\r\n    <main class=\"container\">\r\n        <div class=\"inline-toolbar\">\r\n            <button id=\"inlineCompareBtn\" class=\"chip btn-ghost\">\r\n                + Comparer (ajouter une colonne)\r\n            <\/button>\r\n        <\/div>\r\n        <div id=\"lanes\" class=\"lanes\"><\/div>\r\n    <\/main>\r\n\r\n    <!-- ===== MODALS ===== -->\r\n    <div id=\"pricingModal\" class=\"modal\" aria-hidden=\"true\">\r\n        <div class=\"backdrop\" data-close><\/div>\r\n        <div class=\"dialog\" role=\"dialog\" aria-modal=\"true\">\r\n            <div class=\"head\">\r\n                <h3 id=\"pricingTitle\">Tarifs<\/h3>\r\n                <button class=\"close-x\" data-close>&times;<\/button>\r\n            <\/div>\r\n            <div id=\"pricingBody\" class=\"body\"><\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <div id=\"compareModal\" class=\"modal\" aria-hidden=\"true\">\r\n        <div class=\"backdrop\" data-close><\/div>\r\n        <div class=\"dialog\" role=\"dialog\" aria-modal=\"true\">\r\n            <div class=\"head\">\r\n                <h3 id=\"compareTitle\">Comparer les forfaits<\/h3>\r\n                <button class=\"close-x\" data-close>&times;<\/button>\r\n            <\/div>\r\n            <div id=\"compareBody\" class=\"body\"><\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <script>\r\n        \/* =============================================================================\r\n           eZsign Calculator \u2014 app.js\r\n           ============================================================================= *\/\r\n\r\n        \/\/ ===== 1) PRICING DATA =====\r\n        const ACCOUNTS = {\r\n            enterprise: {\r\n                key: 'enterprise',\r\n                name_fr: 'Entreprise',\r\n                name_en: 'Enterprise',\r\n                base: 222.80,\r\n                includesFiles: 100,\r\n                includesUsers: 10,\r\n                apiAvailable: true,\r\n                userSegments: [\r\n                    [20, 21.27],\r\n                    [50, 20.16],\r\n                    [100, 19.05],\r\n                    [250, 18.05],\r\n                    [500, 17.09],\r\n                    [1000, 16.21],\r\n                    [Infinity, 15.31],\r\n                ],\r\n            },\r\n        };\r\n\r\n        const API_TIERS = [\r\n            [100, 0.00, 0.00],\r\n            [200, 180.00, 1.80],\r\n            [350, 438.00, 1.72],\r\n            [600, 810.50, 1.49],\r\n            [1100, 1485.50, 1.35],\r\n            [2600, 3300.50, 1.21],\r\n            [5100, 6025.50, 1.09],\r\n            [10100, 10925.50, 0.98],\r\n            [25100, 24275.50, 0.89],\r\n            [50100, 45525.50, 0.85],\r\n            [Infinity, 45525.50, 0.80],\r\n        ];\r\n\r\n        \/\/ ===== 2) I18N =====\r\n        let LANG = localStorage.getItem('ez_lang') || 'fr';\r\n        let THEME = localStorage.getItem('ez_theme') || 'light';\r\n\r\n        let moneyFmt = new Intl.NumberFormat(LANG === 'fr' ? 'fr-CA' : 'en-CA', { style: 'currency', currency: 'CAD' });\r\n        let numFmt = new Intl.NumberFormat(LANG === 'fr' ? 'fr-CA' : 'en-CA');\r\n\r\n        const fmtMoney = n => moneyFmt.format(n);\r\n        const fmtNumber = n => numFmt.format(n);\r\n\r\n        const t = {\r\n            fr: {\r\n                title: 'Calculateur eZsign',\r\n                inlineCompare1: '+ Comparer (ajouter une colonne)',\r\n                inlineCompare2: '+ Ajouter une troisi\u00e8me colonne',\r\n                inlineCompare3: '\u21ba Revenir \u00e0 une seule',\r\n                choose: 'Choisissez le type de compte, puis entrez le nombre d\u2019utilisateurs (et de dossiers API si le plan le permet).',\r\n                params: 'Param\u00e8tres',\r\n                quick: 'R\u00e9sum\u00e9 rapide',\r\n                details: 'D\u00e9tails de la simulation',\r\n                acct: 'Type de compte',\r\n                files: 'Nombre de dossiers (par mois)',\r\n                users: 'Nombre d\u2019utilisateurs',\r\n                calc: 'Calculer',\r\n                note_ent: 'Le plan <b>Entreprise<\/b> inclut <b>10 utilisateurs<\/b> et <b>100 dossiers API<\/b>.',\r\n                note_np: 'Les plans <b>Business Basic<\/b> et <b>Business Pro<\/b> incluent <b>10 utilisateurs<\/b> et ne proposent pas l\u2019API.',\r\n                k_files: 'Dossiers envoy\u00e9s',\r\n                k_api: 'Frais API',\r\n                k_users: 'Utilisateurs',\r\n                k_userfees: 'Frais utilisateurs',\r\n                k_total: 'Total mensuel',\r\n                empty: 'Aucun calcul encore. Entrez les param\u00e8tres et cliquez \u00ab Calculer \u00bb.',\r\n                sim: 'SIMULATION',\r\n                line2: (n, b, iu, if_) =>\r\n                    `Vous utilisez le forfait <b>${n}<\/b> \u00e0 ${fmtMoney(b)}\/mois, incluant ${iu} utilisateur${iu > 1 ? 's' : ''}${if_ > 0 ? ` et ${if_} dossiers API par mois` : ''}.`,\r\n                noneFiles: (inc) => `Comme ${inc} dossiers sont inclus, aucun frais d\u2019API.`,\r\n                mustPayFiles: (x, inc) =>\r\n                    `Comme ${inc} dossiers sont inclus, vous devez payer pour ${x} ${x === 1 ? 'dossier suppl\u00e9mentaire' : 'dossiers suppl\u00e9mentaires'}.`,\r\n                tierFiles: (f, pb, c, r, pl, lim) =>\r\n                    `Dossiers: palier ${pl + 1}\u2013${lim}. Base palier: ${fmtMoney(pb)}; ${c} restants (${f}-${pl}) \u00e0 ${fmtMoney(r)}\/dossier = ${fmtMoney(pb + c * r)}.`,\r\n                month: 'Calcul des frais mensuels',\r\n                entRow: (n, b, iu, if_) =>\r\n                    `Forfait ${n} = ${fmtMoney(b)}\/mois (inclut ${iu} utilisateur${iu > 1 ? 's' : ''}${if_ > 0 ? ` et ${if_} dossiers` : ''})`,\r\n                apiRow: (pb, c, r) => `Frais API = ${fmtMoney(pb)} + ${c} \u00d7 ${fmtMoney(r)} = ${fmtMoney(pb + c * r)}`,\r\n                usersNone: (inc) => `Comme ${inc} utilisateur${inc > 1 ? 's' : ''} sont inclus, aucun frais utilisateurs.`,\r\n                usersMust: (x) =>\r\n                `Vous avez des frais pour ${x} ${x === 1 ? 'utilisateur suppl\u00e9mentaire' : 'utilisateurs suppl\u00e9mentaires'}.`,\r\n                usersTier: (u, monthlyAtPrev, c, r, pl, lim) =>\r\n                    `Utilisateurs: palier ${pl + 1}\u2013${lim}. Base palier: ${fmtMoney(monthlyAtPrev)}; ${c} restants (${u}-${pl}) \u00e0 ${fmtMoney(r)}\/utilisateur = ${fmtMoney(monthlyAtPrev + c * r)}.`,\r\n                usersRow: (baseTier, c, r) =>\r\n                    `Frais utilisateurs = ${fmtMoney(baseTier)} + ${c} \u00d7 ${fmtMoney(r)} = ${fmtMoney(baseTier + c * r)}`,\r\n                total: 'TOTAL MENSUEL = ',\r\n                themeLight: 'Th\u00e8me clair',\r\n                themeDark: 'Th\u00e8me sombre',\r\n                infoTitle: 'Tarifs eZsign',\r\n                compareTop: 'Comparer',\r\n                compareTitle: 'Comparer les forfaits',\r\n                thPlan: 'Forfait',\r\n                thBase: 'Base',\r\n                thUsers: 'Utilisateurs',\r\n                thUserFees: 'Frais utilisateurs',\r\n                thApiFees: 'Frais API',\r\n                thTotal: 'Total',\r\n                andUp: 'et plus',\r\n                largeTeam: 'Grande \u00e9quipe&nbsp;? <a href=\"\/contact-sales\/\">Parlez \u00e0 un expert pour trouver le forfait id\u00e9al pour votre \u00e9quipe<\/a>',\r\n                over100: 'Pour plus de 100 utilisateurs, veuillez contacter notre \u00e9quipe commerciale pour un devis personnalis\u00e9.'\r\n            },\r\n            en: {\r\n                title: 'eZsign Calculator',\r\n                inlineCompare1: '+ Compare (add column)',\r\n                inlineCompare2: '+ Add third column',\r\n                inlineCompare3: '\u21ba Back to single',\r\n                choose: 'Choose the account type, then enter the number of users (and API files if the plan allows it).',\r\n                params: 'Parameters',\r\n                quick: 'Quick summary',\r\n                details: 'Simulation details',\r\n                acct: 'Account type',\r\n                files: 'Number of files (per month)',\r\n                users: 'Number of users',\r\n                calc: 'Calculate',\r\n                note_ent: 'The <b>Enterprise<\/b> plan includes <b>10 users<\/b> and <b>100 API files<\/b>.',\r\n                note_np: 'The <b>Business Basic<\/b> and <b>Business Pro<\/b> plans include <b>10 users<\/b> and do not offer the API.',\r\n                k_files: 'Files sent',\r\n                k_api: 'API fees',\r\n                k_users: 'Users',\r\n                k_userfees: 'User fees',\r\n                k_total: 'Monthly total',\r\n                empty: 'No calculation yet. Enter parameters and click \u201cCalculate\u201d.',\r\n                sim: 'SIMULATION',\r\n                line2: (n, b, iu, if_) =>\r\n                    `You\u2019re using the <b>${n}<\/b> plan at ${fmtMoney(b)}\/month, including ${iu} user${iu > 1 ? 's' : ''}${if_ > 0 ? ` and ${if_} API files per month` : ''}.`,\r\n                noneFiles: (inc) => `Since ${inc} files are included, there are no API fees.`,\r\n                mustPayFiles: (x, inc) =>\r\n                    `Since ${inc} files are included, you need to pay for ${x} additional ${x === 1 ? 'file' : 'files'}.`,\r\n                tierFiles: (f, pb, c, r, pl, lim) =>\r\n                    `Files: tier ${pl + 1}\u2013${lim}. Base tier: ${fmtMoney(pb)}; ${c} remaining (${f}-${pl}) at ${fmtMoney(r)}\/file = ${fmtMoney(pb + c * r)}.`,\r\n                month: 'Monthly fees calculation',\r\n                entRow: (n, b, iu, if_) =>\r\n                    `${n} plan = ${fmtMoney(b)}\/month (includes ${iu} user${iu > 1 ? 's' : ''}${if_ > 0 ? ` and ${if_} files` : ''})`,\r\n                apiRow: (pb, c, r) => `API fees = ${fmtMoney(pb)} + ${c} \u00d7 ${fmtMoney(r)} = ${fmtMoney(pb + c * r)}`,\r\n                usersNone: (inc) => `Since ${inc} user${inc > 1 ? 's' : ''} are included, there are no user fees.`,\r\n                usersMust: (x) => `You have fees for ${x} additional ${x === 1 ? 'user' : 'users'}.`,\r\n                usersTier: (u, monthlyAtPrev, c, r, pl, lim) =>\r\n                    `Users: tier ${pl + 1}\u2013${lim}. Base tier: ${fmtMoney(monthlyAtPrev)}; ${c} remaining (${u}-${pl}) at ${fmtMoney(r)}\/user = ${fmtMoney(monthlyAtPrev + c * r)}.`,\r\n                usersRow: (baseTier, c, r) =>\r\n                    `User fees = ${fmtMoney(baseTier)} + ${c} \u00d7 ${fmtMoney(r)} = ${fmtMoney(baseTier + c * r)}`,\r\n                total: 'MONTHLY TOTAL = ',\r\n                themeLight: 'Light theme',\r\n                themeDark: 'Dark theme',\r\n                infoTitle: 'eZsign Pricing',\r\n                compareTop: 'Compare',\r\n                compareTitle: 'Compare plans',\r\n                thPlan: 'Plan',\r\n                thBase: 'Base',\r\n                thUsers: 'Users',\r\n                thUserFees: 'User fees',\r\n                thApiFees: 'API fees',\r\n                thTotal: 'Total',\r\n                andUp: 'and up',\r\n                largeTeam: 'Large team? <a href=\"\/contact-sales\/\">Talk to an expert to find the right plan for your team<\/a>',\r\n                over100: 'For more than 100 users, please contact our sales team for a custom quote.'\r\n            }\r\n        };\r\n\r\n        \/\/ ===== 3) COST HELPERS =====\r\n        function apiCostBreakdown(files, account) {\r\n            if (!account.apiAvailable) {\r\n                return { files: 0, prevLimit: 0, prevBase: 0, inTierCount: 0, rate: 0, apiTotal: 0 };\r\n            }\r\n            files = Math.max(0, Math.floor(Number(files) || 0));\r\n            if (files <= account.includesFiles) {\r\n                return { files, prevLimit: account.includesFiles, prevBase: 0, inTierCount: 0, rate: 0, apiTotal: 0 };\r\n            }\r\n            for (let i = 1; i < API_TIERS.length; i++) {\r\n                const [limit, baseAtLimit, rate] = API_TIERS[i];\r\n                if (files <= limit) {\r\n                    const prevLimit = API_TIERS[i - 1][0];\r\n                    const prevBase = API_TIERS[i - 1][1];\r\n                    const inTierCount = files - prevLimit;\r\n                    const apiTotal = prevBase + inTierCount * rate;\r\n                    return { files, prevLimit, prevBase, inTierCount, rate, apiTotal };\r\n                }\r\n            }\r\n        }\r\n\r\n        function userCostBreakdown(users, account) {\r\n            users = Math.max(0, Math.floor(Number(users) || 0));\r\n            const inc = account.includesUsers;\r\n            if (users <= inc) {\r\n                return { users, prevLimit: inc, prevBase: 0, inTierCount: 0, rate: 0, userTotal: 0 };\r\n            }\r\n            let prevLimit = inc;\r\n            let prevBase = 0;\r\n            for (const [limit, rate] of account.userSegments) {\r\n                if (users <= limit) {\r\n                    const inTierCount = users - prevLimit;\r\n                    const userTotal = prevBase + inTierCount * rate;\r\n                    return { users, prevLimit, prevBase, inTierCount, rate, userTotal };\r\n                } else {\r\n                    prevBase += (limit - prevLimit) * rate;\r\n                    prevLimit = limit;\r\n                }\r\n            }\r\n        }\r\n\r\n        function findApiTierLimit(files) {\r\n            for (const [limit] of API_TIERS) { if (files <= limit) return limit === Infinity ? '\u221e' : limit; }\r\n            return '\u221e';\r\n        }\r\n\r\n        function findUserTierLimit(users, acct) {\r\n            for (const [limit] of acct.userSegments) { if (users <= limit) return limit === Infinity ? '\u221e' : limit; }\r\n            return '\u221e';\r\n        }\r\n\r\n        \/\/ ===== 4) SIMULATION BUILDER =====\r\n        function buildSimulationHTML(files, users, acct) {\r\n            const bF = apiCostBreakdown(files, acct);\r\n            const bU = userCostBreakdown(users, acct);\r\n\r\n            const paidFiles = Math.max(0, acct.apiAvailable ? (files - acct.includesFiles) : 0);\r\n            const paidUsers = Math.max(0, users - acct.includesUsers);\r\n\r\n            const total = acct.base + bF.apiTotal + bU.userTotal;\r\n            const monthlyAtPrevLimit = acct.base + bU.prevBase;\r\n\r\n            const name = LANG === 'fr' ? acct.name_fr : acct.name_en;\r\n            const parts = [];\r\n\r\n            parts.push(`<b>${t[LANG].sim}<\/b>`);\r\n            parts.push(t[LANG].line2(name, acct.base, acct.includesUsers, acct.includesFiles));\r\n\r\n            if (acct.apiAvailable) {\r\n                if (paidFiles === 0) {\r\n                    parts.push(t[LANG].noneFiles(acct.includesFiles));\r\n                } else {\r\n                    parts.push(t[LANG].mustPayFiles(paidFiles, acct.includesFiles));\r\n                    parts.push(\r\n                        t[LANG].tierFiles(\r\n                            files, bF.prevBase, bF.inTierCount, bF.rate, bF.prevLimit, findApiTierLimit(files)\r\n                        )\r\n                    );\r\n                }\r\n            }\r\n\r\n            if (paidUsers === 0) {\r\n                parts.push(t[LANG].usersNone(acct.includesUsers));\r\n            } else {\r\n                parts.push(t[LANG].usersMust(paidUsers));\r\n                parts.push(\r\n                    t[LANG].usersTier(\r\n                        users, monthlyAtPrevLimit, bU.inTierCount, bU.rate, bU.prevLimit, findUserTierLimit(users, acct)\r\n                    )\r\n                );\r\n            }\r\n\r\n            parts.push(`<b>${t[LANG].month}<\/b>`);\r\n            parts.push(t[LANG].entRow(name, acct.base, acct.includesUsers, acct.includesFiles));\r\n            if (acct.apiAvailable) parts.push(t[LANG].apiRow(bF.prevBase, bF.inTierCount, bF.rate));\r\n            parts.push(t[LANG].usersRow(monthlyAtPrevLimit, bU.inTierCount, bU.rate));\r\n            parts.push(`<b>${t[LANG].total}${fmtMoney(total)}<\/b>`);\r\n\r\n            return {\r\n                html: parts.join('<br><br>'),\r\n                apiTotal: bF.apiTotal,\r\n                userExtra: bU.userTotal,\r\n                totalMonthly: total\r\n            };\r\n        }\r\n\r\n        \/\/ ===== 5) LANES UI =====\r\n        let lanesCount = 1;\r\n        const lanesEl = document.getElementById('lanes');\r\n        const inlineBtn = document.getElementById('inlineCompareBtn');\r\n\r\n        function inlineCompareLabel() {\r\n            if (lanesCount === 1) return t[LANG].inlineCompare1;\r\n            if (lanesCount === 2) return t[LANG].inlineCompare2;\r\n            return t[LANG].inlineCompare3;\r\n        }\r\n\r\n        function laneId(i, s) { return `${s}-${i}`; }\r\n\r\n        function accountOptionsHTML(sel) {\r\n            return `\r\n            <option value=\"enterprise\"${sel === 'enterprise' ? ' selected' : ''}>${LANG === 'fr' ? 'Entreprise' : 'Enterprise'}<\/option>`;\r\n        }\r\n\r\n        function makeLane(i, defaults) {\r\n            const plan = defaults.plan || 'enterprise';\r\n\r\n            const paramsHTML = `\r\n            <section class=\"card\">\r\n              <div class=\"lane-title\">${t[LANG].params} \u2014 ${String.fromCharCode(65 + i)}<\/div>\r\n              <div class=\"sub\">${t[LANG].choose}<\/div>\r\n              <div class=\"controls\">\r\n                <div class=\"field\">\r\n                  <label for=\"${laneId(i, 'plan')}\">${t[LANG].acct}<\/label>\r\n                  <select id=\"${laneId(i, 'plan')}\">${accountOptionsHTML(plan)}<\/select>\r\n                <\/div>\r\n                <div class=\"field\" id=\"${laneId(i, 'filesField')}\">\r\n                  <label for=\"${laneId(i, 'files')}\">${t[LANG].files}<\/label>\r\n                  <input type=\"number\" id=\"${laneId(i, 'files')}\" placeholder=\"${LANG === 'fr' ? 'Ex. 350' : 'e.g., 350'}\" min=\"0\" inputmode=\"numeric\" value=\"${defaults.files ?? ''}\">\r\n                <\/div>\r\n                <div class=\"field\">\r\n                  <label for=\"${laneId(i, 'users')}\">${t[LANG].users}<\/label>\r\n                  <input type=\"number\" id=\"${laneId(i, 'users')}\" placeholder=\"${LANG === 'fr' ? 'Ex. 75' : 'e.g., 75'}\" min=\"1\" inputmode=\"numeric\" value=\"${defaults.users ?? 10}\">\r\n                <\/div>\r\n                <button id=\"${laneId(i, 'calc')}\" class=\"btn\">${t[LANG].calc}<\/button>\r\n              <\/div>\r\n              <div class=\"note\">${t[LANG].note_ent} ${t[LANG].note_np}<\/div>\r\n            <\/section>`;\r\n\r\n            const kpiHTML = `\r\n            <section class=\"card\" id=\"${laneId(i, 'kpis')}\" style=\"display:none\">\r\n              <h2>${t[LANG].quick}<\/h2>\r\n              <div class=\"kpi-row\">\r\n                <div class=\"kpi\" id=\"${laneId(i, 'kpiBlockFiles')}\">\r\n                  <div class=\"label\">${t[LANG].k_files}<\/div>\r\n                  <div class=\"value\" id=\"${laneId(i, 'kpiFiles')}\">\u2014<\/div>\r\n                <\/div>\r\n                <div class=\"kpi\" id=\"${laneId(i, 'kpiBlockApi')}\">\r\n                  <div class=\"label\">${t[LANG].k_api}<\/div>\r\n                  <div class=\"value\" id=\"${laneId(i, 'kpiApi')}\">\u2014<\/div>\r\n                <\/div>\r\n                <div class=\"kpi\">\r\n                  <div class=\"label\">${t[LANG].k_users}<\/div>\r\n                  <div class=\"value\" id=\"${laneId(i, 'kpiUsers')}\">\u2014<\/div>\r\n                <\/div>\r\n                <div class=\"kpi\">\r\n                  <div class=\"label\">${t[LANG].k_userfees}<\/div>\r\n                  <div class=\"value\" id=\"${laneId(i, 'kpiUserFees')}\">\u2014<\/div>\r\n                <\/div>\r\n                <div class=\"kpi\">\r\n                  <div class=\"label\">${t[LANG].k_total}<\/div>\r\n                  <div class=\"value\" id=\"${laneId(i, 'kpiTotal')}\">\u2014<\/div>\r\n                <\/div>\r\n              <\/div>\r\n              <div class=\"total\" id=\"${laneId(i, 'totalBanner')}\">${t[LANG].total}\u2014<\/div>\r\n            <\/section>`;\r\n\r\n            const outHTML = `\r\n            <section class=\"card\" id=\"${laneId(i, 'detailsCard')}\">\r\n              <h2 id=\"${laneId(i, 'detailsHeading')}\">${t[LANG].details}<\/h2>\r\n              <div class=\"output\" id=\"${laneId(i, 'output')}\">${t[LANG].empty}<\/div>\r\n              <div class=\"large-team\" id=\"${laneId(i, 'largeTeam')}\" style=\"display:none\"><\/div>\r\n            <\/section>`;\r\n\r\n            const wrap = document.createElement('div');\r\n            wrap.className = 'lane';\r\n            wrap.innerHTML = paramsHTML + kpiHTML + outHTML;\r\n            return wrap;\r\n        }\r\n\r\n        function ensureLanes(n) {\r\n            lanesCount = Math.max(1, Math.min(3, n));\r\n            lanesEl.classList.toggle('cols-2', lanesCount === 2);\r\n            lanesEl.classList.toggle('cols-3', lanesCount === 3);\r\n\r\n            const prev = [];\r\n            lanesEl.querySelectorAll('.lane').forEach((lane, idx) => {\r\n                prev.push({\r\n                    plan: (lane.querySelector(`#${laneId(idx, 'plan')}`) || {}).value || 'enterprise',\r\n                    files: (lane.querySelector(`#${laneId(idx, 'files')}`) || {}).value,\r\n                    users: (lane.querySelector(`#${laneId(idx, 'users')}`) || {}).value\r\n                });\r\n            });\r\n\r\n            lanesEl.innerHTML = '';\r\n            for (let i = 0; i < lanesCount; i++) {\r\n                lanesEl.appendChild(makeLane(i, prev[i] || { plan: 'enterprise', files: '', users: 10 }));\r\n            }\r\n\r\n            for (let i = 0; i < lanesCount; i++) wireLane(i);\r\n\r\n            inlineBtn.textContent = inlineCompareLabel();\r\n            updatePlanUIAll();\r\n        }\r\n\r\n        function wireLane(i) {\r\n            const sel = id => document.getElementById(laneId(i, id));\r\n            const run = () => runSimulation(i);\r\n            sel('calc').addEventListener('click', run);\r\n            sel('plan').addEventListener('change', () => { updatePlanUI(i);\r\n                run(); });\r\n            sel('files')?.addEventListener('input', run);\r\n            sel('users').addEventListener('input', run);\r\n        }\r\n\r\n        function updatePlanUI(i) {\r\n            const sel = id => document.getElementById(laneId(i, id));\r\n            const a = ACCOUNTS[sel('plan').value];\r\n            sel('filesField').style.display = a.apiAvailable ? '' : 'none';\r\n            sel('kpiBlockFiles').style.display = a.apiAvailable ? '' : 'none';\r\n            sel('kpiBlockApi').style.display = a.apiAvailable ? '' : 'none';\r\n        }\r\n\r\n        function updatePlanUIAll() { for (let i = 0; i < lanesCount; i++) updatePlanUI(i); }\r\n\r\n        \/\/ ===== 6) RUN SIMULATION (with >100 cutoff and hiding simulation) =====\r\n        function runSimulation(i) {\r\n            const sel = id => document.getElementById(laneId(i, id));\r\n            const a = ACCOUNTS[sel('plan').value];\r\n\r\n            const files = a.apiAvailable ? parseInt(sel('files').value || '0', 10) : 0;\r\n            const users = parseInt(sel('users').value || String(a.includesUsers), 10);\r\n\r\n            const kpis = document.getElementById(laneId(i, 'kpis'));\r\n            const out = sel('output');\r\n            const heading = sel('detailsHeading');\r\n            const largeTeamEl = sel('largeTeam');\r\n            const detailsCard = sel('detailsCard');\r\n\r\n            \/\/ Reset visibility for normal state (will be overridden if >100)\r\n            kpis.style.display = 'none';\r\n            out.style.display = '';\r\n            heading.style.display = '';\r\n            largeTeamEl.style.display = 'none';\r\n            largeTeamEl.innerHTML = '';\r\n\r\n            \/\/ Validate users\r\n            if (isNaN(users) || users < 1) {\r\n                out.textContent = t[LANG].empty;\r\n                kpis.style.display = 'none';\r\n                return;\r\n            }\r\n\r\n            \/\/ If users > 100, hide everything except the callout\r\n            if (users > 100) {\r\n                kpis.style.display = 'none';\r\n                heading.style.display = 'none';\r\n                out.style.display = 'none';\r\n                largeTeamEl.style.display = 'block';\r\n                largeTeamEl.innerHTML = t[LANG].largeTeam;\r\n                return;\r\n            }\r\n\r\n            \/\/ Normal simulation for users <= 100\r\n            const res = buildSimulationHTML(files, users, a);\r\n\r\n            out.innerHTML = res.html;\r\n            kpis.style.display = 'block';\r\n            heading.style.display = '';\r\n\r\n            if (a.apiAvailable) {\r\n                document.getElementById(laneId(i, 'kpiFiles')).textContent = fmtNumber(files);\r\n                document.getElementById(laneId(i, 'kpiApi')).textContent = fmtMoney(res.apiTotal);\r\n            }\r\n            document.getElementById(laneId(i, 'kpiUsers')).textContent = fmtNumber(users);\r\n            document.getElementById(laneId(i, 'kpiUserFees')).textContent = fmtMoney(res.userExtra);\r\n            document.getElementById(laneId(i, 'kpiTotal')).textContent = fmtMoney(res.totalMonthly);\r\n\r\n            const banner = document.getElementById(laneId(i, 'totalBanner'));\r\n            banner.textContent = t[LANG].total + fmtMoney(res.totalMonthly);\r\n            banner.className = 'total' + ((res.apiTotal + res.userExtra) === 0 ? ' warn' : '');\r\n\r\n            largeTeamEl.style.display = 'none';\r\n            largeTeamEl.innerHTML = '';\r\n        }\r\n\r\n        \/\/ ===== 7) PRICING MODAL =====\r\n        function getVisiblePlans() {\r\n            const seen = new Set();\r\n            for (let i = 0; i < lanesCount; i++) {\r\n                const el = document.getElementById(`plan-${i}`);\r\n                if (el && el.value) seen.add(el.value);\r\n            }\r\n            if (seen.size === 0) seen.add('enterprise');\r\n            return Array.from(seen);\r\n        }\r\n\r\n        function userTableFor(plan) {\r\n            const title = (LANG === 'fr' ? plan.name_fr : plan.name_en);\r\n            const includedLabel = LANG === 'fr' ? 'Les 10 premiers utilisateurs sont inclus' :\r\n                'The first 10 users are included';\r\n            const includedInPlan = LANG === 'fr' ? `Inclus dans le forfait ${title}` : `Included in the ${title} plan`;\r\n\r\n            let rows = `\r\n            <tr>\r\n              <td>${includedLabel}<\/td>\r\n              <td>${fmtNumber(plan.includesUsers)}<\/td>\r\n              <td>${includedInPlan}<\/td>\r\n              <td>${fmtMoney(0)}<\/td>\r\n            <\/tr>`;\r\n\r\n            let prevIncluded = plan.includesUsers;\r\n            let cumulativeExtras = 0;\r\n\r\n            for (const [limit, rate] of plan.userSegments) {\r\n                const range = limit === Infinity ?\r\n                    `${fmtNumber(prevIncluded + 1)} ${t[LANG].andUp}` :\r\n                    `${fmtNumber(prevIncluded + 1)} \u2013 ${fmtNumber(limit)}`;\r\n                const monthlyAtTierStart = fmtMoney(plan.base + cumulativeExtras);\r\n                rows += `\r\n              <tr>\r\n                <td>${range}<\/td>\r\n                <td>${fmtNumber(prevIncluded)}<\/td>\r\n                <td>${monthlyAtTierStart}<\/td>\r\n                <td>${fmtMoney(rate)}<\/td>\r\n              <\/tr>`;\r\n                const segCount = (limit === Infinity ? 0 : (limit - prevIncluded));\r\n                cumulativeExtras += segCount * rate;\r\n                prevIncluded = limit;\r\n            }\r\n\r\n            return `\r\n            <div style=\"margin:10px 0 6px;font-weight:700;color:var(--ink);\">${title}<\/div>\r\n            <table class=\"price-table\">\r\n              <thead>\r\n                <tr>\r\n                  <th>${LANG === 'fr' ? 'Paliers d\u2019utilisateurs' : 'User tiers'}<\/th>\r\n                  <th>${LANG === 'fr' ? 'n. d\u2019utilisateurs inclus' : 'Number of users included'}<\/th>\r\n                  <th>${LANG === 'fr' ? 'Prix mensuel' : 'Monthly price'}<\/th>\r\n                  <th>${LANG === 'fr' ? 'Prix par utilisateur suppl\u00e9mentaire' : 'Price per additional user'}<\/th>\r\n                <\/tr>\r\n              <\/thead>\r\n              <tbody>${rows}<\/tbody>\r\n            <\/table>`;\r\n        }\r\n\r\n        function renderPricingTables() {\r\n            const body = document.getElementById('pricingBody');\r\n            const visible = getVisiblePlans();\r\n            let html = '';\r\n\r\n            if (visible.includes('enterprise')) {\r\n                let apiRows = `\r\n              <tr>\r\n                <td>**1\u2013100***<\/td>\r\n                <td>${fmtNumber(100)}<\/td>\r\n                <td>${LANG === 'fr' ? 'Inclus dans le forfait Entreprise' : 'Included in the Enterprise plan'}<\/td>\r\n                <td>${fmtMoney(0)}<\/td>\r\n              <\/tr>`;\r\n                for (let i = 1; i < API_TIERS.length; i++) {\r\n                    const limit = API_TIERS[i][0];\r\n                    const prev = API_TIERS[i - 1][0];\r\n                    const rate = API_TIERS[i][2];\r\n                    const base = API_TIERS[i - 1][1];\r\n                    const range = (limit === Infinity) ?\r\n                        `${fmtNumber(prev + 1)} ${t[LANG].andUp}` :\r\n                        `${fmtNumber(prev + 1)} \u2013 ${fmtNumber(limit)}`;\r\n                    apiRows += `\r\n                <tr>\r\n                  <td>${range}<\/td>\r\n                  <td>${fmtNumber(prev)}<\/td>\r\n                  <td>${fmtMoney(base)}<\/td>\r\n                  <td>${fmtMoney(rate)}<\/td>\r\n                <\/tr>`;\r\n                }\r\n                html += `\r\n              <div style=\"margin:10px 0 6px;font-weight:700;color:var(--ink);\">\r\n                ${LANG === 'fr' ? 'API (dossiers)' : 'API (files)'}\r\n              <\/div>\r\n              <table class=\"price-table\">\r\n                <thead>\r\n                  <tr>\r\n                    <th>${LANG === 'fr' ? 'Nombre de dossiers compl\u00e9t\u00e9s par mois' : 'Number of completed folders per month'}<\/th>\r\n                    <th>${LANG === 'fr' ? 'Nombre de dossiers inclus' : 'Number of envelopes included'}<\/th>\r\n                    <th>${LANG === 'fr' ? 'Prix mensuel' : 'Monthly price'}<\/th>\r\n                    <th>${LANG === 'fr' ? 'Prix par dossier compl\u00e9t\u00e9 suppl\u00e9mentaire' : 'Price per additional completed folders'}<\/th>\r\n                  <\/tr>\r\n                <\/thead>\r\n                <tbody>${apiRows}<\/tbody>\r\n              <\/table>`;\r\n            }\r\n\r\n            for (const key of ['enterprise']) {\r\n                if (visible.includes(key)) html += userTableFor(ACCOUNTS[key]);\r\n            }\r\n\r\n            html += `\r\n            <p class=\"muted\" style=\"margin-top:10px\">\r\n              ${LANG === 'fr'\r\n                ? 'Contenu ajust\u00e9 selon les forfaits visibles \u00e0 l\u2019\u00e9cran. La grille API appara\u00eet seulement si le forfait Entreprise est pr\u00e9sent.'\r\n                : 'Content adapts to the plans visible on screen. The API grid appears only when Enterprise is present.'}\r\n            <\/p>`;\r\n\r\n            document.getElementById('pricingTitle').textContent = t[LANG].infoTitle;\r\n            body.innerHTML = html;\r\n        }\r\n\r\n        \/\/ ===== 8) COMPARE MODAL =====\r\n        function renderCompareModal() {\r\n            const body = document.getElementById('compareBody');\r\n            document.getElementById('compareTitle').textContent = t[LANG].compareTitle;\r\n\r\n            const files = parseInt((document.getElementById('files-0') || {}).value || '0', 10);\r\n            const users = parseInt((document.getElementById('users-0') || {}).value || '10', 10);\r\n\r\n            const rows = [],\r\n                results = [];\r\n            for (const key of ['enterprise']) {\r\n                const p = ACCOUNTS[key];\r\n                const F = p.apiAvailable ? files : 0,\r\n                    U = users;\r\n                const bF = apiCostBreakdown(F, p),\r\n                    bU = userCostBreakdown(U, p);\r\n                const total = p.base + bF.apiTotal + bU.userTotal;\r\n                results.push({ key, total });\r\n                rows.push(`<tr>\r\n              <td>${LANG === 'fr' ? p.name_fr : p.name_en}<\/td>\r\n              <td>${fmtMoney(p.base)}<\/td>\r\n              <td>${fmtNumber(U)}<\/td>\r\n              <td>${fmtMoney(bU.userTotal)}<\/td>\r\n              <td>${p.apiAvailable ? fmtMoney(bF.apiTotal) : '\u2014'}<\/td>\r\n              <td data-t=\"${total}\">${fmtMoney(total)}<\/td>\r\n            <\/tr>`);\r\n            }\r\n\r\n            const best = results.reduce((a, b) => a.total < b.total ? a : b);\r\n\r\n            body.innerHTML = `\r\n            <table class=\"price-table\">\r\n              <thead><tr>\r\n                <th>${t[LANG].thPlan}<\/th>\r\n                <th>${t[LANG].thBase}<\/th>\r\n                <th>${t[LANG].thUsers}<\/th>\r\n                <th>${t[LANG].thUserFees}<\/th>\r\n                <th>${t[LANG].thApiFees}<\/th>\r\n                <th>${t[LANG].thTotal}<\/th>\r\n              <\/tr><\/thead>\r\n              <tbody>${rows.join('')}<\/tbody>\r\n            <\/table>\r\n            <p class=\"muted\" style=\"margin-top:8px\">\r\n              ${LANG === 'fr' ? 'Comparaison bas\u00e9e sur la colonne A.' : 'Comparison uses column A inputs.'}\r\n              <span class=\"badge\">${LANG === 'fr' ? 'Meilleur prix' : 'Best price'}<\/span> :\r\n              ${LANG === 'fr' ? ACCOUNTS[best.key].name_fr : ACCOUNTS[best.key].name_en}\r\n            <\/p>`;\r\n\r\n            body.querySelectorAll('td[data-t]').forEach(td => {\r\n                if (Number(td.dataset.t) === best.total) {\r\n                    td.innerHTML = `<span class=\"badge\">${fmtMoney(best.total)}<\/span>`;\r\n                }\r\n            });\r\n        }\r\n\r\n        \/\/ ===== 9) LANGUAGE \/ THEME & BOOTSTRAP =====\r\n        function setTheme(theme) {\r\n            THEME = theme;\r\n            localStorage.setItem('ez_theme', THEME);\r\n            document.documentElement.setAttribute('data-theme', THEME);\r\n            document.getElementById('themeBtn').textContent =\r\n                THEME === 'dark' ? t[LANG].themeDark : t[LANG].themeLight;\r\n        }\r\n\r\n        function setLang(lang) {\r\n            LANG = lang;\r\n            localStorage.setItem('ez_lang', LANG);\r\n            moneyFmt = new Intl.NumberFormat(LANG === 'fr' ? 'fr-CA' : 'en-CA', { style: 'currency', currency: 'CAD' });\r\n            numFmt = new Intl.NumberFormat(LANG === 'fr' ? 'fr-CA' : 'en-CA');\r\n\r\n            document.getElementById('title').textContent = t[LANG].title;\r\n            document.getElementById('compareBtn').textContent = t[LANG].compareTop;\r\n            document.getElementById('themeBtn').textContent = THEME === 'dark' ? t[LANG].themeDark : t[LANG].themeLight;\r\n            document.getElementById('langBtn').textContent = LANG === 'fr' ? 'EN' : 'FR';\r\n            inlineBtn.textContent = inlineCompareLabel();\r\n\r\n            ensureLanes(lanesCount);\r\n            if (document.getElementById('pricingModal').classList.contains('open')) renderPricingTables();\r\n            if (document.getElementById('compareModal').classList.contains('open')) renderCompareModal();\r\n        }\r\n\r\n        \/\/ ---- wire top bar ----\r\n        document.getElementById('langBtn').onclick = () => setLang(LANG === 'fr' ? 'en' : 'fr');\r\n        document.getElementById('themeBtn').onclick = () => setTheme(THEME === 'light' ? 'dark' : 'light');\r\n        document.getElementById('infoBtn').onclick = () => {\r\n            renderPricingTables();\r\n            const m = document.getElementById('pricingModal');\r\n            m.classList.add('open');\r\n            m.setAttribute('aria-hidden', 'false');\r\n        };\r\n        document.getElementById('compareBtn').onclick = () => {\r\n            renderCompareModal();\r\n            const m = document.getElementById('compareModal');\r\n            m.classList.add('open');\r\n            m.setAttribute('aria-hidden', 'false');\r\n        };\r\n\r\n        inlineBtn.onclick = () => {\r\n            const next = (lanesCount === 1) ? 2 : (lanesCount === 2) ? 3 : 1;\r\n            ensureLanes(next);\r\n        };\r\n\r\n        \/\/ ---- modal close ----\r\n        document.querySelectorAll('[data-close]').forEach(el => el.addEventListener('click', () => {\r\n            const m = el.closest('.modal');\r\n            m.classList.remove('open');\r\n            m.setAttribute('aria-hidden', 'true');\r\n        }));\r\n        document.querySelectorAll('.modal .backdrop').forEach(el => el.addEventListener('click', () => {\r\n            const m = el.closest('.modal');\r\n            m.classList.remove('open');\r\n            m.setAttribute('aria-hidden', 'true');\r\n        }));\r\n\r\n        \/\/ ---- boot ----\r\n        setTheme(THEME);\r\n        setLang(LANG);\r\n        ensureLanes(1);\r\n    <\/script>\r\n\r\n<\/body>\r\n\r\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-38aad78 elementor-align-center elementor-widget elementor-widget-button\" data-id=\"38aad78\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/github.com\/eZmaxinc\/eZmax-API\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Documentation API<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Connectez eZsign \u00e0 vos outils Int\u00e9grations populaires : Retour aux options de forfaits API Pour acc\u00e9der \u00e0 l\u2019API, vous devez poss\u00e9der un compte entreprise au co\u00fbt mensuel de 222.80$. Ce compte vous donne automatiquement 10 utilisateurs eZsign et 100 dossiers mensuels compl\u00e9t\u00e9s via l\u2019API. Qu\u2019est\u2011ce qu\u2019un dossier ? Un dossier regroupe un ou plusieurs documents [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"content-type":"","footnotes":""},"class_list":["post-2347","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>API - eZsign<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.ezsign.com\/fr\/tarifications\/forfaits-moyennes-et-grandes-entreprises\/api\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"API - eZsign\" \/>\n<meta property=\"og:description\" content=\"Connectez eZsign \u00e0 vos outils Int\u00e9grations populaires : Retour aux options de forfaits API Pour acc\u00e9der \u00e0 l\u2019API, vous devez poss\u00e9der un compte entreprise au co\u00fbt mensuel de 222.80$. Ce compte vous donne automatiquement 10 utilisateurs eZsign et 100 dossiers mensuels compl\u00e9t\u00e9s via l\u2019API. Qu\u2019est\u2011ce qu\u2019un dossier ? Un dossier regroupe un ou plusieurs documents [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.ezsign.com\/fr\/tarifications\/forfaits-moyennes-et-grandes-entreprises\/api\/\" \/>\n<meta property=\"og:site_name\" content=\"eZsign\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/ezsign.ca\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-13T14:56:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.ezsign.com\/wp-content\/uploads\/2025\/08\/2.png2_.png\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"500\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.ezsign.com\\\/fr\\\/api\\\/\",\"url\":\"https:\\\/\\\/www.ezsign.com\\\/fr\\\/tarifications\\\/forfaits-moyennes-et-grandes-entreprises\\\/api\\\/\",\"name\":\"API - eZsign\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.ezsign.com\\\/fr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.ezsign.com\\\/fr\\\/tarifications\\\/forfaits-moyennes-et-grandes-entreprises\\\/api\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.ezsign.com\\\/fr\\\/tarifications\\\/forfaits-moyennes-et-grandes-entreprises\\\/api\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.ezsign.com\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/2.png2_.png\",\"datePublished\":\"2020-10-29T19:24:03+00:00\",\"dateModified\":\"2026-07-13T14:56:57+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.ezsign.com\\\/fr\\\/tarifications\\\/forfaits-moyennes-et-grandes-entreprises\\\/api\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.ezsign.com\\\/fr\\\/tarifications\\\/forfaits-moyennes-et-grandes-entreprises\\\/api\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.ezsign.com\\\/fr\\\/tarifications\\\/forfaits-moyennes-et-grandes-entreprises\\\/api\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.ezsign.com\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/2.png2_.png\",\"contentUrl\":\"https:\\\/\\\/www.ezsign.com\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/2.png2_.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.ezsign.com\\\/fr\\\/tarifications\\\/forfaits-moyennes-et-grandes-entreprises\\\/api\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.ezsign.com\\\/fr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"API\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.ezsign.com\\\/fr\\\/#website\",\"url\":\"https:\\\/\\\/www.ezsign.com\\\/fr\\\/\",\"name\":\"eZsign\",\"description\":\"Fast and easy e-signature solution\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.ezsign.com\\\/fr\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.ezsign.com\\\/fr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.ezsign.com\\\/fr\\\/#organization\",\"name\":\"EZsign - Fast and easy e-signature solution\",\"url\":\"https:\\\/\\\/www.ezsign.com\\\/fr\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.ezsign.com\\\/fr\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.ezsign.com\\\/wp-content\\\/uploads\\\/2024\\\/06\\\/eZsign_logo_4C2x1.png\",\"contentUrl\":\"https:\\\/\\\/www.ezsign.com\\\/wp-content\\\/uploads\\\/2024\\\/06\\\/eZsign_logo_4C2x1.png\",\"width\":294,\"height\":116,\"caption\":\"EZsign - Fast and easy e-signature solution\"},\"image\":{\"@id\":\"https:\\\/\\\/www.ezsign.com\\\/fr\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/ezsign.ca\",\"https:\\\/\\\/www.instagram.com\\\/ezsign.ca\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/ezsign\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UC-s2lR6CKIoBciOQ2A8WpCQ\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"API - eZsign","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.ezsign.com\/fr\/tarifications\/forfaits-moyennes-et-grandes-entreprises\/api\/","og_locale":"fr_FR","og_type":"article","og_title":"API - eZsign","og_description":"Connectez eZsign \u00e0 vos outils Int\u00e9grations populaires : Retour aux options de forfaits API Pour acc\u00e9der \u00e0 l\u2019API, vous devez poss\u00e9der un compte entreprise au co\u00fbt mensuel de 222.80$. Ce compte vous donne automatiquement 10 utilisateurs eZsign et 100 dossiers mensuels compl\u00e9t\u00e9s via l\u2019API. Qu\u2019est\u2011ce qu\u2019un dossier ? Un dossier regroupe un ou plusieurs documents [&hellip;]","og_url":"https:\/\/www.ezsign.com\/fr\/tarifications\/forfaits-moyennes-et-grandes-entreprises\/api\/","og_site_name":"eZsign","article_publisher":"https:\/\/www.facebook.com\/ezsign.ca","article_modified_time":"2026-07-13T14:56:57+00:00","og_image":[{"width":800,"height":500,"url":"https:\/\/www.ezsign.com\/wp-content\/uploads\/2025\/08\/2.png2_.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Dur\u00e9e de lecture estim\u00e9e":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.ezsign.com\/fr\/api\/","url":"https:\/\/www.ezsign.com\/fr\/tarifications\/forfaits-moyennes-et-grandes-entreprises\/api\/","name":"API - eZsign","isPartOf":{"@id":"https:\/\/www.ezsign.com\/fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.ezsign.com\/fr\/tarifications\/forfaits-moyennes-et-grandes-entreprises\/api\/#primaryimage"},"image":{"@id":"https:\/\/www.ezsign.com\/fr\/tarifications\/forfaits-moyennes-et-grandes-entreprises\/api\/#primaryimage"},"thumbnailUrl":"https:\/\/www.ezsign.com\/wp-content\/uploads\/2025\/08\/2.png2_.png","datePublished":"2020-10-29T19:24:03+00:00","dateModified":"2026-07-13T14:56:57+00:00","breadcrumb":{"@id":"https:\/\/www.ezsign.com\/fr\/tarifications\/forfaits-moyennes-et-grandes-entreprises\/api\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.ezsign.com\/fr\/tarifications\/forfaits-moyennes-et-grandes-entreprises\/api\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.ezsign.com\/fr\/tarifications\/forfaits-moyennes-et-grandes-entreprises\/api\/#primaryimage","url":"https:\/\/www.ezsign.com\/wp-content\/uploads\/2025\/08\/2.png2_.png","contentUrl":"https:\/\/www.ezsign.com\/wp-content\/uploads\/2025\/08\/2.png2_.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.ezsign.com\/fr\/tarifications\/forfaits-moyennes-et-grandes-entreprises\/api\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.ezsign.com\/fr\/"},{"@type":"ListItem","position":2,"name":"API"}]},{"@type":"WebSite","@id":"https:\/\/www.ezsign.com\/fr\/#website","url":"https:\/\/www.ezsign.com\/fr\/","name":"eZsign","description":"Fast and easy e-signature solution","publisher":{"@id":"https:\/\/www.ezsign.com\/fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.ezsign.com\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/www.ezsign.com\/fr\/#organization","name":"EZsign - Fast and easy e-signature solution","url":"https:\/\/www.ezsign.com\/fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.ezsign.com\/fr\/#\/schema\/logo\/image\/","url":"https:\/\/www.ezsign.com\/wp-content\/uploads\/2024\/06\/eZsign_logo_4C2x1.png","contentUrl":"https:\/\/www.ezsign.com\/wp-content\/uploads\/2024\/06\/eZsign_logo_4C2x1.png","width":294,"height":116,"caption":"EZsign - Fast and easy e-signature solution"},"image":{"@id":"https:\/\/www.ezsign.com\/fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/ezsign.ca","https:\/\/www.instagram.com\/ezsign.ca\/","https:\/\/www.linkedin.com\/company\/ezsign","https:\/\/www.youtube.com\/channel\/UC-s2lR6CKIoBciOQ2A8WpCQ"]}]}},"_links":{"self":[{"href":"https:\/\/www.ezsign.com\/fr\/wp-json\/wp\/v2\/pages\/2347","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ezsign.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.ezsign.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.ezsign.com\/fr\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ezsign.com\/fr\/wp-json\/wp\/v2\/comments?post=2347"}],"version-history":[{"count":15,"href":"https:\/\/www.ezsign.com\/fr\/wp-json\/wp\/v2\/pages\/2347\/revisions"}],"predecessor-version":[{"id":43880,"href":"https:\/\/www.ezsign.com\/fr\/wp-json\/wp\/v2\/pages\/2347\/revisions\/43880"}],"wp:attachment":[{"href":"https:\/\/www.ezsign.com\/fr\/wp-json\/wp\/v2\/media?parent=2347"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}