# Smarter eSignature for Developers

Use our powerful API and Embedding to implement document signing workflows with ease.

[Start for Free](https://docuseal.com/sign_up?redir=https%3A%2F%2Fconsole.docuseal.com%2Fapi)

## AI plugins

### Add to Claude Code

1. Add the plugin repository:

```bash
claude plugin marketplace add docusealco/docuseal-agent-skills
```

2. Install the plugin in your project:

```bash
claude plugin install docuseal@docuseal-agent-skills
```

### Add to Codex

1. Add the plugin repository:

```bash
codex plugin marketplace add docusealco/docuseal-agent-skills
```

2. Install the plugin in your project:

```bash
codex plugin add docuseal@docuseal-agent-skills
```

### Add to Hermes Agent

Install the CLI skill:

```bash
hermes skills install docusealco/docuseal-agent-skills/skills/docuseal-cli
```

Hermes prompts for `DOCUSEAL_API_KEY` on first use and passes it through to the terminal sandbox.

### Add Code Skills

Universal skills work in any code agent (Cursor, GitHub Copilot, Gemini CLI and many others).

1. Run the install command:

```bash
npx skills add docusealco/docuseal-agent-skills --skill docuseal-code
```

2. Select "Global" or "Project" installation and proceed through the wizard.

Start for free in [Sandbox](https://docuseal.com/sign_up?redir=https%3A%2F%2Fconsole.docuseal.com%2Fapi), no CC required.

[Embed document signing into web apps](https://www.docuseal.com/guides/embed-document-signing-into-web-app-with-javascript.md)  
[Embed document signing in mobile apps](https://www.docuseal.com/guides/embed-document-signing-into-android-app.md)  
[Embed form builder to create signing forms](https://www.docuseal.com/guides/complete-document-creation-and-signing-process-in-your-saas-with-javascript.md)  
[Send documents for signature via API](https://www.docuseal.com/guides/send-documents-for-signature-via-api.md)  
[Pre-fill document form fields with API](https://www.docuseal.com/guides/pre-fill-pdf-document-form-fields-with-api.md)  
[Create PDF fillable form with HTML API](https://www.docuseal.com/guides/create-pdf-document-fillable-form-with-html-api.md)  
[Create PDF fillable form with text tags](https://www.docuseal.com/guides/use-embedded-text-field-tags-in-the-pdf-to-create-a-fillable-form.md)  
[Download signed documents](https://www.docuseal.com/guides/download-signed-documents.md)

[Get API key](https://docuseal.com/sign_up?redir=https%3A%2F%2Fconsole.docuseal.com%2Fapi)  
[Documentation](https://www.docuseal.com/docs.md)

  
## API and Webhooks

Create and send documents using REST API. Receive webhook events to get notified when the documents are signed.

[Try it Now](https://www.docuseal.com/docs/api.md)

#### JavaScript

```
const docuseal = require("@docuseal/api");

docuseal.configure({ key: "API_KEY" });

const submission = await docuseal.createSubmission({
  template_id: 1000001,
  send_email: true,
  submitters: [
    {
      role: "First Party",
      email: "john.doe@example.com"
    }
  ]
});
```

#### TypeScript

```
import docuseal from "@docuseal/api";

docuseal.configure({ key: "API_KEY" });

const submission = await docuseal.createSubmission({
  template_id: 1000001,
  send_email: true,
  submitters: [
    {
      role: "First Party",
      email: "john.doe@example.com"
    }
  ]
});
```

#### Python

```
from docuseal import docuseal

docuseal.key = "API_KEY"
docuseal.url = "https://api.docuseal.com"

docuseal.create_submission({
  "template_id": 1000001,
  "send_email": True,
  "submitters": [
    {
      "role": "First Party",
      "email": "john.doe@example.com"
    }
  ]
})
```

#### Ruby

```
require "docuseal"

Docuseal.key = ENV["DOCUSEAL_API_KEY"]
Docuseal.url = "https://api.docuseal.com"

Docuseal.create_submission({
  template_id: 1000001,
  send_email: true,
  submitters: [
    {
      role: "First Party",
      email: "john.doe@example.com"
    }
  ]
})
```

#### PHP

```
$docuseal = new \Docuseal\Api('API_KEY', 'https://api.docuseal.com');

$docuseal->createSubmission([
  'template_id' => 1000001,
  'send_email' => true,
  'submitters' => [
    [
      'role' => 'First Party',
      'email' => 'john.doe@example.com'
    ]
  ]
]);
```

#### Java

```
var client = new DocusealClient("API_KEY", "https://api.docuseal.com");

var submission = client.createSubmission(CreateSubmissionParams.builder()
    .templateId(1000001)
    .submitters(List.of(
      CreateSubmissionSubmitterParams.builder()
        .role("First Party")
        .email("john.doe@example.com")
        .build()))
    .sendEmail(true)
    .build());
```

#### C#

```
var client = new DocusealClient("API_KEY", "https://api.docuseal.com");

var submission = await client.CreateSubmissionAsync(new CreateSubmissionParams
{
    TemplateId = 1000001,
    SendEmail = true,
    Submitters = [
        new CreateSubmissionSubmitterParams
        {
            Role = "First Party",
            Email = "john.doe@example.com"
        },
    ]
});
```

#### Go

```
ds := docuseal.NewClient("API_KEY", docuseal.WithBaseURL("https://api.docuseal.com"))

submission, err := ds.CreateSubmission(context.Background(), &docuseal.CreateSubmissionParams{
	TemplateID: 1000001,
	SendEmail: docuseal.Bool(true),
	Submitters: []*docuseal.CreateSubmissionSubmitterParams{
		{
			Role: "First Party",
			Email: "john.doe@example.com",
		},
	},
})
```

#### Node.js

```
const fetch = require("node-fetch");

const resp = await fetch("https://api.docuseal.com/submissions", {
  method: "POST",
  headers: {
    "X-Auth-Token": "API_KEY"
  },
  body: JSON.stringify({
    template_id: 1000001,
    send_email: true,
    submitters: [
      {
        role: "First Party",
        email: "john.doe@example.com"
      }
    ]
  })
});

const submitters = await resp.json();
```

#### cURL

```
curl --request POST \
  --url https://api.docuseal.com/submissions \
  --header 'X-Auth-Token: API_KEY' \
  --header 'content-type: application/json' \
  --data '{"template_id":1000001,"send_email":true,"submitters":[{"role":"First Party","email":"john.doe@example.com"}]}'
```

#### CLI

```
docuseal submissions create --template-id 1000001 --send-email \
  -d "submitters[0][role]=First Party" \
  -d "submitters[0][email]=john.doe@example.com"
```

  
## Embedded Components

DocuSeal allows you to bring the document signing process into your apps. Allow users to create and sign documents in your web or mobile app.

[Learn More](https://www.docuseal.com/docs/embedded/form.md)

#### JavaScript

```
<script src="https://cdn.docuseal.com/js/form.js"></script>

<docuseal-form
  id="docusealForm"
  data-src="https://docuseal.com/d/{{ template_slug }}"
  data-email="{{ signer_email }}">
</docuseal-form>

<script>
  window.docusealForm.addEventListener('completed', (e) => {
    console.log(e.detail)
  })
</script>
```

#### React

```
import React from "react"
import { DocusealForm } from '@docuseal/react'

export function App() {
  return (
    <div className="app">
      <DocusealForm
        src="https://docuseal.com/d/LEVGR9rhZYf86M"
        email="signer@example.com"
        onComplete={(data) => console.log(data)}
      />
    </div>
  );
}
```

#### Vue

```
<template>
  <DocusealForm
    :src="'https://docuseal.com/d/LEVGR9rhZYf86M'"
    :email="'signer@example.com'"
    @complete="onFormComplete"
  />
</template>

<script>
import { DocusealForm } from '@docuseal/vue'

export default {
  name: 'App',
  components: {
    DocusealForm
  },
  methods: {
    onFormComplete (data) {
      console.log(data)
    }
  }
}
</script>
```

#### Angular

```
import { Component } from '@angular/core';
import { DocusealFormComponent } from '@docuseal/angular';

@Component({
  selector: 'app-root',
  standalone: true,
  imports: [DocusealFormComponent],
  template: `
    <div class="app">
      <docuseal-form
        [src]="'https://docuseal.com/d/LEVGR9rhZYf86M'"
        [email]="'signer@example.com'">
      </docuseal-form>
    </div>
  `
})
export class AppComponent {}
```

  
## HTML to PDF Form

Create unique document templates with fillable fields using HTML. Use special HTML tags to add fillable fields on the document pages.

[Learn More](https://www.docuseal.com/blog/creating-fillable-pdf-document-forms-with-html.md)

 
```
<text-field
  name="Address">
</text-field>
```

 
```
<date-field
  style="width: 100px">
</date-field>
```

 
```
<checkbox-field
  role="Client">
</checkbox-field>
```

 
```
<signature-field
  format="drawn">
</signature-field>
```

## API and Embedding Pricing

Start for free and pay only for what you use. No contracts required.

### Sandbox

 Basic Plan 

$0/ document

Free unlimited API and Embedding for testing

[Get Started](https://docuseal.com/sign_up?redir=https%3A%2F%2Fconsole.docuseal.com%2Fapi)

### Production

 Pro Plan 

$0.20/ document  

Per document signed via API or Embedding, upgrade to Pro plan to start.

[Sign up for Pro plan](https://docuseal.com/sign_up?redir=https%3A%2F%2Fconsole.docuseal.com%2Fplans)

## Frequently Asked Questions

### Is the Pro plan priced per recipient that signs the document?

 No. By user we mean only a Web UI seat for a user who needs access to DocuSeal's app with an email and password to send and manage documents or to access the API key. 

### How does DocuSeal API and Embedding pricing work?

DocuSeal provides API and Embedding features as a part of the Pro Plan. In order to get the license keys for API and Embedding you need to purchase at least one Pro seat which is $20/month.

Below are some examples on how API pricing works. The pricing is based on the number of documents signed.

**Example 1:**

You are a SaaS business looking to implement document signing capabilities for your app as a part of the onboarding process. You expect 200 documents signed by your clients per month.

Your monthly pricing would look like this:

Pro $20/user/month: $20  
200 API documents signed/month: 200 documents \* $0.2 = $40

**Total monthly cost = $20 + $40 = $60/month**
 **Example 2:**

You're developing document signing for 5 of your clients. For each client you want to provide a separate tenant admin account with their own password and full access to the DocuSeal app with API keys and Webhook URL settings. You expect to sign 1000 documents per month from 5 clients in total.

Your monthly pricing would look like this:

Pro 1 Super Admin - $20/month  
Pro 5 Tenant Admin - $20 \* 5 = $100/month  
1000 API documents signed/month = $0.2 \* 1000 = $200/month

**Total monthly cost = $20 + $100 + $200 = $320/month**

### Is the API pricing based on the number of signed documents?

 Yes. API and embedding pricing are based on the number of documents signed. A single document submission might include multiple files signed by multiple parties - this counts as a single $0.20 document completion. 

### How does support for API and Embedding work?

 We can help you with DocuSeal integration and embedding. We are very responsive, so you will usually hear from us within a few hours via [support@docuseal.com](mailto:support@docuseal.com) or [Discord](https://discord.gg/qygYCDGck9). 

### Are API and Embedding available on-premises?

 Yes, all DocuSeal API and Embedding integration features are available in both Pro On-Premises and Pro Cloud. The same API and Embedding fees per document apply to Pro On-Premises as well as Pro Cloud. 

### Do you offer volume discounts?

 Yes, we offer tiered volume discounts based on the number of API or Embedding documents, as well as the number of user seats. Email [sales@docuseal.com](mailto:sales@docuseal.com) for a custom quote, or [schedule a call](https://www.docuseal.com/contact.md) with sales. 

## Get Started with eSignature API Today
[Get started for Free](https://docuseal.com/sign_up?redir=https%3A%2F%2Fconsole.docuseal.com%2Fapi)

No CC required