← DocuSealCONTENT HISTORYWHAT CHANGED · RULE-BASED ANALYSIS
Update to DocuSeal
Snapshot Oct 8, 2026 · 00:04 UTC · version 2.0.0
Collection source: downloaded plugin package.
First saved snapshot
No earlier snapshot is available to establish a change.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"description": "DocuSeal development reference. Embed signing forms and template builder into web and mobile apps (JS/React/Vue/Angular, WebView, JWT, CSS theming). REST API with all endpoints, request/response schemas, code examples (cURL, CLI, Node.js, TypeScript, Python, Ruby, PHP, Go, C#, Java), and webhooks. Use when the user wants to integrate DocuSeal document signing or template management into their application.\n",
"included_files": [
{
"relative_path": "references/api/archive-a-submission.md",
"size_in_bytes": 2091
},
{
"relative_path": "references/api/archive-a-template.md",
"size_in_bytes": 2112
},
{
"relative_path": "references/api/clone-a-template.md",
"size_in_bytes": 4483
},
{
"relative_path": "references/api/create-a-submission-from-docx.md",
"size_in_bytes": 14762
},
{
"relative_path": "references/api/create-a-submission-from-html.md",
"size_in_bytes": 16594
},
{
"relative_path": "references/api/create-a-submission-from-pdf.md",
"size_in_bytes": 18085
},
{
"relative_path": "references/api/create-a-submission.md",
"size_in_bytes": 11083
},
{
"relative_path": "references/api/create-a-template-from-docx.md",
"size_in_bytes": 7892
},
{
"relative_path": "references/api/create-a-template-from-html.md",
"size_in_bytes": 8857
},
{
"relative_path": "references/api/create-a-template-from-pdf.md",
"size_in_bytes": 10895
},
{
"relative_path": "references/api/create-pdf-document-fillable-form-with-html-api.md",
"size_in_bytes": 13940
},
{
"relative_path": "references/api/create-submissions-from-emails.md",
"size_in_bytes": 4740
},
{
"relative_path": "references/api/download-signed-documents.md",
"size_in_bytes": 8368
},
{
"relative_path": "references/api/form-webhook.md",
"size_in_bytes": 3480
},
{
"relative_path": "references/api/get-a-submission.md",
"size_in_bytes": 4075
},
{
"relative_path": "references/api/get-a-submitter.md",
"size_in_bytes": 3285
},
{
"relative_path": "references/api/get-a-template.md",
"size_in_bytes": 3652
},
{
"relative_path": "references/api/get-submission-documents.md",
"size_in_bytes": 2532
},
{
"relative_path": "references/api/list-all-submissions.md",
"size_in_bytes": 5133
},
{
"relative_path": "references/api/list-all-submitters.md",
"size_in_bytes": 5135
},
{
"relative_path": "references/api/list-all-templates.md",
"size_in_bytes": 5280
},
{
"relative_path": "references/api/merge-templates.md",
"size_in_bytes": 5183
},
{
"relative_path": "references/api/pre-fill-pdf-document-form-fields-with-api.md",
"size_in_bytes": 11424
},
{
"relative_path": "references/api/send-documents-for-signature-via-api.md",
"size_in_bytes": 11142
},
{
"relative_path": "references/api/submission-webhook.md",
"size_in_bytes": 2516
},
{
"relative_path": "references/api/template-webhook.md",
"size_in_bytes": 2926
},
{
"relative_path": "references/api/update-a-submission.md",
"size_in_bytes": 5643
},
{
"relative_path": "references/api/update-a-submitter.md",
"size_in_bytes": 9856
},
{
"relative_path": "references/api/update-a-template.md",
"size_in_bytes": 3597
},
{
"relative_path": "references/api/update-template-documents.md",
"size_in_bytes": 6002
},
{
"relative_path": "references/api/use-dynamic-content-variables-in-docx-to-create-personalized-documents.md",
"size_in_bytes": 18643
},
{
"relative_path": "references/api/use-embedded-text-field-tags-in-the-pdf-to-create-a-fillable-form.md",
"size_in_bytes": 9272
},
{
"relative_path": "references/embed/form-builder-angular-generate-jwt-on-your-back-end-to-authorize-users.md",
"size_in_bytes": 6490
},
{
"relative_path": "references/embed/form-builder-angular-mount-form-builder-component.md",
"size_in_bytes": 1902
},
{
"relative_path": "references/embed/form-builder-angular-styling-the-builder-with-custom-css.md",
"size_in_bytes": 15965
},
{
"relative_path": "references/embed/form-builder-angular.md",
"size_in_bytes": 12026
},
{
"relative_path": "references/embed/form-builder-custom-css.md",
"size_in_bytes": 13141
},
{
"relative_path": "references/embed/form-builder-hosts.md",
"size_in_bytes": 1887
},
{
"relative_path": "references/embed/form-builder-js-generate-jwt-on-your-back-end-to-authorize-users.md",
"size_in_bytes": 6490
},
{
"relative_path": "references/embed/form-builder-js-render-html-form-element-with-jwt.md",
"size_in_bytes": 798
},
{
"relative_path": "references/embed/form-builder-js-styling-the-builder-with-custom-css.md",
"size_in_bytes": 15801
},
{
"relative_path": "references/embed/form-builder-js.md",
"size_in_bytes": 12642
},
{
"relative_path": "references/embed/form-builder-jwt-token.md",
"size_in_bytes": 6888
},
{
"relative_path": "references/embed/form-builder-react-generate-jwt-on-your-back-end-to-authorize-users.md",
"size_in_bytes": 6490
},
{
"relative_path": "references/embed/form-builder-react-mount-form-builder-component-with-jsx.md",
"size_in_bytes": 1330
},
{
"relative_path": "references/embed/form-builder-react-styling-the-builder-with-custom-css.md",
"size_in_bytes": 15918
},
{
"relative_path": "references/embed/form-builder-react.md",
"size_in_bytes": 11868
},
{
"relative_path": "references/embed/form-builder-security-recommendations.md",
"size_in_bytes": 3567
},
{
"relative_path": "references/embed/form-builder-vue-generate-jwt-on-your-back-end-to-authorize-users.md",
"size_in_bytes": 6490
},
{
"relative_path": "references/embed/form-builder-vue-mount-form-builder-component.md",
"size_in_bytes": 1128
},
{
"relative_path": "references/embed/form-builder-vue-styling-the-builder-with-custom-css.md",
"size_in_bytes": 15826
},
{
"relative_path": "references/embed/form-builder-vue.md",
"size_in_bytes": 11821
},
{
"relative_path": "references/embed/signing-form-angular-document-signing-form-initiated-via-api.md",
"size_in_bytes": 6489
},
{
"relative_path": "references/embed/signing-form-angular-document-signing-form-with-template-link.md",
"size_in_bytes": 1776
},
{
"relative_path": "references/embed/signing-form-angular-preview-completed-document.md",
"size_in_bytes": 1215
},
{
"relative_path": "references/embed/signing-form-angular-styling-the-signing-form-with-custom-css.md",
"size_in_bytes": 13933
},
{
"relative_path": "references/embed/signing-form-angular.md",
"size_in_bytes": 9051
},
{
"relative_path": "references/embed/signing-form-completed-preview-jwt-token.md",
"size_in_bytes": 5113
},
{
"relative_path": "references/embed/signing-form-custom-css.md",
"size_in_bytes": 10595
},
{
"relative_path": "references/embed/signing-form-hosts.md",
"size_in_bytes": 1933
},
{
"relative_path": "references/embed/signing-form-js-document-signing-form-initiated-via-api.md",
"size_in_bytes": 6105
},
{
"relative_path": "references/embed/signing-form-js-document-signing-form-with-template-link.md",
"size_in_bytes": 1521
},
{
"relative_path": "references/embed/signing-form-js-preview-completed-document.md",
"size_in_bytes": 972
},
{
"relative_path": "references/embed/signing-form-js-styling-the-signing-form-with-custom-css.md",
"size_in_bytes": 13677
},
{
"relative_path": "references/embed/signing-form-js.md",
"size_in_bytes": 9221
},
{
"relative_path": "references/embed/signing-form-mobile-integration.md",
"size_in_bytes": 5782
},
{
"relative_path": "references/embed/signing-form-react-document-signing-form-initiated-via-api.md",
"size_in_bytes": 6408
},
{
"relative_path": "references/embed/signing-form-react-document-signing-form-with-template-link.md",
"size_in_bytes": 1627
},
{
"relative_path": "references/embed/signing-form-react-preview-completed-document.md",
"size_in_bytes": 991
},
{
"relative_path": "references/embed/signing-form-react-styling-the-signing-form-with-custom-css.md",
"size_in_bytes": 13870
},
{
"relative_path": "references/embed/signing-form-react.md",
"size_in_bytes": 9008
},
{
"relative_path": "references/embed/signing-form-security-recommendations.md",
"size_in_bytes": 4349
},
{
"relative_path": "references/embed/signing-form-vue-document-signing-form-initiated-via-api.md",
"size_in_bytes": 6404
},
{
"relative_path": "references/embed/signing-form-vue-document-signing-form-with-template-link.md",
"size_in_bytes": 1614
},
{
"relative_path": "references/embed/signing-form-vue-preview-completed-document.md",
"size_in_bytes": 1058
},
{
"relative_path": "references/embed/signing-form-vue-styling-the-signing-form-with-custom-css.md",
"size_in_bytes": 13799
},
{
"relative_path": "references/embed/signing-form-vue.md",
"size_in_bytes": 9017
}
],
"name": "docuseal-code",
"skill_md_contents": "---\nname: docuseal-code\ndescription: >\n DocuSeal development reference. Embed signing forms and template builder\n into web and mobile apps (JS/React/Vue/Angular, WebView, JWT, CSS theming).\n REST API with all endpoints, request/response schemas, code examples\n (cURL, CLI, Node.js, TypeScript, Python, Ruby, PHP, Go, C#, Java),\n and webhooks. Use when the user wants to integrate DocuSeal document\n signing or template management into their application.\nlicense: MIT\nmetadata:\n author: DocuSeal\n version: \"1.0.4\"\n homepage: https://www.docuseal.com/docs\n source: https://github.com/docusealco/docuseal-agent-skills\n---\n\n## How References Are Organised\n\nReference files live in two subdirectories under `references/`:\n\n- **`references/embed/`** — Embed UI components (signing forms, template builder). Each file is self-contained — load only the ones matching the user's stack.\n- **`references/api/`** — REST API endpoints and webhooks. One file per endpoint/webhook with parameters, schemas, code examples, and response samples.\n\n## Embed UI Components\n\n| Component | Tag | Purpose | JWT |\n|---|---|---|---|\n| Signing Form | `<docuseal-form>` | Embed document signing UI into a page | optional |\n| Form Builder | `<docuseal-builder>` | Embed a full template/document builder | **required** |\n\nEach component ships in four frontend implementations: **JavaScript / React / Vue / Angular**.\n\n### Signing Form (`<docuseal-form>`)\n\n- JavaScript / HTML → [references/embed/signing-form-js.md](references/embed/signing-form-js.md)\n- React → [references/embed/signing-form-react.md](references/embed/signing-form-react.md)\n- Vue → [references/embed/signing-form-vue.md](references/embed/signing-form-vue.md)\n- Angular → [references/embed/signing-form-angular.md](references/embed/signing-form-angular.md)\n- Mobile (Android/iOS/React Native/Flutter via WebView) → [references/embed/signing-form-mobile-integration.md](references/embed/signing-form-mobile-integration.md)\n\n### Form Builder (`<docuseal-builder>`)\n\n- JavaScript / HTML → [references/embed/form-builder-js.md](references/embed/form-builder-js.md)\n- React → [references/embed/form-builder-react.md](references/embed/form-builder-react.md)\n- Vue → [references/embed/form-builder-vue.md](references/embed/form-builder-vue.md)\n- Angular → [references/embed/form-builder-angular.md](references/embed/form-builder-angular.md)\n\nAfter loading the main component reference, follow a link from its `## Guides` section for step-by-step walkthroughs.\n\n### Cross-cutting\n\n- JWT token generation — Form Builder (Node/TypeScript/Ruby/Python/PHP/Java/C#/Go) → [references/embed/form-builder-jwt-token.md](references/embed/form-builder-jwt-token.md)\n- JWT token generation — Signing Form completed/preview mode → [references/embed/signing-form-completed-preview-jwt-token.md](references/embed/signing-form-completed-preview-jwt-token.md)\n- EU Cloud / self-hosted `host` configuration — Signing Form → [references/embed/signing-form-hosts.md](references/embed/signing-form-hosts.md)\n- EU Cloud / self-hosted `host` configuration — Form Builder → [references/embed/form-builder-hosts.md](references/embed/form-builder-hosts.md)\n- Custom CSS theming — Signing Form (dark theme reference) → [references/embed/signing-form-custom-css.md](references/embed/signing-form-custom-css.md)\n- Custom CSS theming — Form Builder (dark theme reference) → [references/embed/form-builder-custom-css.md](references/embed/form-builder-custom-css.md)\n- Signing Form security recommendations → [references/embed/signing-form-security-recommendations.md](references/embed/signing-form-security-recommendations.md)\n- Form Builder security recommendations → [references/embed/form-builder-security-recommendations.md](references/embed/form-builder-security-recommendations.md)\n\n### Packages\n\n| Framework | Package | CDN |\n|---|---|---|\n| JavaScript | — | `https://cdn.docuseal.com/js/form.js`, `https://cdn.docuseal.com/js/builder.js` |\n| React | `@docuseal/react` | — |\n| Vue | `@docuseal/vue` | — |\n| Angular | `@docuseal/angular` | — |\n| React Native | uses `react-native-webview` (no native SDK) | — |\n| Flutter | uses `webview_flutter` (no native SDK) | — |\n\n### Common Embed Mistakes\n\n| # | Mistake | Fix |\n|---|---|---|\n| 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](references/embed/form-builder-jwt-token.md) / [signing-form-completed-preview-jwt-token.md](references/embed/signing-form-completed-preview-jwt-token.md). |\n| 2 | **Passing the API key as `data-token`** | `data-token` is a JWT **signed with** the API key, not the key itself. |\n| 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](references/embed/signing-form-hosts.md) / [form-builder-hosts.md](references/embed/form-builder-hosts.md). |\n| 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. |\n| 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. |\n| 6 | **camelCase props in HTML** | The web component uses `data-*` kebab-case attributes. Only React/Vue/Angular use camelCase props. |\n| 7 | **Expecting a native mobile SDK** | None exists. Embed via WebView — see [signing-form-mobile-integration.md](references/embed/signing-form-mobile-integration.md). |\n| 8 | **Passing `customCss` as a stylesheet link** | `customCss` / `data-custom-css` takes a CSS string, not a URL. See [signing-form-custom-css.md](references/embed/signing-form-custom-css.md) / [form-builder-custom-css.md](references/embed/form-builder-custom-css.md). |\n| 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](references/embed/signing-form-security-recommendations.md). |\n| 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](references/embed/form-builder-security-recommendations.md). |\n| 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](references/embed/signing-form-security-recommendations.md). |\n\n## REST API\n\n### Authentication\n\nAll requests require an API key passed in the `X-Auth-Token` header:\n\n```\nX-Auth-Token: YOUR_API_KEY\n```\n\nGet your API key: https://console.docuseal.com/api\n\n### Base URLs\n\n| Environment | Base URL |\n|---|---|\n| Global Cloud | `https://api.docuseal.com` |\n| EU Cloud | `https://api.docuseal.eu` |\n| Self-hosted | `https://docuseal.yourdomain.com/api` |\n\n### API Client SDKs\n\nOfficial 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.**\n\n| Language | Package | Install |\n|---|---|---|\n| JavaScript / TypeScript | `@docuseal/api` | `npm install @docuseal/api` |\n| Python | `docuseal` | `pip install docuseal` |\n| Ruby | `docuseal` | `gem install docuseal` |\n| PHP | `docusealco/docuseal` | `composer require docusealco/docuseal` |\n\nSDK usage examples are included in each endpoint reference file below (marked with \"SDK\" in the heading).\n\n### Endpoints\n\n**Templates**\n\n - `GET /templates` — [List all templates](references/api/list-all-templates.md)\n - `GET /templates/{id}` — [Get a template](references/api/get-a-template.md)\n - `DELETE /templates/{id}` — [Archive a template](references/api/archive-a-template.md)\n - `PUT /templates/{id}` — [Update a template](references/api/update-a-template.md)\n - `PUT /templates/{id}/documents` — [Update template documents](references/api/update-template-documents.md)\n - `POST /templates/{id}/clone` — [Clone a template](references/api/clone-a-template.md)\n - `POST /templates/html` — [Create a template from HTML](references/api/create-a-template-from-html.md)\n - `POST /templates/docx` — [Create a template from DOCX](references/api/create-a-template-from-docx.md)\n - `POST /templates/pdf` — [Create a template from PDF](references/api/create-a-template-from-pdf.md)\n - `POST /templates/merge` — [Merge templates](references/api/merge-templates.md)\n\n**Submissions**\n\n - `GET /submissions` — [List all submissions](references/api/list-all-submissions.md)\n - `GET /submissions/{id}` — [Get a submission](references/api/get-a-submission.md)\n - `GET /submissions/{id}/documents` — [Get submission documents](references/api/get-submission-documents.md)\n - `DELETE /submissions/{id}` — [Archive a submission](references/api/archive-a-submission.md)\n - `PUT /submissions/{id}` — [Update a submission](references/api/update-a-submission.md)\n - `POST /submissions/emails` — [Create submissions from emails](references/api/create-submissions-from-emails.md)\n - `POST /submissions/pdf` — [Create a submission from PDF](references/api/create-a-submission-from-pdf.md)\n - `POST /submissions/docx` — [Create a submission from DOCX](references/api/create-a-submission-from-docx.md)\n - `POST /submissions/html` — [Create a submission from HTML](references/api/create-a-submission-from-html.md)\n - `POST /submissions` — [Create a submission](references/api/create-a-submission.md)\n\n**Submitters**\n\n - `GET /submitters/{id}` — [Get a submitter](references/api/get-a-submitter.md)\n - `PUT /submitters/{id}` — [Update a submitter](references/api/update-a-submitter.md)\n - `GET /submitters` — [List all submitters](references/api/list-all-submitters.md)\n\n### Webhooks\n\n- [Form Webhook](references/api/form-webhook.md)\n- [Submission Webhook](references/api/submission-webhook.md)\n- [Template Webhook](references/api/template-webhook.md)\n\nConfigure webhook URL: https://console.docuseal.com/webhooks\n\n### Common API Patterns\n\n1. **Send a document for signing:** create a template (or use existing) → `POST /submissions` with submitter emails → submitters receive signing links\n2. **Embed signing in your app:** create submission with `send_email: false` → use returned `slug` with `<docuseal-form>` (see Embed UI Components above)\n3. **Pre-fill and auto-sign:** `POST /submissions` with `fields[].default_value` and `completed: true`\n4. **Track completion:** poll `GET /submissions/{id}` or configure webhooks for `form.completed`\n5. **Download signed documents:** `GET /submissions/{id}/documents` returns PDF URLs\n\n## Quick Decision Flow\n\n1. **Embedding a component?** → Signing Form or Form Builder → load from `references/embed/`.\n2. **Making API calls?** → Check if the user's language has an SDK (JS/TS, Python, Ruby, PHP) and prefer it over raw HTTP. Load the matching endpoint from `references/api/`.\n3. **How-to question about embed?** Follow links from the component reference's `## Guides` section.\n4. **Mobile?** Load [references/embed/signing-form-mobile-integration.md](references/embed/signing-form-mobile-integration.md).\n5. **JWT needed?** Always for Form Builder — load [references/embed/form-builder-jwt-token.md](references/embed/form-builder-jwt-token.md). For Signing Form only when using `data-token` (preview/completed mode) — load [references/embed/signing-form-completed-preview-jwt-token.md](references/embed/signing-form-completed-preview-jwt-token.md).\n6. **Not on `docuseal.com`?** Load [references/embed/signing-form-hosts.md](references/embed/signing-form-hosts.md) or [references/embed/form-builder-hosts.md](references/embed/form-builder-hosts.md) depending on the component.\n7. **Custom theme?** Load [references/embed/signing-form-custom-css.md](references/embed/signing-form-custom-css.md) or [references/embed/form-builder-custom-css.md](references/embed/form-builder-custom-css.md) depending on the component.\n8. **Auth, URL handling, webhook verification, or any security-sensitive embedding?** Load [references/embed/signing-form-security-recommendations.md](references/embed/signing-form-security-recommendations.md) or [references/embed/form-builder-security-recommendations.md](references/embed/form-builder-security-recommendations.md) depending on the component.\n9. **CLI commands?** Load the sibling `docuseal-cli` skill from this same repo.\n"
}SHA-256 of public snapshot: 42889234bb71f8561e589f0d59d926966df646a81ce359443a48ad0197c3bb72