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
| Header | Required | Description |
|---|---|---|
| Authorization | required | Bearer <BEARER_TOKEN> |
| Content-Type | required | application/json |
Parameters
This endpoint takes no query or path parameters.
Request body
| Field | Required | Type | Description |
|---|---|---|---|
| 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
| Code | Error code | Description |
|---|---|---|
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. |