{"id":"bfa55f60-9930-4b99-83fe-78042db7c88e","shortId":"mNuGBr","kind":"skill","title":"docuseal-code","tagline":"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#, Ja","description":"## 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\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\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 Word DOCX](references/api/create-a-template-from-word-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  - `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. **CLI commands?** Load the sibling `docuseal-cli` skill from this same repo.","tags":["docuseal","code","agent","skills","docusealco","agent-skills","agentic-ai","coding-agents"],"capabilities":["skill","source-docusealco","skill-docuseal-code","topic-agent-skills","topic-agentic-ai","topic-coding-agents"],"categories":["docuseal-agent-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/docusealco/docuseal-agent-skills/docuseal-code","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add docusealco/docuseal-agent-skills","source_repo":"https://github.com/docusealco/docuseal-agent-skills","install_from":"skills.sh"}},"qualityScore":"0.453","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 6 github stars · SKILL.md body (10,423 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T13:22:58.228Z","embedding":null,"createdAt":"2026-05-18T13:22:58.228Z","updatedAt":"2026-05-18T13:22:58.228Z","lastSeenAt":"2026-05-18T13:22:58.228Z","tsv":"'/api':523,540 '/clone':652 '/d':375,380,426 '/documents':644,704,871 '/go':196 '/js/builder.js':260 '/js/form.js':257 '/s':378,390 '/submissions':400,422,689,695,702,710,748,806,844,857,869 '/submissions/docx':732 '/submissions/emails':717 '/submissions/html':740 '/submissions/pdf':724 '/submitters':755,762,769 '/templates':615,621,628,635,642,650 '/templates/docx':666 '/templates/html':658 '/templates/merge':683 '/templates/pdf':675 '/webhooks':789 '1':289,793,878 '2':316,814,890 '3':340,835,919 '4':373,852,935 '5':402,864,940 '6':436,964 '7':455,978 '8':469,991 'alway':943 'android/ios/react':147 'angular':130,143,165,265 'api':24,79,303,319,334,401,423,494,500,515,519,541,550,791,892 'api.docuseal.com':531 'api.docuseal.eu':534 'app':17,819 'archiv':630,712 'attribut':449 'auth':507,512 'authent':495,553 'auto':841 'auto-sign':840 'backend':301 'base':524,527 'browser':294 'build':555 'builder':12,61,113,118,154,194,227,244,886,946 'c':40 'call':893 'camelcas':437,453 'case':448 'cdn':253 'cdn.docuseal.com':256,259 'cdn.docuseal.com/js/builder.js':258 'cdn.docuseal.com/js/form.js':255 'cdn.docuseal.eu':356 'check':894 'cli':33,992,999 'client':310,542 'clone':653 'cloud':209,220,359,530,533 'code':3,30,90 'command':993 'common':284,790 'complet':850,854 'completed/preview':204 'compon':57,97,98,121,172,443,833,881,930,977,990 'compos':592 'configur':214,225,784,860 'confus':374 'console.docuseal.com':522,788 'console.docuseal.com/api':521 'console.docuseal.com/webhooks':787 'contain':67 'creat':397,659,667,676,718,725,733,741,749,799,820 'cross':188 'cross-cut':187 'css':21,231,241,480,483 'curl':32 'custom':230,240,479,979 'customcss':471,476 'cut':189 'dark':235,245 'data':323,326,344,354,409,445,478,957 'data-custom-css':477 'data-host':343,353 'data-src':408 'data-token':322,325,956 'decis':876 'default':847 'delet':627,709 'depend':974,987 'develop':5 'direct':425 'document':105,647,707,796,867 'docus':2,4,581,584,586,589,998 'docuseal-c':997 'docuseal-cod':1 'docuseal.com':967 'docuseal.yourdomain.com':539 'docuseal.yourdomain.com/api':538 'docuseal/angular':266 'docuseal/api':576,579 'docuseal/react':262 'docuseal/vue':264 'docusealco/docuseal':591,594 'docx':672,737 'download':865 'email':721,809,824 'emb':7,55,95,104,114,285,463,815,831,925 'embed':879 'endpoint':27,80,602,612,916 'endpoint/webhook':86 'environ':526 'eu':208,219,347,358,532 'exampl':31,91,597 'exist':462,804 'expect':456 'fals':825 'field':846 'file':47,63,84,604 'fill':838 'fix':288 'flow':877 'flutter':277,280 'follow':174,926 'form':9,59,103,112,132,153,193,203,216,226,234,243,775,883,885,945,952 'form-builder-custom-css.md':491 'form-builder-hosts.md':371 'form-builder-jwt-token.md':312 'form.completed':863 'four':124 'framework':251 'frontend':125 'full':116 'gem':587 'generat':192,201,290 'get':517,614,620,623,688,694,697,701,705,754,757,768,856,868 'global':529 'go':39 'guid':179,933 'handl':552 'head':611 'header':509 'host':212,213,223,224,342,345,351,355,367,537 'hostnam':363 'how-to':920 'html':134,156,440,663,745 'http':563,912 'id':622,629,636,643,651,696,703,711,756,763,858,870 'implement':126 'includ':599 'individu':394 'initi':419 'instal':573,578,583,588 'ja':41 'javascript':127,133,155,254,574 'js/react/vue/angular':18 'js/ts':903 'jwt':20,101,190,199,291,295,330,941 'kebab':447 'kebab-cas':446 'key':304,320,335,338,501,516,520 'languag':568,571,899 'librari':546 'link':176,475,813,927 'list':616,690,770 'live':48 'load':68,169,887,913,937,947,961,968,981,994 'main':171 'make':891 'mark':606 'match':72,915 'merg':684 'miss':341 'mistak':286,287 'mobil':16,146,459,936 'mode':205,960 'multi':404 'multi-parti':403 'multipl':414 'must':296,305,417 'nativ':268,272,275,282,458 'native/flutter':148 'need':942 'never':306 'node.js':34 'node/typescript/ruby/python/php/java/c':195 'none':461 'npm':577 'offici':544 'one':71,83,570 'option':111 'organis':45 'packag':250,252,572 'page':110 'paramet':88 'pars':558 'parti':388,405,416,434 'pass':317,470,502 'pattern':792 'pdf':680,729,873 'per':85 'php':38,590,906 'pip':582 'poll':855 'post':649,657,665,674,682,716,723,731,739,747,805,843 'pre':837 'pre-fil':836 'prefer':559,908 'preview/completed':959 'prop':438,454 'purpos':100 'put':634,641,761 'python':36,580,904 'question':923 'quick':875 'raw':562,911 'react':128,137,159,261,267,271 'react-native-webview':270 'react/vue/angular':451 'receiv':811 'refer':6,43,46,53,173,237,247,603,931 'references/api':77,918 'references/api/archive-a-submission.md':715 'references/api/archive-a-template.md':633 'references/api/clone-a-template.md':656 'references/api/create-a-submission-from-docx.md':738 'references/api/create-a-submission-from-html.md':746 'references/api/create-a-submission-from-pdf.md':730 'references/api/create-a-submission.md':752 'references/api/create-a-template-from-html.md':664 'references/api/create-a-template-from-pdf.md':681 'references/api/create-a-template-from-word-docx.md':673 'references/api/create-submissions-from-emails.md':722 'references/api/form-webhook.md':777 'references/api/get-a-submission.md':700 'references/api/get-a-submitter.md':760 'references/api/get-a-template.md':626 'references/api/get-submission-documents.md':708 'references/api/list-all-submissions.md':693 'references/api/list-all-submitters.md':773 'references/api/list-all-templates.md':619 'references/api/merge-templates.md':686 'references/api/submission-webhook.md':780 'references/api/template-webhook.md':783 'references/api/update-a-submitter.md':767 'references/api/update-a-template.md':640 'references/api/update-template-documents.md':648 'references/embed':54,889 'references/embed/form-builder-angular.md':166,167 'references/embed/form-builder-custom-css.md':248,249,492,985,986 'references/embed/form-builder-hosts.md':228,229,372,972,973 'references/embed/form-builder-js.md':157,158 'references/embed/form-builder-jwt-token.md':197,198,313,948,949 'references/embed/form-builder-react.md':160,161 'references/embed/form-builder-vue.md':163,164 'references/embed/signing-form-angular.md':144,145 'references/embed/signing-form-completed-preview-jwt-token.md':206,207,315,962,963 'references/embed/signing-form-custom-css.md':238,239,490,982,983 'references/embed/signing-form-hosts.md':217,218,370,969,970 'references/embed/signing-form-js.md':135,136 'references/embed/signing-form-mobile-integration.md':151,152,468,938,939 'references/embed/signing-form-react.md':138,139 'references/embed/signing-form-vue.md':141,142 'repo':1004 'request':497,554 'request/response':28 'requir':119,498,593 'respons':93,557 'rest':23,78,493,549 'return':827,872 'rubi':37,585,905 'sampl':94 'schema':29,89 'sdk':276,283,460,545,595,608,902 'sdks':543,560 'section':180,934 'see':311,368,466,488,830 'self':66,211,222,350,366,536 'self-contain':65 'self-host':210,221,349,365,535 'send':794,823 'set':352 'ship':122,307 'sibl':996 'sign':8,58,102,106,131,202,215,233,298,331,415,798,812,816,842,866,882,951 'signer':395 'signing-form-completed-preview-jwt-token.md':314 'signing-form-custom-css.md':489 'signing-form-hosts.md':369 'signing-form-mobile-integration.md':467 'singl':387,433 'single-parti':386,432 'skill':1000 'skill-docuseal-code' 'slug':376,379,381,391,427,828 'source-docusealco' 'src':410 'stack':76 'step':183,185 'step-by-step':182 'string':484 'stylesheet':474 'subdirectori':51 'submiss':687,692,699,706,714,719,727,735,743,751,778,821 'submitt':753,759,766,772,808,810 'tag':99 'take':481 'templat':11,60,384,389,406,412,435,613,618,625,632,639,646,655,661,669,678,685,781,801 'template/document':117 'theme':22,232,236,242,246,980 'token':191,200,324,327,508,513,958 'topic-agent-skills' 'topic-agentic-ai' 'topic-coding-agents' 'track':853 'true':851 'two':50 'typescript':35,575 'ui':56,96,107,832 'updat':637,645,764 'url':385,396,411,428,487,525,528,786,874 'usag':596 'use':269,278,444,452,803,826,955 'user':74,566,897 'valu':848 'via':149,398,407,420,464 'vs':377 'vue':129,140,162,263 'walkthrough':186 'web':14,442 'webhook':82,774,776,779,782,785,861 'webview':19,150,273,279,465 'word':671 'work':430 'wrap':547 'x':506,511 'x-auth-token':505,510","prices":[{"id":"8d33166f-6dd5-4839-9949-6259333ea177","listingId":"bfa55f60-9930-4b99-83fe-78042db7c88e","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"docusealco","category":"docuseal-agent-skills","install_from":"skills.sh"},"createdAt":"2026-05-18T13:22:58.228Z"}],"sources":[{"listingId":"bfa55f60-9930-4b99-83fe-78042db7c88e","source":"github","sourceId":"docusealco/docuseal-agent-skills/docuseal-code","sourceUrl":"https://github.com/docusealco/docuseal-agent-skills/tree/master/skills/docuseal-code","isPrimary":false,"firstSeenAt":"2026-05-18T13:22:58.228Z","lastSeenAt":"2026-05-18T13:22:58.228Z"}],"details":{"listingId":"bfa55f60-9930-4b99-83fe-78042db7c88e","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"docusealco","slug":"docuseal-code","github":{"repo":"docusealco/docuseal-agent-skills","stars":6,"topics":["agent-skills","agentic-ai","coding-agents"],"license":"mit","html_url":"https://github.com/docusealco/docuseal-agent-skills","pushed_at":"2026-05-08T14:31:43Z","description":"DocuSeal's official collection of agent skills","skill_md_sha":"b56350745dc8a7563dbd68340566d337e0347e1f","skill_md_path":"skills/docuseal-code/SKILL.md","default_branch":"master","skill_tree_url":"https://github.com/docusealco/docuseal-agent-skills/tree/master/skills/docuseal-code"},"layout":"multi","source":"github","category":"docuseal-agent-skills","frontmatter":{"name":"docuseal-code","license":"MIT","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."},"skills_sh_url":"https://skills.sh/docusealco/docuseal-agent-skills/docuseal-code"},"updatedAt":"2026-05-18T13:22:58.228Z"}}