Undersign
v1.1
Create Free Account
API Reference API reference · Public Links
POST /public-links

Create Public Signing Link

Create self-service signing links and QR codes for embedding or open distribution.

Authentication

This endpoint requires a bearer token. See Authentication and API Keys.

Headers

HeaderRequiredDescription
Authorization required Bearer <BEARER_TOKEN>
Content-Type required application/json

Parameters

This endpoint takes no query or path parameters.

Request body

FieldRequiredTypeDescription
link_name required string Administrative name for the link.
templates required array Array of template UUIDs to bundle.
expiry_type required string never, date or 30_days.
expiry_date optional string Required when expiry_type is date. Format: YYYY-MM-DD.
submission_limit optional integer Maximum total completions allowed (0 = unlimited).
pre_form optional object {"enabled": true, "type": "email"}. Type can be email or phone.
completion optional object {"type": "redirect", "url": "https://..."}.
notifications optional object {"notify_admin": true, "admin_email": "admin@..."}.
security optional object {"capture_ip": true, "capture_device": true}.
prefills optional array [{"template_id": "...", "field_id": "...", "value": "...", "label": "..."}].

Request example

curl -X POST "https://toolkit.undersign.app/api/v1.1/public-links" \
  -H "Authorization: Bearer <BEARER_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
    "link_name": "Vendor Intake Form",
    "templates": ["<template-uuid>"],
    "expiry_type": "30_days",
    "submission_limit": 50,
    "pre_form": { "enabled": true, "type": "email" },
    "completion": { "type": "redirect", "url": "https://company.com/thanks" },
    "security": { "capture_ip": true, "capture_device": true }
  }'

Response

A successful creation returns 201 Created with the link GUID, the shareable URLs and a QR code URL.

201 Created
{
  "success": true,
  "request_id": "...",
  "timestamp": "...",
  "data": {
    "link_guid": "a4d3f5e2-6374-4b57-9d7a-1123456789ab",
    "main_url": "https://toolkit.undersign.app/sign/public/a4d3f5e2-6374-4b57-9d7a-1123456789ab",
    "short_url": "https://toolkit.undersign.app/sign/p/x8K2mQ9z",
    "qr_code_url": "https://quickchart.io/qr?text=..."
  }
}

Response status & error codes

CodeError codeDescription
201 - Public link generated.
400 CREATE_LINK_FAILED Database insert error.
404 TEMPLATE_NOT_FOUND One or more template UUIDs do not exist.
422 VALIDATION_FAILED Missing or invalid payload attributes. The details object names the offending fields.
429 RATE_LIMIT_EXCEEDED Too many requests (limit: 100/min). See Rate Limits.