Help us improve
Share bugs, ideas, or general feedback.
From docuseal
Integrates DocuSeal document signing forms and template builder into web/mobile apps using JS/React/Vue/Angular. Covers REST API endpoints, JWT auth, CSS theming, and code examples in multiple languages.
npx claudepluginhub docusealco/docuseal-agent-skills --plugin docusealHow this skill is triggered — by the user, by Claude, or both
Slash command
/docuseal:docuseal-codeThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Reference files live in two subdirectories under `references/`:
references/api/archive-a-submission.mdreferences/api/archive-a-template.mdreferences/api/clone-a-template.mdreferences/api/create-a-submission-from-docx.mdreferences/api/create-a-submission-from-html.mdreferences/api/create-a-submission-from-pdf.mdreferences/api/create-a-submission.mdreferences/api/create-a-template-from-html.mdreferences/api/create-a-template-from-pdf.mdreferences/api/create-a-template-from-word-docx.mdreferences/api/create-pdf-document-fillable-form-with-html-api.mdreferences/api/create-submissions-from-emails.mdreferences/api/download-signed-documents.mdreferences/api/form-webhook.mdreferences/api/get-a-submission.mdreferences/api/get-a-submitter.mdreferences/api/get-a-template.mdreferences/api/get-submission-documents.mdreferences/api/list-all-submissions.mdreferences/api/list-all-submitters.mdCreates p5.js generative art with seeded randomness, noise fields, and interactive parameter exploration. Use for algorithmic art, flow fields, or particle systems.
Share bugs, ideas, or general feedback.
Reference files live in two subdirectories under references/:
references/embed/ — Embed UI components (signing forms, template builder). Each file is self-contained — load only the ones matching the user's stack.references/api/ — REST API endpoints and webhooks. One file per endpoint/webhook with parameters, schemas, code examples, and response samples.| Component | Tag | Purpose | JWT |
|---|---|---|---|
| Signing Form | <docuseal-form> | Embed document signing UI into a page | optional |
| Form Builder | <docuseal-builder> | Embed a full template/document builder | required |
Each component ships in four frontend implementations: JavaScript / React / Vue / Angular.
<docuseal-form>)<docuseal-builder>)After loading the main component reference, follow a link from its ## Guides section for step-by-step walkthroughs.
host configuration — Signing Form → references/embed/signing-form-hosts.mdhost configuration — Form Builder → references/embed/form-builder-hosts.md| Framework | Package | CDN |
|---|---|---|
| JavaScript | — | https://cdn.docuseal.com/js/form.js, https://cdn.docuseal.com/js/builder.js |
| React | @docuseal/react | — |
| Vue | @docuseal/vue | — |
| Angular | @docuseal/angular | — |
| React Native | uses react-native-webview (no native SDK) | — |
| Flutter | uses webview_flutter (no native SDK) | — |
| # | Mistake | Fix |
|---|---|---|
| 1 | Generating JWT in the browser | JWT must be signed on the backend — the API key must never ship to the client. See form-builder-jwt-token.md / signing-form-completed-preview-jwt-token.md. |
| 2 | Passing the API key as data-token | data-token is a JWT signed with the API key, not the key itself. |
| 3 | Missing host/data-host on EU or self-hosted | Set data-host="cdn.docuseal.eu" for EU Cloud or your own hostname for self-hosted. See signing-form-hosts.md / form-builder-hosts.md. |
| 4 | Confusing /d/{slug} vs /s/{slug} | /d/{slug} is the template URL (single-party templates). /s/{slug} is an individual signer URL created via the /submissions API. |
| 5 | Multi-party template via data-src URL | Templates with multiple signing parties must be initiated via the /submissions API — the direct /d/{slug} URL only works for single-party templates. |
| 6 | camelCase props in HTML | The web component uses data-* kebab-case attributes. Only React/Vue/Angular use camelCase props. |
| 7 | Expecting a native mobile SDK | None exists. Embed via WebView — see signing-form-mobile-integration.md. |
| 8 | Passing customCss as a stylesheet link | customCss / data-custom-css takes a CSS string, not a URL. See signing-form-custom-css.md / form-builder-custom-css.md. |
| 9 | Embedding signing forms behind enumerable URLs | DocuSeal slugs are random, but an embedding page like https://yourapp.com/contracts/123/sign lets an attacker iterate integer IDs to reach other users' signing forms. Put the DocuSeal slug or a UUID in your URL, or require auth on the embedding page. See signing-form-security-recommendations.md. |
| 10 | Exposing the Form Builder without auth | The page that renders <docuseal-builder> must be gated by your app's authentication. The JWT-issuing endpoint must verify the requesting user owns the template referenced by external_id. Otherwise any logged-in user can edit any template. See form-builder-security-recommendations.md. |
| 11 | Acting on client-side completed events | Browser events can be forged. Drive state changes from form.completed webhooks with HMAC verification, not from <docuseal-form> JavaScript callbacks. See signing-form-security-recommendations.md. |
All requests require an API key passed in the X-Auth-Token header:
X-Auth-Token: YOUR_API_KEY
Get your API key: https://console.docuseal.com/api
| Environment | Base URL |
|---|---|
| Global Cloud | https://api.docuseal.com |
| EU Cloud | https://api.docuseal.eu |
| Self-hosted | https://docuseal.yourdomain.com/api |
Official SDK libraries wrap the REST API and handle authentication, request building, and response parsing. Prefer SDKs over raw HTTP when the user's language has one.
| Language | Package | Install |
|---|---|---|
| JavaScript / TypeScript | @docuseal/api | npm install @docuseal/api |
| Python | docuseal | pip install docuseal |
| Ruby | docuseal | gem install docuseal |
| PHP | docusealco/docuseal | composer require docusealco/docuseal |
SDK usage examples are included in each endpoint reference file below (marked with "SDK" in the heading).
Templates
GET /templates — List all templatesGET /templates/{id} — Get a templateDELETE /templates/{id} — Archive a templatePUT /templates/{id} — Update a templatePUT /templates/{id}/documents — Update template documentsPOST /templates/{id}/clone — Clone a templatePOST /templates/html — Create a template from HTMLPOST /templates/docx — Create a template from Word DOCXPOST /templates/pdf — Create a template from PDFPOST /templates/merge — Merge templatesSubmissions
GET /submissions — List all submissionsGET /submissions/{id} — Get a submissionGET /submissions/{id}/documents — Get submission documentsDELETE /submissions/{id} — Archive a submissionPOST /submissions/emails — Create submissions from emailsPOST /submissions/pdf — Create a submission from PDFPOST /submissions/docx — Create a submission from DOCXPOST /submissions/html — Create a submission from HTMLPOST /submissions — Create a submissionSubmitters
GET /submitters/{id} — Get a submitterPUT /submitters/{id} — Update a submitterGET /submitters — List all submittersConfigure webhook URL: https://console.docuseal.com/webhooks
POST /submissions with submitter emails → submitters receive signing linkssend_email: false → use returned slug with <docuseal-form> (see Embed UI Components above)POST /submissions with fields[].default_value and completed: trueGET /submissions/{id} or configure webhooks for form.completedGET /submissions/{id}/documents returns PDF URLsreferences/embed/.references/api/.## Guides section.data-token (preview/completed mode) — load references/embed/signing-form-completed-preview-jwt-token.md.docuseal.com? Load references/embed/signing-form-hosts.md or references/embed/form-builder-hosts.md depending on the component.docuseal-cli skill from this same repo.