SignlyPDF for software companies

Signing belongs in your product.

Create signature requests through the API, let customers sign inside your app, and receive the result automatically. SignlyPDF handles the document flow around your product.

API access for approved ISV integrations; details are agreed before activation.

What you can build

A complete flow from document to done.

Use the pieces your product needs. Every part connects to the same document and signing request.

01

Create from your data

Create templates from PDF or HTML, prefill fields with submitters[].values, and send signature requests with the REST API.

02

Keep signing in your app

Use the returned embed URL to show the signing form inside your interface.

03

React to real events

Webhooks tell your system when a signer views, completes, or declines a document.

04

Keep the signed record

Get links to the signed PDF and audit log in the completion webhook.

For your developers

From request to result, without the extra steps.

Start with a template. One request creates the signing flow and returns the URL to embed in your app.

POST /api/submissions
# Copy the whole block into Bash to try the public sandbox
(
  set -e
  SIGNLY_API_KEY=signly_sandbox_9f3c2a7b1e4d6f58a0c3b7e2d5f91a4c
  template_response=$(curl -fsS -X POST https://signlypdf.com/api/templates/html \
    -H "X-Auth-Token: $SIGNLY_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{"name":"ISV demo","html":"<p>Business name: {{Business name;role=Merchant}}</p><p>Signature: {{Signature;role=Merchant;type=signature}}</p>"}')
  [[ $template_response =~ \"id\"[[:space:]]*:[[:space:]]*([0-9]+) ]]
  template_id=${BASH_REMATCH[1]}
  printf -v request_body '{"template_id":%s,"send_email":false,"submitters":[{"role":"Merchant","email":"customer@example.com","values":{"Business name":"Harbor Bistro LLC"}}]}' "$template_id"
  curl -fsS -X POST https://signlypdf.com/api/submissions \
    -H "X-Auth-Token: $SIGNLY_API_KEY" \
    -H "Content-Type: application/json" \
    -d "$request_body"
)

This creates a temporary template and submission without sending email. The Merchant role in the request must match the role in the template exactly, or the API returns 422. Use your approved key and your own template ID for production.

Returned to your appEmbedded signing URL

Use embed_src to show the form where your customer already works.

Sent when completeWebhook event

The form.completed payload already contains documents and audit_log_url links to the signed PDF and audit log.

API response

One result per signer.

The response is an array. Take embed_src from the signer you want to show in your app.

[
  {
    "id": 20471,
    "submission_id": 8861,
    "slug": "pX4ytYbVfQe2Lm",
    "email": "customer@example.com",
    "role": "Merchant",
    "status": "awaiting",
    "embed_src": "https://signlypdf.com/apiemb/pX4ytYbVfQe2Lm"
  }
]
Read the full API quickstart

Integration details

From an API response to a signing flow.

Embed signing in your app

Pass the signer's embed_src from the response to the embed component. It emits completed and declined events for your interface.

<script src="https://signlypdf.com/js/embed.js"></script>
<signlypdf-embed
  src="https://signlypdf.com/apiemb/pX4ytYbVfQe2Lm"
  width="100%"
  height="auto">
</signlypdf-embed>

React to signed webhooks

Subscribe to signer events form.viewed, form.started, form.completed, and form.declined.

Document events include submission.created, submission.completed, submission.expired, submission.archived, template.created, and template.updated.

With a webhook secret configured, deliveries carry X-Signly-Signature (HMAC SHA-256) and X-Signly-Timestamp. See the verification example.

Templates and prefilled fields

Create a PDF template with POST /api/templates or an HTML template with POST /api/templates/html. HTML field tags such as {{Field;role=Merchant}} set up signer fields.

Prefill them with submitters[].values. For a one-time document, use POST /api/submissions/docx, /html, or /pdf without creating a template first.

Get your key and try the sandbox

After approval, find your API key under Account settings → API. Send it in the X-Auth-Token header from your server.

For testing before approval, use the public signly_sandbox_... key on the developer page. This command uses it directly:

curl https://signlypdf.com/api/templates \
  -H "X-Auth-Token: signly_sandbox_9f3c2a7b1e4d6f58a0c3b7e2d5f91a4c"

The default limit is 600 requests per key every 5 minutes. The shared sandbox key has a separate 100-request limit. Read the rate limit details.