Base URL https://sign.prodevgroup.com/api/v1
Authentication Every request (except these docs and the agent registration endpoints) needs Authorization: Bearer psk_live_.... Keys are created by an admin in the web app and shown once, or granted to an AI agent by the person it works for. Each key has scopes: documents:read, documents:write, documents:send, templates:read, templates:write, webhooks:manage, admin.
AI agents without a key Register for a person in seconds: POST /api/v1/agent-access/requests with their email, your name and the permissions you need. They approve on a one-page form (Permission | Asked | Approve | Deny), sign the authorization in their browser, and you receive the key through a one-time link. Guide: /for-agents or GET /api/v1/agent-access.
Errors are always {"error":{"code":"...","message":"..."}}. Common codes: invalid_request (400), unauthorized (401), insufficient_scope (403), not_found (404), not_draft / invalid_state / not_available / idempotency_mismatch (409), rate_limited (429, see Retry-After).
Idempotency Send an Idempotency-Key header on create and send calls. Repeating the same key with the same body returns the first response.
Coordinates Fields use PDF points with a top-left origin (x grows right, y grows down), 1-based pages. Or skip coordinates entirely with anchor tags in the PDF text: {{signature:1}}, {{initials:1}}, {{date:1}}, {{name:1}}, {{email:1}}, {{text:1:Policy number}}, {{checkbox:1}}. The number is the recipient order. Tags are covered so they do not show in the signed file.
Webhooks POST {id, event, createdAt, data} with x-prosign-signature: sha256=HMAC-SHA256(secret, timestamp + "." + rawBody) and x-prosign-timestamp. Events: document.sent, recipient.viewed, recipient.consented, recipient.signed, recipient.declined, document.completed, document.voided, document.expired.
MCP AI agents can use the same API through the MCP server at https://sign.prodevgroup.com/mcp with the same bearer key.
Account
Who this key belongs to and what it may do.
Example
curl -X GET "https://sign.prodevgroup.com/api/v1/me" \ -H "Authorization: Bearer $PROSIGN_API_KEY"
Response schema (200)
{
"type": "object",
"properties": {
"user": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"email": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"email",
"name"
],
"additionalProperties": false
},
"organization": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
},
"kind": {
"type": "string"
},
"code": {
"type": [
"string",
"null"
]
},
"packetAcknowledgment": {
"type": "string",
"enum": [
"always",
"attachments",
"never"
]
},
"signedNotices": {
"type": "string",
"enum": [
"all",
"standalone",
"none"
]
}
},
"required": [
"id",
"name",
"slug",
"kind",
"code",
"packetAcknowledgment",
"signedNotices"
],
"additionalProperties": false,
"description": "The workspace this token is bound to, with its settings"
},
"workspaces": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"kind": {
"type": "string"
},
"code": {
"type": [
"string",
"null"
]
},
"status": {
"type": "string"
},
"role": {
"type": "string"
},
"membershipStatus": {
"type": "string"
}
},
"required": [
"id",
"name",
"kind",
"code",
"status",
"role",
"membershipStatus"
],
"additionalProperties": false
},
"description": "Every workspace the key owner belongs to; pass companyId=<code> to work in a company"
},
"role": {
"type": "string",
"enum": [
"OWNER",
"ADMIN",
"MEMBER"
]
},
"key": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"prefix": {
"type": "string"
},
"scopes": {
"type": "array",
"items": {
"type": "string",
"enum": [
"documents:read",
"documents:write",
"documents:send",
"templates:read",
"templates:write",
"webhooks:manage",
"admin"
]
}
},
"expiresAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"name",
"prefix",
"scopes",
"expiresAt"
],
"additionalProperties": false
}
},
"required": [
"user",
"organization",
"workspaces",
"role",
"key"
],
"additionalProperties": false,
"description": "Who the key belongs to"
}Workspace settings (packet acknowledgment rule, "Signed by" notices).
Example
curl -X GET "https://sign.prodevgroup.com/api/v1/settings" \ -H "Authorization: Bearer $PROSIGN_API_KEY"
Response schema (200)
{
"type": "object",
"properties": {
"packetAcknowledgment": {
"type": "string",
"enum": [
"always",
"attachments",
"never"
],
"description": "When packets end with a sealed packet acknowledgment: always; attachments (default: only packets that carry an attachment); never. A packet's own \"acknowledgment\" flag overrides the rule either way."
},
"signedNotices": {
"type": "string",
"enum": [
"all",
"standalone",
"none"
],
"description": "When the sender gets a \"Signed by X\" email per signature: standalone (default: documents outside packets only); all (packet documents too); none. A packet always ends with one \"Packet completed\" email per person."
}
},
"required": [
"packetAcknowledgment",
"signedNotices"
],
"additionalProperties": false,
"description": "Workspace settings"
}Change workspace settings (owners and admins). packetAcknowledgment sets the rule for the sealed packet acknowledgment that ends a packet: "always" for every packet, "attachments" (default) only for packets that carry an attachment, "never" unless a packet asks for one. A packet's own "acknowledgment": true or false overrides the rule regardless of its value. signedNotices says when the sender gets a "Signed by X" email per signature: "standalone" (default) for documents outside packets only, "all" for packet documents too, "none" never. Inside a packet the sender always gets "X finished their part" and one "Packet completed" email.
Example
curl -X PATCH "https://sign.prodevgroup.com/api/v1/settings" \
-H "Authorization: Bearer $PROSIGN_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Request body schema
{
"type": "object",
"properties": {
"packetAcknowledgment": {
"type": "string",
"enum": [
"always",
"attachments",
"never"
]
},
"signedNotices": {
"type": "string",
"enum": [
"all",
"standalone",
"none"
],
"description": "When the sender gets a \"Signed by X\" email per signature: standalone (default: documents outside packets only); all (packet documents too); none. A packet always ends with one \"Packet completed\" email per person."
}
},
"description": "Change workspace settings (owners and admins)"
}Response schema (200)
{
"type": "object",
"properties": {
"packetAcknowledgment": {
"type": "string",
"enum": [
"always",
"attachments",
"never"
],
"description": "When packets end with a sealed packet acknowledgment: always; attachments (default: only packets that carry an attachment); never. A packet's own \"acknowledgment\" flag overrides the rule either way."
},
"signedNotices": {
"type": "string",
"enum": [
"all",
"standalone",
"none"
],
"description": "When the sender gets a \"Signed by X\" email per signature: standalone (default: documents outside packets only); all (packet documents too); none. A packet always ends with one \"Packet completed\" email per person."
}
},
"required": [
"packetAcknowledgment",
"signedNotices"
],
"additionalProperties": false,
"description": "Workspace settings"
}Webhooks
Create a webhook. Deliveries are JSON POSTs {id, event, createdAt, data} with headers x-prosign-signature (sha256=HMAC-SHA256(secret, "<timestamp>.<raw body>")), x-prosign-timestamp, x-prosign-event and x-prosign-delivery. Failed deliveries are retried with backoff. The secret is only returned here.
Example
curl -X POST "https://sign.prodevgroup.com/api/v1/webhooks" \
-H "Authorization: Bearer $PROSIGN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/hook","events":["document.sent"]}'
Request body schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"maxLength": 2000,
"format": "uri"
},
"events": {
"description": "Omit or send an empty list for all events",
"type": "array",
"items": {
"type": "string",
"enum": [
"document.sent",
"recipient.viewed",
"recipient.consented",
"recipient.signed",
"recipient.declined",
"document.completed",
"document.voided",
"document.expired"
]
}
}
},
"required": [
"url"
],
"description": "Create webhook"
}Response schema (201)
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"url": {
"type": "string"
},
"events": {
"type": "array",
"items": {
"type": "string"
}
},
"active": {
"type": "boolean"
},
"createdAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"secret": {
"description": "Only returned when the webhook is created. Used to verify x-prosign-signature.",
"type": "string"
}
},
"required": [
"id",
"url",
"events",
"active",
"createdAt"
],
"additionalProperties": false,
"description": "Webhook"
}List webhooks.
Example
curl -X GET "https://sign.prodevgroup.com/api/v1/webhooks" \ -H "Authorization: Bearer $PROSIGN_API_KEY"
Response schema (200)
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"url": {
"type": "string"
},
"events": {
"type": "array",
"items": {
"type": "string"
}
},
"active": {
"type": "boolean"
},
"createdAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"secret": {
"description": "Only returned when the webhook is created. Used to verify x-prosign-signature.",
"type": "string"
}
},
"required": [
"id",
"url",
"events",
"active",
"createdAt"
],
"additionalProperties": false,
"description": "Webhook"
}
}
},
"required": [
"items"
],
"additionalProperties": false
}Delete a webhook.
Path parameters
id | string |
Example
curl -X DELETE "https://sign.prodevgroup.com/api/v1/webhooks/<id>" \ -H "Authorization: Bearer $PROSIGN_API_KEY"
Response: Deleted
Delivery log for a webhook.
Path parameters
id | string |
Query parameters
| name | type | description |
|---|---|---|
limit | integer |
Example
curl -X GET "https://sign.prodevgroup.com/api/v1/webhooks/<id>/deliveries" \ -H "Authorization: Bearer $PROSIGN_API_KEY"
Response schema (200)
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"webhookId": {
"type": "string"
},
"documentId": {
"type": [
"string",
"null"
]
},
"event": {
"type": "string"
},
"attempts": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"nextAttemptAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"deliveredAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"lastStatus": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"lastError": {
"type": [
"string",
"null"
]
},
"createdAt": {
"type": "string",
"description": "ISO 8601 date-time"
}
},
"required": [
"id",
"webhookId",
"documentId",
"event",
"attempts",
"nextAttemptAt",
"deliveredAt",
"lastStatus",
"lastError",
"createdAt"
],
"additionalProperties": false
}
}
},
"required": [
"items"
],
"additionalProperties": false
}Agent access
Guide for AI agents: how to register for a person in seconds (no key needed). Plain JSON explaining the whole process: ask by email, the person approves on a one-page form and signs, you receive the key through a one-time link. Also at /for-agents (Markdown) and /llms.txt.
Example
curl -X GET "https://sign.prodevgroup.com/api/v1/agent-access"
Response: The guide
Ask a person for permission to act on their behalf (no API key needed); the token is returned right away. For agents with or without a key. You get apiKey and tokenId in this response immediately. The token does nothing (every call answers 403 token_pending_approval) until the person, who gets an email with a one-page approval, ticks the permissions and signs. Then it goes live with exactly the approved permissions; poll pollUrl or just retry. Works even if the person never logs in. Rate limited per IP and per email.
Example
curl -X POST "https://sign.prodevgroup.com/api/v1/agent-access/requests" \
-H "Content-Type: application/json" \
-d '{"email":"lori@example.com","name":"string"}'
Request body schema
{
"type": "object",
"properties": {
"action": {
"anyOf": [
{
"type": "string",
"enum": [
"new_account",
"new_token",
"rotate_token",
"update_permissions",
"remove_tokens",
"create_company",
"join_company",
"transfer_company"
]
},
{
"type": "null"
}
],
"description": "What you ask for. Default: new_account when the email has no account yet, otherwise new_token. rotate_token/update_permissions need tokenId; remove_tokens takes tokenIds (omit to let the person pick). create_company needs companyName (you get the company code at once; it activates when the owner signs). join_company needs companyId (a company admin also approves). transfer_company needs companyId and newOwnerEmail. Each sends the person a one-page form."
},
"tokenId": {
"description": "For rotate_token / update_permissions: the token ID (never the token itself)",
"type": [
"string",
"null"
]
},
"tokenIds": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"description": "For remove_tokens: token IDs to remove"
},
"companyName": {
"anyOf": [
{
"type": "string",
"maxLength": 120
},
{
"type": "null"
}
],
"description": "For create_company"
},
"companyDetails": {
"anyOf": [
{
"type": "object",
"properties": {
"address": {
"anyOf": [
{
"type": "string",
"maxLength": 300
},
{
"type": "null"
}
]
},
"phone": {
"anyOf": [
{
"type": "string",
"maxLength": 40
},
{
"type": "null"
}
]
},
"website": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
]
},
"notes": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
]
}
}
},
{
"type": "null"
}
]
},
"companyId": {
"description": "Company code (co_...) or id: for join_company, transfer_company, or to bind a new/rotated token to a company the person already belongs to",
"type": [
"string",
"null"
]
},
"newOwnerEmail": {
"anyOf": [
{
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
{
"type": "null"
}
],
"description": "For transfer_company: an active member who becomes the owner"
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "The person who will own the key and approve by email"
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "The person's name (required; used in the greeting and for their account)"
},
"organizationName": {
"anyOf": [
{
"type": "string",
"maxLength": 120
},
{
"type": "null"
}
],
"description": "Used when the person has no account yet"
},
"agentName": {
"anyOf": [
{
"type": "string",
"minLength": 2,
"maxLength": 80
},
{
"type": "null"
}
],
"description": "How the assistant introduces itself (optional; default \"<Name>'s AI assistant\"); the person sees this, e.g. \"Lori (Pro Building assistant)\""
},
"purpose": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
]
},
"requestedScopes": {
"anyOf": [
{
"minItems": 1,
"type": "array",
"items": {
"type": "string",
"enum": [
"documents:read",
"documents:write",
"documents:send",
"templates:read",
"templates:write",
"webhooks:manage",
"admin"
]
},
"description": "Permissions the agent asks for"
},
{
"type": "null"
}
],
"description": "Required for new_account, new_token and update_permissions"
},
"note": {
"anyOf": [
{
"type": "string",
"maxLength": 2000
},
{
"type": "null"
}
],
"description": "Personal wording from the agent, shown in the email and on the approval page"
},
"temporary": {
"description": "Ask for a temporary token (new_account / new_token). Use when you cannot store a secret safely (chat transcript, no credential store). Default lifetime 24 hours; set validForHours to choose.",
"type": [
"boolean",
"null"
]
},
"validForHours": {
"anyOf": [
{
"type": "integer",
"minimum": 1,
"maximum": 168
},
{
"type": "null"
}
],
"description": "Temporary token lifetime in whole hours after the person approves, 1 to 168 (one week). Implies temporary. After the first signed authorization, later temporary tokens are a one-tap approval; ask again as often as you need."
}
},
"required": [
"email",
"name"
]
}Response schema (201)
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"action": {
"type": "string",
"enum": [
"new_account",
"new_token",
"rotate_token",
"update_permissions",
"remove_tokens",
"create_company",
"join_company",
"transfer_company"
]
},
"company": {
"description": "For company actions: the company (create_company returns it immediately, PENDING until signed)",
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"code": {
"type": "string"
},
"name": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"PENDING",
"ACTIVE"
]
}
},
"required": [
"id",
"code",
"name",
"status"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"membershipStatus": {
"anyOf": [
{
"type": "string",
"enum": [
"PENDING",
"ACTIVE"
]
},
{
"type": "null"
}
]
},
"status": {
"type": "string",
"enum": [
"PENDING",
"SIGNING",
"APPROVED",
"DECLINED",
"EXPIRED"
]
},
"email": {
"type": "string"
},
"agentName": {
"type": "string"
},
"tokenId": {
"type": [
"string",
"null"
]
},
"tokenIds": {
"type": "array",
"items": {
"type": "string"
}
},
"requestedScopes": {
"type": "array",
"items": {
"type": "string"
}
},
"grantedScopes": {
"type": "array",
"items": {
"type": "string"
}
},
"createdAt": {
"type": "string"
},
"expiresAt": {
"type": "string"
},
"approvedAt": {
"type": [
"string",
"null"
]
},
"documentId": {
"type": [
"string",
"null"
]
},
"temporary": {
"type": "boolean",
"description": "Temporary token: stops on its own validForHours after approval"
},
"validForHours": {
"type": [
"number",
"null"
]
},
"tokenExpiresAt": {
"description": "Once active: when a temporary token stops",
"type": [
"string",
"null"
]
},
"apiKey": {
"description": "The token, shown once at creation. Inert (403 token_pending_approval) until the person approves.",
"type": "string"
},
"tokenStatus": {
"type": "string",
"enum": [
"PENDING",
"ACTIVE",
"REVOKED"
]
},
"pollSecret": {
"type": "string"
},
"pollUrl": {
"type": "string"
}
},
"required": [
"id",
"action",
"status",
"email",
"agentName",
"tokenId",
"tokenIds",
"requestedScopes",
"grantedScopes",
"createdAt",
"expiresAt",
"approvedAt",
"documentId",
"temporary",
"validForHours",
"tokenExpiresAt"
],
"additionalProperties": false
}Status of an access request (with its poll secret). Use the pollUrl from the creation response. When status is APPROVED the person has signed; the key arrives through the pickup link they paste to you.
Path parameters
id | string |
Query parameters
| name | type | description |
|---|---|---|
secret | string |
Example
curl -X GET "https://sign.prodevgroup.com/api/v1/agent-access/requests/<id>"
Response schema (200)
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"action": {
"type": "string",
"enum": [
"new_account",
"new_token",
"rotate_token",
"update_permissions",
"remove_tokens",
"create_company",
"join_company",
"transfer_company"
]
},
"company": {
"description": "For company actions: the company (create_company returns it immediately, PENDING until signed)",
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"code": {
"type": "string"
},
"name": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"PENDING",
"ACTIVE"
]
}
},
"required": [
"id",
"code",
"name",
"status"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"membershipStatus": {
"anyOf": [
{
"type": "string",
"enum": [
"PENDING",
"ACTIVE"
]
},
{
"type": "null"
}
]
},
"status": {
"type": "string",
"enum": [
"PENDING",
"SIGNING",
"APPROVED",
"DECLINED",
"EXPIRED"
]
},
"email": {
"type": "string"
},
"agentName": {
"type": "string"
},
"tokenId": {
"type": [
"string",
"null"
]
},
"tokenIds": {
"type": "array",
"items": {
"type": "string"
}
},
"requestedScopes": {
"type": "array",
"items": {
"type": "string"
}
},
"grantedScopes": {
"type": "array",
"items": {
"type": "string"
}
},
"createdAt": {
"type": "string"
},
"expiresAt": {
"type": "string"
},
"approvedAt": {
"type": [
"string",
"null"
]
},
"documentId": {
"type": [
"string",
"null"
]
},
"temporary": {
"type": "boolean",
"description": "Temporary token: stops on its own validForHours after approval"
},
"validForHours": {
"type": [
"number",
"null"
]
},
"tokenExpiresAt": {
"description": "Once active: when a temporary token stops",
"type": [
"string",
"null"
]
},
"apiKey": {
"description": "The token, shown once at creation. Inert (403 token_pending_approval) until the person approves.",
"type": "string"
},
"tokenStatus": {
"type": "string",
"enum": [
"PENDING",
"ACTIVE",
"REVOKED"
]
},
"pollSecret": {
"type": "string"
},
"pollUrl": {
"type": "string"
}
},
"required": [
"id",
"action",
"status",
"email",
"agentName",
"tokenId",
"tokenIds",
"requestedScopes",
"grantedScopes",
"createdAt",
"expiresAt",
"approvedAt",
"documentId",
"temporary",
"validForHours",
"tokenExpiresAt"
],
"additionalProperties": false
}Ask the key owner to change this key's permissions. Emails the person who owns the calling key a one-page approval with the new permissions. They re-sign the authorization; on completion the key's permissions change in place. Any scope is accepted here; the person decides.
Example
curl -X POST "https://sign.prodevgroup.com/api/v1/agent-access/changes" \
-H "Authorization: Bearer $PROSIGN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"requestedScopes":["documents:read"]}'
Request body schema
{
"type": "object",
"properties": {
"requestedScopes": {
"minItems": 1,
"type": "array",
"items": {
"type": "string",
"enum": [
"documents:read",
"documents:write",
"documents:send",
"templates:read",
"templates:write",
"webhooks:manage",
"admin"
]
},
"description": "Permissions the agent asks for"
},
"purpose": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
]
},
"note": {
"anyOf": [
{
"type": "string",
"maxLength": 2000
},
{
"type": "null"
}
]
},
"agentName": {
"anyOf": [
{
"type": "string",
"minLength": 2,
"maxLength": 80
},
{
"type": "null"
}
]
}
},
"required": [
"requestedScopes"
]
}Response schema (201)
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"action": {
"type": "string",
"enum": [
"new_account",
"new_token",
"rotate_token",
"update_permissions",
"remove_tokens",
"create_company",
"join_company",
"transfer_company"
]
},
"company": {
"description": "For company actions: the company (create_company returns it immediately, PENDING until signed)",
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"code": {
"type": "string"
},
"name": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"PENDING",
"ACTIVE"
]
}
},
"required": [
"id",
"code",
"name",
"status"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"membershipStatus": {
"anyOf": [
{
"type": "string",
"enum": [
"PENDING",
"ACTIVE"
]
},
{
"type": "null"
}
]
},
"status": {
"type": "string",
"enum": [
"PENDING",
"SIGNING",
"APPROVED",
"DECLINED",
"EXPIRED"
]
},
"email": {
"type": "string"
},
"agentName": {
"type": "string"
},
"tokenId": {
"type": [
"string",
"null"
]
},
"tokenIds": {
"type": "array",
"items": {
"type": "string"
}
},
"requestedScopes": {
"type": "array",
"items": {
"type": "string"
}
},
"grantedScopes": {
"type": "array",
"items": {
"type": "string"
}
},
"createdAt": {
"type": "string"
},
"expiresAt": {
"type": "string"
},
"approvedAt": {
"type": [
"string",
"null"
]
},
"documentId": {
"type": [
"string",
"null"
]
},
"temporary": {
"type": "boolean",
"description": "Temporary token: stops on its own validForHours after approval"
},
"validForHours": {
"type": [
"number",
"null"
]
},
"tokenExpiresAt": {
"description": "Once active: when a temporary token stops",
"type": [
"string",
"null"
]
},
"apiKey": {
"description": "The token, shown once at creation. Inert (403 token_pending_approval) until the person approves.",
"type": "string"
},
"tokenStatus": {
"type": "string",
"enum": [
"PENDING",
"ACTIVE",
"REVOKED"
]
},
"pollSecret": {
"type": "string"
},
"pollUrl": {
"type": "string"
}
},
"required": [
"id",
"action",
"status",
"email",
"agentName",
"tokenId",
"tokenIds",
"requestedScopes",
"grantedScopes",
"createdAt",
"expiresAt",
"approvedAt",
"documentId",
"temporary",
"validForHours",
"tokenExpiresAt"
],
"additionalProperties": false
}Documents
Create a document (optionally send it right away). Upload a PDF and define recipients and fields. Send as multipart/form-data with a "file" part and a "payload" part holding this JSON, or as application/json with the PDF in fileBase64. With useAnchors the PDF is scanned for tags such as {{signature:1}}, {{initials:2}}, {{date:1}}, {{name:1}}, {{email:1}}, {{text:1:Policy number}} and {{checkbox:1}}; the number is the recipient order. Supports Idempotency-Key.
Example
curl -X POST "https://sign.prodevgroup.com/api/v1/documents" \
-H "Authorization: Bearer $PROSIGN_API_KEY" \
-F "file=@contract.pdf;type=application/pdf" \
-F 'payload={"title":"string","recipients":[{"name":"string","email":"lori@example.com"}],"useAnchors":true,"send":true}'
Request body schema (JSON body, or the "payload" part of multipart/form-data next to a "file" part)
{
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 300
},
"message": {
"description": "Message shown in the invite email and on the signing page",
"anyOf": [
{
"type": "string",
"maxLength": 5000
},
{
"type": "null"
}
]
},
"signingOrder": {
"description": "Default PARALLEL",
"type": "string",
"enum": [
"PARALLEL",
"SEQUENTIAL"
]
},
"expiresInDays": {
"description": "Document expiry; omit for none",
"anyOf": [
{
"type": "integer",
"minimum": 1,
"maximum": 365
},
{
"type": "null"
}
]
},
"tokenTtlDays": {
"description": "How long signing links stay valid. Default 30",
"anyOf": [
{
"type": "integer",
"minimum": 1,
"maximum": 365
},
{
"type": "null"
}
]
},
"reminderEveryDays": {
"description": "Send reminders to pending signers every N days",
"anyOf": [
{
"type": "integer",
"minimum": 1,
"maximum": 90
},
{
"type": "null"
}
]
},
"dateFormat": {
"description": "How DATE fields print. Tokens YYYY YY MMMM MMM MM M DD D, for example MM/DD/YYYY (default), YYYY-MM-DD, \"MMMM D, YYYY\"",
"anyOf": [
{
"type": "string",
"maxLength": 40
},
{
"type": "null"
}
]
},
"timeZone": {
"description": "IANA time zone the signing day is taken in for DATE fields. Default America/Chicago",
"anyOf": [
{
"type": "string",
"maxLength": 64
},
{
"type": "null"
}
]
},
"recipients": {
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"email": {
"type": "string",
"maxLength": 320,
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"role": {
"description": "Default SIGNER",
"type": "string",
"enum": [
"SIGNER",
"CC",
"VIEWER"
]
},
"order": {
"description": "Signing order. Default: position in the list (1-based). Anchor tags refer to this number.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"accessCode": {
"description": "Optional code the signer must enter before viewing",
"anyOf": [
{
"type": "string",
"minLength": 4,
"maxLength": 64
},
{
"type": "null"
}
]
},
"message": {
"description": "Personal note for this recipient, written by you or your agent; shown in their invite email instead of the document message",
"anyOf": [
{
"type": "string",
"maxLength": 4000
},
{
"type": "null"
}
]
},
"fields": {
"description": "Ignored when useAnchors is true",
"maxItems": 200,
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"SIGNATURE",
"INITIALS",
"NAME",
"EMAIL",
"DATE",
"TEXT",
"CHECKBOX"
]
},
"page": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991,
"description": "1-based page number"
},
"x": {
"type": "number",
"minimum": 0,
"description": "Left edge in PDF points, top-left origin"
},
"y": {
"type": "number",
"minimum": 0,
"description": "Top edge in PDF points, top-left origin"
},
"width": {
"type": "number",
"exclusiveMinimum": 0
},
"height": {
"type": "number",
"exclusiveMinimum": 0
},
"label": {
"description": "Label shown to the signer (TEXT and CHECKBOX fields)",
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
]
},
"required": {
"type": "boolean"
},
"align": {
"description": "Where the signature, initials or text sits inside the box. Default: center for SIGNATURE and INITIALS, left for text fields. Anchor tags take it as a last part: {{signature:1:right}}, {{text:1:Policy number:center}}.",
"anyOf": [
{
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
{
"type": "null"
}
]
}
},
"required": [
"type",
"page",
"x",
"y",
"width",
"height"
],
"description": "A field placed by coordinates"
},
{
"type": "object",
"properties": {
"spot": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991,
"description": "A spot number from GET /documents/{id}/signature-spots (or from detectSpots:true at creation). The field takes the spot's page, box and kind: a signature line becomes a SIGNATURE field, a date line a DATE field, and so on."
},
"type": {
"description": "Override the kind the spot implies",
"anyOf": [
{
"type": "string",
"enum": [
"SIGNATURE",
"INITIALS",
"NAME",
"EMAIL",
"DATE",
"TEXT",
"CHECKBOX"
]
},
{
"type": "null"
}
]
},
"label": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
]
},
"required": {
"type": "boolean"
},
"align": {
"anyOf": [
{
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
{
"type": "null"
}
]
}
},
"required": [
"spot"
],
"description": "A field placed on a detected signature spot (no coordinates needed)"
}
],
"description": "A field: by coordinates, or by signature spot number"
}
}
},
"required": [
"name",
"email"
],
"description": "Recipient"
}
},
"useAnchors": {
"description": "Find {{signature:1}} style tags in the PDF and place fields from them",
"type": "boolean"
},
"templateId": {
"type": [
"string",
"null"
]
},
"send": {
"description": "Send right away. Requires recipients and a SIGNATURE field for every signer.",
"type": "boolean"
},
"testMode": {
"description": "Test run: every email goes to your own address (the key owner) marked [TEST] with the real recipient named, you may list yourself for every role, and the sealed PDF and certificate carry a TEST mark on every page.",
"type": "boolean"
},
"detectSpots": {
"description": "Return signatureSpots (where the PDF expects signatures, initials and dates) with the created document so you can choose spots, then PATCH recipients with { \"spot\": n } fields and send. Never sends.",
"type": "boolean"
},
"signaturePage": {
"anyOf": [
{
"type": "object",
"properties": {
"enabled": {
"type": "boolean",
"description": "true: append the page. false on PATCH removes a page added earlier."
},
"title": {
"description": "Default \"Signatures\"",
"anyOf": [
{
"type": "string",
"maxLength": 120
},
{
"type": "null"
}
]
},
"statement": {
"type": "string",
"maxLength": 3000,
"description": "The wording the signers agree to, plain text; blank lines become paragraphs. Required."
},
"blocks": {
"minItems": 1,
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"recipient": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991,
"description": "The recipient's order number"
},
"label": {
"description": "Heading over the block, e.g. \"Homeowner\"",
"anyOf": [
{
"type": "string",
"maxLength": 80
},
{
"type": "null"
}
]
},
"printedName": {
"description": "Printed under the signature line; default: the recipient's name",
"anyOf": [
{
"type": "string",
"maxLength": 120
},
{
"type": "null"
}
]
},
"title": {
"description": "Printed under the name, e.g. \"Director of Operations\"",
"anyOf": [
{
"type": "string",
"maxLength": 120
},
{
"type": "null"
}
]
},
"fields": {
"description": "signature, initials, date, name, title, text:<label>, checkbox:<label>; default [\"signature\",\"date\"]",
"anyOf": [
{
"maxItems": 12,
"type": "array",
"items": {
"type": "string",
"maxLength": 70
}
},
{
"type": "null"
}
]
},
"align": {
"description": "Where the signature sits on its line: left, center (default) or right",
"anyOf": [
{
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
{
"type": "null"
}
]
}
},
"required": [
"recipient"
],
"description": "One signer's block on the generated page"
},
"description": "One block per signer, in this order on the page"
},
"layout": {
"description": "stacked (default) or two-column",
"anyOf": [
{
"type": "string",
"enum": [
"stacked",
"two-column"
]
},
{
"type": "null"
}
]
}
},
"required": [
"enabled",
"statement",
"blocks"
],
"description": "A signature page the server generates and appends to the PDF, so no coordinates or spots are needed: title, your statement, a reference line (document title, page count, first 16 characters of the upload's SHA-256), then one block per signer with a signature line, a date line, the printed name and an optional title, each captioned. Fields sit on the lines (26 pt signature box, 18 pt date box, align honored). A recipient with a block needs no other fields. The response carries signaturePageText (a plain-text rendering) and the new pageCount; the certificate shows the upload's SHA-256 and the assembled file's SHA-256. Example for an invoice: {\"enabled\":true,\"title\":\"Acknowledgment of Receipt\",\"statement\":\"By signing below, I acknowledge that I received and reviewed Final Invoice PB-2026-KEN-FINAL dated October 12, 2026.\",\"blocks\":[{\"recipient\":1,\"label\":\"Homeowner\",\"printedName\":\"Jason Kendrick\",\"fields\":[\"signature\",\"date\"],\"align\":\"left\"},{\"recipient\":2,\"label\":\"Homeowner\",\"printedName\":\"Christina Kendrick\",\"fields\":[\"signature\",\"date\"]}]}"
},
{
"type": "null"
}
]
},
"fileBase64": {
"description": "The PDF as base64 (JSON requests only). For multipart, send the file as the \"file\" part and this object as the \"payload\" part.",
"type": "string"
},
"attachments": {
"description": "PDFs for review alongside this document (an invoice, an exhibit). With attachments the request becomes a packet: one link, one consent, a progress bar, and by default a sealed packet acknowledgment as the last step. The response is this document; its packet.id names the packet.",
"maxItems": 19,
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 300
},
"fileBase64": {
"description": "The attachment PDF as base64 (JSON). With multipart, send it as a part named attachment1, attachment2, ... or name the part in \"file\".",
"type": "string"
},
"file": {
"description": "Multipart only: the name of the part that holds this attachment",
"type": "string",
"maxLength": 100
},
"acknowledge": {
"description": "none (default): reviewed only, the signer must open it before the last step. initial / sign: an acknowledgment sheet is appended for every signer to initial or sign.",
"type": "string",
"enum": [
"none",
"initial",
"sign"
]
},
"acknowledgeTitle": {
"description": "With acknowledge sign/initial: your own title for the receipt sheet (default \"Acknowledgment of Receipt\")",
"anyOf": [
{
"type": "string",
"maxLength": 120
},
{
"type": "null"
}
]
},
"acknowledgeStatement": {
"description": "With acknowledge sign/initial: your own statement for the receipt sheet. Placeholders: {{title}}, {{pages}}, {{sender}}, {{packet}}",
"anyOf": [
{
"type": "string",
"maxLength": 3000
},
{
"type": "null"
}
]
},
"message": {
"anyOf": [
{
"type": "string",
"maxLength": 5000
},
{
"type": "null"
}
]
}
},
"required": [
"title"
]
}
},
"acknowledgment": {
"description": "With attachments: force the packet acknowledgment on or off regardless of the workspace rule (GET /me shows the rule; PATCH /settings changes it), or pass an object with your own wording (turns it on).",
"anyOf": [
{
"type": "boolean"
},
{
"type": "object",
"properties": {
"title": {
"description": "Default \"Packet Acknowledgment\"",
"anyOf": [
{
"type": "string",
"maxLength": 120
},
{
"type": "null"
}
]
},
"intro": {
"description": "Paragraph above the document list. Placeholders: {{packet}}, {{sender}}, {{signer}}, {{count}}",
"anyOf": [
{
"type": "string",
"maxLength": 1500
},
{
"type": "null"
}
]
},
"statement": {
"description": "The statement the signer signs under the list. Same placeholders. Default: the service wording (version 2026.1)",
"anyOf": [
{
"type": "string",
"maxLength": 3000
},
{
"type": "null"
}
]
}
},
"description": "Your own wording for the packet acknowledgment. Passing this object turns the acknowledgment on. Any part left out keeps the service wording; the sheet notes which parts are the sender's."
}
]
}
},
"required": [
"title"
],
"description": "Create document"
}Response schema (201)
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"message": {
"type": [
"string",
"null"
]
},
"status": {
"type": "string",
"enum": [
"DRAFT",
"PENDING",
"COMPLETED",
"DECLINED",
"VOIDED",
"EXPIRED"
]
},
"kind": {
"type": "string",
"enum": [
"DOCUMENT",
"AGENT_AUTHORIZATION",
"ATTACHMENT",
"PACKET_ACKNOWLEDGMENT"
],
"description": "ATTACHMENT: a packet attachment (for review, or with an acknowledgment sheet). PACKET_ACKNOWLEDGMENT: the sealed last step of a packet, one per signer."
},
"signingOrder": {
"type": "string",
"enum": [
"PARALLEL",
"SEQUENTIAL"
]
},
"pageCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"owner": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"email": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"email",
"name"
],
"additionalProperties": false
},
"templateId": {
"type": [
"string",
"null"
]
},
"expiresAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"tokenTtlDays": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"reminderEveryDays": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"originalSha256": {
"description": "SHA-256 of the uploaded PDF",
"type": [
"string",
"null"
]
},
"assembledSha256": {
"description": "SHA-256 of the PDF with the generated signature page added; null when none",
"type": [
"string",
"null"
]
},
"signaturePageText": {
"description": "Plain-text rendering of the generated signature page(s), to check the result without vision",
"type": [
"string",
"null"
]
},
"finalSha256": {
"type": [
"string",
"null"
]
},
"hasFinal": {
"type": "boolean"
},
"hasCertificate": {
"type": "boolean"
},
"sentAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"completedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"declinedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"voidedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"voidReason": {
"type": [
"string",
"null"
]
},
"expiredAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"createdAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"updatedAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"recipients": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"email": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"SIGNER",
"CC",
"VIEWER"
]
},
"order": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"status": {
"type": "string",
"enum": [
"PENDING",
"VIEWED",
"CONSENTED",
"SIGNED",
"DECLINED"
]
},
"hasAccessCode": {
"type": "boolean"
},
"notifiedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"viewedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"consentedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"signedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"declinedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"declineReason": {
"type": [
"string",
"null"
]
},
"tokenExpiresAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"isTurn": {
"type": "boolean",
"description": "true when this recipient may act now"
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"recipientId": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"SIGNATURE",
"INITIALS",
"NAME",
"EMAIL",
"DATE",
"TEXT",
"CHECKBOX"
]
},
"label": {
"type": [
"string",
"null"
]
},
"page": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
},
"required": {
"type": "boolean"
},
"value": {
"type": [
"string",
"null"
]
},
"signedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"placedBy": {
"type": "string",
"enum": [
"COORD",
"ANCHOR"
]
},
"align": {
"anyOf": [
{
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"recipientId",
"type",
"label",
"page",
"x",
"y",
"width",
"height",
"required",
"value",
"signedAt",
"placedBy",
"align"
],
"additionalProperties": false
},
"description": "This recipient's fields (also listed at the document level)"
}
},
"required": [
"id",
"name",
"email",
"role",
"order",
"status",
"hasAccessCode",
"notifiedAt",
"viewedAt",
"consentedAt",
"signedAt",
"declinedAt",
"declineReason",
"tokenExpiresAt",
"isTurn",
"fields"
],
"additionalProperties": false
}
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"recipientId": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"SIGNATURE",
"INITIALS",
"NAME",
"EMAIL",
"DATE",
"TEXT",
"CHECKBOX"
]
},
"label": {
"type": [
"string",
"null"
]
},
"page": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
},
"required": {
"type": "boolean"
},
"value": {
"type": [
"string",
"null"
]
},
"signedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"placedBy": {
"type": "string",
"enum": [
"COORD",
"ANCHOR"
]
},
"align": {
"anyOf": [
{
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"recipientId",
"type",
"label",
"page",
"x",
"y",
"width",
"height",
"required",
"value",
"signedAt",
"placedBy",
"align"
],
"additionalProperties": false
}
},
"packet": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"position": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"count": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"orderLocked": {
"type": "boolean"
}
},
"required": [
"id",
"title",
"position",
"count",
"orderLocked"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Set when the document is one of several in a packet"
},
"testMode": {
"type": "boolean"
},
"dateFormat": {
"type": "string"
},
"timeZone": {
"type": "string"
},
"timestamp": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"none",
"done",
"pending"
]
},
"authority": {
"type": [
"string",
"null"
]
},
"at": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
}
},
"required": [
"status",
"authority",
"at"
],
"additionalProperties": false,
"description": "Trusted RFC 3161 timestamp on the seal: done, pending (the authorities were unreachable at sealing; retried by the worker), or none (not completed yet)"
},
"signatureSpots": {
"description": "Only on a create response with detectSpots: true",
"type": "array",
"items": {
"type": "object",
"properties": {
"spot": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "1-based number in reading order; use it as { \"spot\": n } in a recipient's fields"
},
"page": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"kind": {
"type": "string",
"enum": [
"signature",
"initials",
"date",
"name",
"title",
"text"
]
},
"description": {
"type": "string",
"description": "Plain English: what the line is and what is printed around it"
},
"label": {
"type": [
"string",
"null"
]
},
"textBelow": {
"type": [
"string",
"null"
]
},
"block": {
"type": [
"string",
"null"
]
},
"pairedDate": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "For a signature spot: the date spot on the same row"
},
"pairedSignature": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"line": {
"type": "object",
"properties": {
"x1": {
"type": "number"
},
"x2": {
"type": "number"
},
"y": {
"type": "number"
}
},
"required": [
"x1",
"x2",
"y"
],
"additionalProperties": false,
"description": "The drawn line, top-left origin in PDF points"
},
"box": {
"type": "object",
"properties": {
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
}
},
"required": [
"x",
"y",
"width",
"height"
],
"additionalProperties": false,
"description": "The field box directly above the line"
}
},
"required": [
"spot",
"page",
"kind",
"description",
"label",
"textBelow",
"block",
"pairedDate",
"pairedSignature",
"line",
"box"
],
"additionalProperties": false,
"description": "Signature spot"
}
}
},
"required": [
"id",
"title",
"message",
"status",
"kind",
"signingOrder",
"pageCount",
"owner",
"templateId",
"expiresAt",
"tokenTtlDays",
"reminderEveryDays",
"originalSha256",
"assembledSha256",
"signaturePageText",
"finalSha256",
"hasFinal",
"hasCertificate",
"sentAt",
"completedAt",
"declinedAt",
"voidedAt",
"voidReason",
"expiredAt",
"createdAt",
"updatedAt",
"recipients",
"fields",
"packet",
"testMode",
"dateFormat",
"timeZone",
"timestamp"
],
"additionalProperties": false,
"description": "Document"
}Where the PDF expects signatures, initials and dates (no vision needed). Scans the original PDF for signature spots: text labels near lines (SIGNATURE, SIGN HERE, BY:, DATE, INITIALS, PRINTED NAME, TITLE), drawn horizontal lines and runs of underscores, with the text printed under each line and the heading above it. Returns a numbered list with a plain-English description per spot and a ready field box above the line (26pt high for a signature, 18pt for a date). Use a number as { "spot": n } in a recipient's fields (PATCH /documents/{id} while DRAFT) instead of coordinates. Lines that already carry printed text are skipped.
Path parameters
id | string |
Example
curl -X GET "https://sign.prodevgroup.com/api/v1/documents/<id>/signature-spots" \ -H "Authorization: Bearer $PROSIGN_API_KEY"
Response schema (200)
{
"type": "object",
"properties": {
"pageCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"spots": {
"type": "array",
"items": {
"type": "object",
"properties": {
"spot": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "1-based number in reading order; use it as { \"spot\": n } in a recipient's fields"
},
"page": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"kind": {
"type": "string",
"enum": [
"signature",
"initials",
"date",
"name",
"title",
"text"
]
},
"description": {
"type": "string",
"description": "Plain English: what the line is and what is printed around it"
},
"label": {
"type": [
"string",
"null"
]
},
"textBelow": {
"type": [
"string",
"null"
]
},
"block": {
"type": [
"string",
"null"
]
},
"pairedDate": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "For a signature spot: the date spot on the same row"
},
"pairedSignature": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"line": {
"type": "object",
"properties": {
"x1": {
"type": "number"
},
"x2": {
"type": "number"
},
"y": {
"type": "number"
}
},
"required": [
"x1",
"x2",
"y"
],
"additionalProperties": false,
"description": "The drawn line, top-left origin in PDF points"
},
"box": {
"type": "object",
"properties": {
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
}
},
"required": [
"x",
"y",
"width",
"height"
],
"additionalProperties": false,
"description": "The field box directly above the line"
}
},
"required": [
"spot",
"page",
"kind",
"description",
"label",
"textBelow",
"block",
"pairedDate",
"pairedSignature",
"line",
"box"
],
"additionalProperties": false,
"description": "Signature spot"
}
}
},
"required": [
"pageCount",
"spots"
],
"additionalProperties": false
}List documents. Members see their own documents; admins see every document in the organization. Newest first, cursor paginated.
Query parameters
| name | type | description |
|---|---|---|
status | string | |
recipientEmail | string | |
createdAfter | string | ISO 8601 |
createdBefore | string | ISO 8601 |
search | string | Matches the title |
limit | integer | Default 50 |
cursor | string | nextCursor from the previous page |
Example
curl -X GET "https://sign.prodevgroup.com/api/v1/documents" \ -H "Authorization: Bearer $PROSIGN_API_KEY"
Response schema (200)
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"message": {
"type": [
"string",
"null"
]
},
"status": {
"type": "string",
"enum": [
"DRAFT",
"PENDING",
"COMPLETED",
"DECLINED",
"VOIDED",
"EXPIRED"
]
},
"kind": {
"type": "string",
"enum": [
"DOCUMENT",
"AGENT_AUTHORIZATION",
"ATTACHMENT",
"PACKET_ACKNOWLEDGMENT"
],
"description": "ATTACHMENT: a packet attachment (for review, or with an acknowledgment sheet). PACKET_ACKNOWLEDGMENT: the sealed last step of a packet, one per signer."
},
"signingOrder": {
"type": "string",
"enum": [
"PARALLEL",
"SEQUENTIAL"
]
},
"pageCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"owner": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"email": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"email",
"name"
],
"additionalProperties": false
},
"templateId": {
"type": [
"string",
"null"
]
},
"expiresAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"tokenTtlDays": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"reminderEveryDays": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"originalSha256": {
"description": "SHA-256 of the uploaded PDF",
"type": [
"string",
"null"
]
},
"assembledSha256": {
"description": "SHA-256 of the PDF with the generated signature page added; null when none",
"type": [
"string",
"null"
]
},
"signaturePageText": {
"description": "Plain-text rendering of the generated signature page(s), to check the result without vision",
"type": [
"string",
"null"
]
},
"finalSha256": {
"type": [
"string",
"null"
]
},
"hasFinal": {
"type": "boolean"
},
"hasCertificate": {
"type": "boolean"
},
"sentAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"completedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"declinedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"voidedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"voidReason": {
"type": [
"string",
"null"
]
},
"expiredAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"createdAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"updatedAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"recipients": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"email": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"SIGNER",
"CC",
"VIEWER"
]
},
"order": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"status": {
"type": "string",
"enum": [
"PENDING",
"VIEWED",
"CONSENTED",
"SIGNED",
"DECLINED"
]
},
"hasAccessCode": {
"type": "boolean"
},
"notifiedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"viewedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"consentedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"signedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"declinedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"declineReason": {
"type": [
"string",
"null"
]
},
"tokenExpiresAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"isTurn": {
"type": "boolean",
"description": "true when this recipient may act now"
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"recipientId": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"SIGNATURE",
"INITIALS",
"NAME",
"EMAIL",
"DATE",
"TEXT",
"CHECKBOX"
]
},
"label": {
"type": [
"string",
"null"
]
},
"page": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
},
"required": {
"type": "boolean"
},
"value": {
"type": [
"string",
"null"
]
},
"signedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"placedBy": {
"type": "string",
"enum": [
"COORD",
"ANCHOR"
]
},
"align": {
"anyOf": [
{
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"recipientId",
"type",
"label",
"page",
"x",
"y",
"width",
"height",
"required",
"value",
"signedAt",
"placedBy",
"align"
],
"additionalProperties": false
},
"description": "This recipient's fields (also listed at the document level)"
}
},
"required": [
"id",
"name",
"email",
"role",
"order",
"status",
"hasAccessCode",
"notifiedAt",
"viewedAt",
"consentedAt",
"signedAt",
"declinedAt",
"declineReason",
"tokenExpiresAt",
"isTurn",
"fields"
],
"additionalProperties": false
}
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"recipientId": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"SIGNATURE",
"INITIALS",
"NAME",
"EMAIL",
"DATE",
"TEXT",
"CHECKBOX"
]
},
"label": {
"type": [
"string",
"null"
]
},
"page": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
},
"required": {
"type": "boolean"
},
"value": {
"type": [
"string",
"null"
]
},
"signedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"placedBy": {
"type": "string",
"enum": [
"COORD",
"ANCHOR"
]
},
"align": {
"anyOf": [
{
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"recipientId",
"type",
"label",
"page",
"x",
"y",
"width",
"height",
"required",
"value",
"signedAt",
"placedBy",
"align"
],
"additionalProperties": false
}
},
"packet": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"position": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"count": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"orderLocked": {
"type": "boolean"
}
},
"required": [
"id",
"title",
"position",
"count",
"orderLocked"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Set when the document is one of several in a packet"
},
"testMode": {
"type": "boolean"
},
"dateFormat": {
"type": "string"
},
"timeZone": {
"type": "string"
},
"timestamp": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"none",
"done",
"pending"
]
},
"authority": {
"type": [
"string",
"null"
]
},
"at": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
}
},
"required": [
"status",
"authority",
"at"
],
"additionalProperties": false,
"description": "Trusted RFC 3161 timestamp on the seal: done, pending (the authorities were unreachable at sealing; retried by the worker), or none (not completed yet)"
},
"signatureSpots": {
"description": "Only on a create response with detectSpots: true",
"type": "array",
"items": {
"type": "object",
"properties": {
"spot": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "1-based number in reading order; use it as { \"spot\": n } in a recipient's fields"
},
"page": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"kind": {
"type": "string",
"enum": [
"signature",
"initials",
"date",
"name",
"title",
"text"
]
},
"description": {
"type": "string",
"description": "Plain English: what the line is and what is printed around it"
},
"label": {
"type": [
"string",
"null"
]
},
"textBelow": {
"type": [
"string",
"null"
]
},
"block": {
"type": [
"string",
"null"
]
},
"pairedDate": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "For a signature spot: the date spot on the same row"
},
"pairedSignature": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"line": {
"type": "object",
"properties": {
"x1": {
"type": "number"
},
"x2": {
"type": "number"
},
"y": {
"type": "number"
}
},
"required": [
"x1",
"x2",
"y"
],
"additionalProperties": false,
"description": "The drawn line, top-left origin in PDF points"
},
"box": {
"type": "object",
"properties": {
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
}
},
"required": [
"x",
"y",
"width",
"height"
],
"additionalProperties": false,
"description": "The field box directly above the line"
}
},
"required": [
"spot",
"page",
"kind",
"description",
"label",
"textBelow",
"block",
"pairedDate",
"pairedSignature",
"line",
"box"
],
"additionalProperties": false,
"description": "Signature spot"
}
}
},
"required": [
"id",
"title",
"message",
"status",
"kind",
"signingOrder",
"pageCount",
"owner",
"templateId",
"expiresAt",
"tokenTtlDays",
"reminderEveryDays",
"originalSha256",
"assembledSha256",
"signaturePageText",
"finalSha256",
"hasFinal",
"hasCertificate",
"sentAt",
"completedAt",
"declinedAt",
"voidedAt",
"voidReason",
"expiredAt",
"createdAt",
"updatedAt",
"recipients",
"fields",
"packet",
"testMode",
"dateFormat",
"timeZone",
"timestamp"
],
"additionalProperties": false,
"description": "Document"
}
},
"nextCursor": {
"type": [
"string",
"null"
]
}
},
"required": [
"items",
"nextCursor"
],
"additionalProperties": false
}Get a document with its recipients and fields.
Path parameters
id | string |
Example
curl -X GET "https://sign.prodevgroup.com/api/v1/documents/<id>" \ -H "Authorization: Bearer $PROSIGN_API_KEY"
Response schema (200)
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"message": {
"type": [
"string",
"null"
]
},
"status": {
"type": "string",
"enum": [
"DRAFT",
"PENDING",
"COMPLETED",
"DECLINED",
"VOIDED",
"EXPIRED"
]
},
"kind": {
"type": "string",
"enum": [
"DOCUMENT",
"AGENT_AUTHORIZATION",
"ATTACHMENT",
"PACKET_ACKNOWLEDGMENT"
],
"description": "ATTACHMENT: a packet attachment (for review, or with an acknowledgment sheet). PACKET_ACKNOWLEDGMENT: the sealed last step of a packet, one per signer."
},
"signingOrder": {
"type": "string",
"enum": [
"PARALLEL",
"SEQUENTIAL"
]
},
"pageCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"owner": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"email": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"email",
"name"
],
"additionalProperties": false
},
"templateId": {
"type": [
"string",
"null"
]
},
"expiresAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"tokenTtlDays": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"reminderEveryDays": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"originalSha256": {
"description": "SHA-256 of the uploaded PDF",
"type": [
"string",
"null"
]
},
"assembledSha256": {
"description": "SHA-256 of the PDF with the generated signature page added; null when none",
"type": [
"string",
"null"
]
},
"signaturePageText": {
"description": "Plain-text rendering of the generated signature page(s), to check the result without vision",
"type": [
"string",
"null"
]
},
"finalSha256": {
"type": [
"string",
"null"
]
},
"hasFinal": {
"type": "boolean"
},
"hasCertificate": {
"type": "boolean"
},
"sentAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"completedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"declinedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"voidedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"voidReason": {
"type": [
"string",
"null"
]
},
"expiredAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"createdAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"updatedAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"recipients": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"email": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"SIGNER",
"CC",
"VIEWER"
]
},
"order": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"status": {
"type": "string",
"enum": [
"PENDING",
"VIEWED",
"CONSENTED",
"SIGNED",
"DECLINED"
]
},
"hasAccessCode": {
"type": "boolean"
},
"notifiedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"viewedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"consentedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"signedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"declinedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"declineReason": {
"type": [
"string",
"null"
]
},
"tokenExpiresAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"isTurn": {
"type": "boolean",
"description": "true when this recipient may act now"
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"recipientId": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"SIGNATURE",
"INITIALS",
"NAME",
"EMAIL",
"DATE",
"TEXT",
"CHECKBOX"
]
},
"label": {
"type": [
"string",
"null"
]
},
"page": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
},
"required": {
"type": "boolean"
},
"value": {
"type": [
"string",
"null"
]
},
"signedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"placedBy": {
"type": "string",
"enum": [
"COORD",
"ANCHOR"
]
},
"align": {
"anyOf": [
{
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"recipientId",
"type",
"label",
"page",
"x",
"y",
"width",
"height",
"required",
"value",
"signedAt",
"placedBy",
"align"
],
"additionalProperties": false
},
"description": "This recipient's fields (also listed at the document level)"
}
},
"required": [
"id",
"name",
"email",
"role",
"order",
"status",
"hasAccessCode",
"notifiedAt",
"viewedAt",
"consentedAt",
"signedAt",
"declinedAt",
"declineReason",
"tokenExpiresAt",
"isTurn",
"fields"
],
"additionalProperties": false
}
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"recipientId": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"SIGNATURE",
"INITIALS",
"NAME",
"EMAIL",
"DATE",
"TEXT",
"CHECKBOX"
]
},
"label": {
"type": [
"string",
"null"
]
},
"page": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
},
"required": {
"type": "boolean"
},
"value": {
"type": [
"string",
"null"
]
},
"signedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"placedBy": {
"type": "string",
"enum": [
"COORD",
"ANCHOR"
]
},
"align": {
"anyOf": [
{
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"recipientId",
"type",
"label",
"page",
"x",
"y",
"width",
"height",
"required",
"value",
"signedAt",
"placedBy",
"align"
],
"additionalProperties": false
}
},
"packet": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"position": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"count": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"orderLocked": {
"type": "boolean"
}
},
"required": [
"id",
"title",
"position",
"count",
"orderLocked"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Set when the document is one of several in a packet"
},
"testMode": {
"type": "boolean"
},
"dateFormat": {
"type": "string"
},
"timeZone": {
"type": "string"
},
"timestamp": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"none",
"done",
"pending"
]
},
"authority": {
"type": [
"string",
"null"
]
},
"at": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
}
},
"required": [
"status",
"authority",
"at"
],
"additionalProperties": false,
"description": "Trusted RFC 3161 timestamp on the seal: done, pending (the authorities were unreachable at sealing; retried by the worker), or none (not completed yet)"
},
"signatureSpots": {
"description": "Only on a create response with detectSpots: true",
"type": "array",
"items": {
"type": "object",
"properties": {
"spot": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "1-based number in reading order; use it as { \"spot\": n } in a recipient's fields"
},
"page": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"kind": {
"type": "string",
"enum": [
"signature",
"initials",
"date",
"name",
"title",
"text"
]
},
"description": {
"type": "string",
"description": "Plain English: what the line is and what is printed around it"
},
"label": {
"type": [
"string",
"null"
]
},
"textBelow": {
"type": [
"string",
"null"
]
},
"block": {
"type": [
"string",
"null"
]
},
"pairedDate": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "For a signature spot: the date spot on the same row"
},
"pairedSignature": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"line": {
"type": "object",
"properties": {
"x1": {
"type": "number"
},
"x2": {
"type": "number"
},
"y": {
"type": "number"
}
},
"required": [
"x1",
"x2",
"y"
],
"additionalProperties": false,
"description": "The drawn line, top-left origin in PDF points"
},
"box": {
"type": "object",
"properties": {
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
}
},
"required": [
"x",
"y",
"width",
"height"
],
"additionalProperties": false,
"description": "The field box directly above the line"
}
},
"required": [
"spot",
"page",
"kind",
"description",
"label",
"textBelow",
"block",
"pairedDate",
"pairedSignature",
"line",
"box"
],
"additionalProperties": false,
"description": "Signature spot"
}
}
},
"required": [
"id",
"title",
"message",
"status",
"kind",
"signingOrder",
"pageCount",
"owner",
"templateId",
"expiresAt",
"tokenTtlDays",
"reminderEveryDays",
"originalSha256",
"assembledSha256",
"signaturePageText",
"finalSha256",
"hasFinal",
"hasCertificate",
"sentAt",
"completedAt",
"declinedAt",
"voidedAt",
"voidReason",
"expiredAt",
"createdAt",
"updatedAt",
"recipients",
"fields",
"packet",
"testMode",
"dateFormat",
"timeZone",
"timestamp"
],
"additionalProperties": false,
"description": "Document"
}Update a DRAFT document. Only DRAFT documents can change. Sending recipients replaces every recipient and field.
Path parameters
id | string |
Example
curl -X PATCH "https://sign.prodevgroup.com/api/v1/documents/<id>" \
-H "Authorization: Bearer $PROSIGN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"recipients":[{"name":"string","email":"lori@example.com"}],"useAnchors":true}'
Request body schema
{
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 300
},
"message": {
"description": "Message shown in the invite email and on the signing page",
"anyOf": [
{
"type": "string",
"maxLength": 5000
},
{
"type": "null"
}
]
},
"signingOrder": {
"description": "Default PARALLEL",
"type": "string",
"enum": [
"PARALLEL",
"SEQUENTIAL"
]
},
"expiresInDays": {
"description": "Document expiry; omit for none",
"anyOf": [
{
"type": "integer",
"minimum": 1,
"maximum": 365
},
{
"type": "null"
}
]
},
"tokenTtlDays": {
"description": "How long signing links stay valid. Default 30",
"anyOf": [
{
"type": "integer",
"minimum": 1,
"maximum": 365
},
{
"type": "null"
}
]
},
"reminderEveryDays": {
"description": "Send reminders to pending signers every N days",
"anyOf": [
{
"type": "integer",
"minimum": 1,
"maximum": 90
},
{
"type": "null"
}
]
},
"dateFormat": {
"description": "How DATE fields print. Tokens YYYY YY MMMM MMM MM M DD D, for example MM/DD/YYYY (default), YYYY-MM-DD, \"MMMM D, YYYY\"",
"anyOf": [
{
"type": "string",
"maxLength": 40
},
{
"type": "null"
}
]
},
"timeZone": {
"description": "IANA time zone the signing day is taken in for DATE fields. Default America/Chicago",
"anyOf": [
{
"type": "string",
"maxLength": 64
},
{
"type": "null"
}
]
},
"recipients": {
"description": "Replaces all recipients and fields",
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"email": {
"type": "string",
"maxLength": 320,
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"role": {
"description": "Default SIGNER",
"type": "string",
"enum": [
"SIGNER",
"CC",
"VIEWER"
]
},
"order": {
"description": "Signing order. Default: position in the list (1-based). Anchor tags refer to this number.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"accessCode": {
"description": "Optional code the signer must enter before viewing",
"anyOf": [
{
"type": "string",
"minLength": 4,
"maxLength": 64
},
{
"type": "null"
}
]
},
"message": {
"description": "Personal note for this recipient, written by you or your agent; shown in their invite email instead of the document message",
"anyOf": [
{
"type": "string",
"maxLength": 4000
},
{
"type": "null"
}
]
},
"fields": {
"description": "Ignored when useAnchors is true",
"maxItems": 200,
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"SIGNATURE",
"INITIALS",
"NAME",
"EMAIL",
"DATE",
"TEXT",
"CHECKBOX"
]
},
"page": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991,
"description": "1-based page number"
},
"x": {
"type": "number",
"minimum": 0,
"description": "Left edge in PDF points, top-left origin"
},
"y": {
"type": "number",
"minimum": 0,
"description": "Top edge in PDF points, top-left origin"
},
"width": {
"type": "number",
"exclusiveMinimum": 0
},
"height": {
"type": "number",
"exclusiveMinimum": 0
},
"label": {
"description": "Label shown to the signer (TEXT and CHECKBOX fields)",
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
]
},
"required": {
"type": "boolean"
},
"align": {
"description": "Where the signature, initials or text sits inside the box. Default: center for SIGNATURE and INITIALS, left for text fields. Anchor tags take it as a last part: {{signature:1:right}}, {{text:1:Policy number:center}}.",
"anyOf": [
{
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
{
"type": "null"
}
]
}
},
"required": [
"type",
"page",
"x",
"y",
"width",
"height"
],
"description": "A field placed by coordinates"
},
{
"type": "object",
"properties": {
"spot": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991,
"description": "A spot number from GET /documents/{id}/signature-spots (or from detectSpots:true at creation). The field takes the spot's page, box and kind: a signature line becomes a SIGNATURE field, a date line a DATE field, and so on."
},
"type": {
"description": "Override the kind the spot implies",
"anyOf": [
{
"type": "string",
"enum": [
"SIGNATURE",
"INITIALS",
"NAME",
"EMAIL",
"DATE",
"TEXT",
"CHECKBOX"
]
},
{
"type": "null"
}
]
},
"label": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
]
},
"required": {
"type": "boolean"
},
"align": {
"anyOf": [
{
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
{
"type": "null"
}
]
}
},
"required": [
"spot"
],
"description": "A field placed on a detected signature spot (no coordinates needed)"
}
],
"description": "A field: by coordinates, or by signature spot number"
}
}
},
"required": [
"name",
"email"
],
"description": "Recipient"
}
},
"useAnchors": {
"type": "boolean"
},
"signaturePage": {
"description": "Replace the generated signature page (enabled: true) or remove it (enabled: false). Without recipients the current recipients are kept.",
"anyOf": [
{
"type": "object",
"properties": {
"enabled": {
"type": "boolean",
"description": "true: append the page. false on PATCH removes a page added earlier."
},
"title": {
"description": "Default \"Signatures\"",
"anyOf": [
{
"type": "string",
"maxLength": 120
},
{
"type": "null"
}
]
},
"statement": {
"type": "string",
"maxLength": 3000,
"description": "The wording the signers agree to, plain text; blank lines become paragraphs. Required."
},
"blocks": {
"minItems": 1,
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"recipient": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991,
"description": "The recipient's order number"
},
"label": {
"description": "Heading over the block, e.g. \"Homeowner\"",
"anyOf": [
{
"type": "string",
"maxLength": 80
},
{
"type": "null"
}
]
},
"printedName": {
"description": "Printed under the signature line; default: the recipient's name",
"anyOf": [
{
"type": "string",
"maxLength": 120
},
{
"type": "null"
}
]
},
"title": {
"description": "Printed under the name, e.g. \"Director of Operations\"",
"anyOf": [
{
"type": "string",
"maxLength": 120
},
{
"type": "null"
}
]
},
"fields": {
"description": "signature, initials, date, name, title, text:<label>, checkbox:<label>; default [\"signature\",\"date\"]",
"anyOf": [
{
"maxItems": 12,
"type": "array",
"items": {
"type": "string",
"maxLength": 70
}
},
{
"type": "null"
}
]
},
"align": {
"description": "Where the signature sits on its line: left, center (default) or right",
"anyOf": [
{
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
{
"type": "null"
}
]
}
},
"required": [
"recipient"
],
"description": "One signer's block on the generated page"
},
"description": "One block per signer, in this order on the page"
},
"layout": {
"description": "stacked (default) or two-column",
"anyOf": [
{
"type": "string",
"enum": [
"stacked",
"two-column"
]
},
{
"type": "null"
}
]
}
},
"required": [
"enabled",
"statement",
"blocks"
],
"description": "A signature page the server generates and appends to the PDF, so no coordinates or spots are needed: title, your statement, a reference line (document title, page count, first 16 characters of the upload's SHA-256), then one block per signer with a signature line, a date line, the printed name and an optional title, each captioned. Fields sit on the lines (26 pt signature box, 18 pt date box, align honored). A recipient with a block needs no other fields. The response carries signaturePageText (a plain-text rendering) and the new pageCount; the certificate shows the upload's SHA-256 and the assembled file's SHA-256. Example for an invoice: {\"enabled\":true,\"title\":\"Acknowledgment of Receipt\",\"statement\":\"By signing below, I acknowledge that I received and reviewed Final Invoice PB-2026-KEN-FINAL dated October 12, 2026.\",\"blocks\":[{\"recipient\":1,\"label\":\"Homeowner\",\"printedName\":\"Jason Kendrick\",\"fields\":[\"signature\",\"date\"],\"align\":\"left\"},{\"recipient\":2,\"label\":\"Homeowner\",\"printedName\":\"Christina Kendrick\",\"fields\":[\"signature\",\"date\"]}]}"
},
{
"type": "null"
}
]
}
},
"description": "Update a DRAFT document"
}Response schema (200)
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"message": {
"type": [
"string",
"null"
]
},
"status": {
"type": "string",
"enum": [
"DRAFT",
"PENDING",
"COMPLETED",
"DECLINED",
"VOIDED",
"EXPIRED"
]
},
"kind": {
"type": "string",
"enum": [
"DOCUMENT",
"AGENT_AUTHORIZATION",
"ATTACHMENT",
"PACKET_ACKNOWLEDGMENT"
],
"description": "ATTACHMENT: a packet attachment (for review, or with an acknowledgment sheet). PACKET_ACKNOWLEDGMENT: the sealed last step of a packet, one per signer."
},
"signingOrder": {
"type": "string",
"enum": [
"PARALLEL",
"SEQUENTIAL"
]
},
"pageCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"owner": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"email": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"email",
"name"
],
"additionalProperties": false
},
"templateId": {
"type": [
"string",
"null"
]
},
"expiresAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"tokenTtlDays": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"reminderEveryDays": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"originalSha256": {
"description": "SHA-256 of the uploaded PDF",
"type": [
"string",
"null"
]
},
"assembledSha256": {
"description": "SHA-256 of the PDF with the generated signature page added; null when none",
"type": [
"string",
"null"
]
},
"signaturePageText": {
"description": "Plain-text rendering of the generated signature page(s), to check the result without vision",
"type": [
"string",
"null"
]
},
"finalSha256": {
"type": [
"string",
"null"
]
},
"hasFinal": {
"type": "boolean"
},
"hasCertificate": {
"type": "boolean"
},
"sentAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"completedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"declinedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"voidedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"voidReason": {
"type": [
"string",
"null"
]
},
"expiredAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"createdAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"updatedAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"recipients": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"email": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"SIGNER",
"CC",
"VIEWER"
]
},
"order": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"status": {
"type": "string",
"enum": [
"PENDING",
"VIEWED",
"CONSENTED",
"SIGNED",
"DECLINED"
]
},
"hasAccessCode": {
"type": "boolean"
},
"notifiedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"viewedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"consentedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"signedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"declinedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"declineReason": {
"type": [
"string",
"null"
]
},
"tokenExpiresAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"isTurn": {
"type": "boolean",
"description": "true when this recipient may act now"
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"recipientId": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"SIGNATURE",
"INITIALS",
"NAME",
"EMAIL",
"DATE",
"TEXT",
"CHECKBOX"
]
},
"label": {
"type": [
"string",
"null"
]
},
"page": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
},
"required": {
"type": "boolean"
},
"value": {
"type": [
"string",
"null"
]
},
"signedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"placedBy": {
"type": "string",
"enum": [
"COORD",
"ANCHOR"
]
},
"align": {
"anyOf": [
{
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"recipientId",
"type",
"label",
"page",
"x",
"y",
"width",
"height",
"required",
"value",
"signedAt",
"placedBy",
"align"
],
"additionalProperties": false
},
"description": "This recipient's fields (also listed at the document level)"
}
},
"required": [
"id",
"name",
"email",
"role",
"order",
"status",
"hasAccessCode",
"notifiedAt",
"viewedAt",
"consentedAt",
"signedAt",
"declinedAt",
"declineReason",
"tokenExpiresAt",
"isTurn",
"fields"
],
"additionalProperties": false
}
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"recipientId": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"SIGNATURE",
"INITIALS",
"NAME",
"EMAIL",
"DATE",
"TEXT",
"CHECKBOX"
]
},
"label": {
"type": [
"string",
"null"
]
},
"page": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
},
"required": {
"type": "boolean"
},
"value": {
"type": [
"string",
"null"
]
},
"signedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"placedBy": {
"type": "string",
"enum": [
"COORD",
"ANCHOR"
]
},
"align": {
"anyOf": [
{
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"recipientId",
"type",
"label",
"page",
"x",
"y",
"width",
"height",
"required",
"value",
"signedAt",
"placedBy",
"align"
],
"additionalProperties": false
}
},
"packet": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"position": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"count": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"orderLocked": {
"type": "boolean"
}
},
"required": [
"id",
"title",
"position",
"count",
"orderLocked"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Set when the document is one of several in a packet"
},
"testMode": {
"type": "boolean"
},
"dateFormat": {
"type": "string"
},
"timeZone": {
"type": "string"
},
"timestamp": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"none",
"done",
"pending"
]
},
"authority": {
"type": [
"string",
"null"
]
},
"at": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
}
},
"required": [
"status",
"authority",
"at"
],
"additionalProperties": false,
"description": "Trusted RFC 3161 timestamp on the seal: done, pending (the authorities were unreachable at sealing; retried by the worker), or none (not completed yet)"
},
"signatureSpots": {
"description": "Only on a create response with detectSpots: true",
"type": "array",
"items": {
"type": "object",
"properties": {
"spot": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "1-based number in reading order; use it as { \"spot\": n } in a recipient's fields"
},
"page": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"kind": {
"type": "string",
"enum": [
"signature",
"initials",
"date",
"name",
"title",
"text"
]
},
"description": {
"type": "string",
"description": "Plain English: what the line is and what is printed around it"
},
"label": {
"type": [
"string",
"null"
]
},
"textBelow": {
"type": [
"string",
"null"
]
},
"block": {
"type": [
"string",
"null"
]
},
"pairedDate": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "For a signature spot: the date spot on the same row"
},
"pairedSignature": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"line": {
"type": "object",
"properties": {
"x1": {
"type": "number"
},
"x2": {
"type": "number"
},
"y": {
"type": "number"
}
},
"required": [
"x1",
"x2",
"y"
],
"additionalProperties": false,
"description": "The drawn line, top-left origin in PDF points"
},
"box": {
"type": "object",
"properties": {
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
}
},
"required": [
"x",
"y",
"width",
"height"
],
"additionalProperties": false,
"description": "The field box directly above the line"
}
},
"required": [
"spot",
"page",
"kind",
"description",
"label",
"textBelow",
"block",
"pairedDate",
"pairedSignature",
"line",
"box"
],
"additionalProperties": false,
"description": "Signature spot"
}
}
},
"required": [
"id",
"title",
"message",
"status",
"kind",
"signingOrder",
"pageCount",
"owner",
"templateId",
"expiresAt",
"tokenTtlDays",
"reminderEveryDays",
"originalSha256",
"assembledSha256",
"signaturePageText",
"finalSha256",
"hasFinal",
"hasCertificate",
"sentAt",
"completedAt",
"declinedAt",
"voidedAt",
"voidReason",
"expiredAt",
"createdAt",
"updatedAt",
"recipients",
"fields",
"packet",
"testMode",
"dateFormat",
"timeZone",
"timestamp"
],
"additionalProperties": false,
"description": "Document"
}Delete a document. Drafts can be deleted by their owner. Completed documents can only be deleted by an ADMIN or OWNER; the audit trail is kept.
Path parameters
id | string |
Example
curl -X DELETE "https://sign.prodevgroup.com/api/v1/documents/<id>" \ -H "Authorization: Bearer $PROSIGN_API_KEY"
Response: Deleted
Send a DRAFT document for signature. Moves the document to PENDING, issues signing links and emails the recipients. Returns 409 not_draft when the document was already sent. Supports Idempotency-Key.
Path parameters
id | string |
Example
curl -X POST "https://sign.prodevgroup.com/api/v1/documents/<id>/send" \ -H "Authorization: Bearer $PROSIGN_API_KEY"
Response schema (200)
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"message": {
"type": [
"string",
"null"
]
},
"status": {
"type": "string",
"enum": [
"DRAFT",
"PENDING",
"COMPLETED",
"DECLINED",
"VOIDED",
"EXPIRED"
]
},
"kind": {
"type": "string",
"enum": [
"DOCUMENT",
"AGENT_AUTHORIZATION",
"ATTACHMENT",
"PACKET_ACKNOWLEDGMENT"
],
"description": "ATTACHMENT: a packet attachment (for review, or with an acknowledgment sheet). PACKET_ACKNOWLEDGMENT: the sealed last step of a packet, one per signer."
},
"signingOrder": {
"type": "string",
"enum": [
"PARALLEL",
"SEQUENTIAL"
]
},
"pageCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"owner": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"email": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"email",
"name"
],
"additionalProperties": false
},
"templateId": {
"type": [
"string",
"null"
]
},
"expiresAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"tokenTtlDays": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"reminderEveryDays": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"originalSha256": {
"description": "SHA-256 of the uploaded PDF",
"type": [
"string",
"null"
]
},
"assembledSha256": {
"description": "SHA-256 of the PDF with the generated signature page added; null when none",
"type": [
"string",
"null"
]
},
"signaturePageText": {
"description": "Plain-text rendering of the generated signature page(s), to check the result without vision",
"type": [
"string",
"null"
]
},
"finalSha256": {
"type": [
"string",
"null"
]
},
"hasFinal": {
"type": "boolean"
},
"hasCertificate": {
"type": "boolean"
},
"sentAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"completedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"declinedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"voidedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"voidReason": {
"type": [
"string",
"null"
]
},
"expiredAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"createdAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"updatedAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"recipients": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"email": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"SIGNER",
"CC",
"VIEWER"
]
},
"order": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"status": {
"type": "string",
"enum": [
"PENDING",
"VIEWED",
"CONSENTED",
"SIGNED",
"DECLINED"
]
},
"hasAccessCode": {
"type": "boolean"
},
"notifiedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"viewedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"consentedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"signedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"declinedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"declineReason": {
"type": [
"string",
"null"
]
},
"tokenExpiresAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"isTurn": {
"type": "boolean",
"description": "true when this recipient may act now"
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"recipientId": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"SIGNATURE",
"INITIALS",
"NAME",
"EMAIL",
"DATE",
"TEXT",
"CHECKBOX"
]
},
"label": {
"type": [
"string",
"null"
]
},
"page": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
},
"required": {
"type": "boolean"
},
"value": {
"type": [
"string",
"null"
]
},
"signedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"placedBy": {
"type": "string",
"enum": [
"COORD",
"ANCHOR"
]
},
"align": {
"anyOf": [
{
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"recipientId",
"type",
"label",
"page",
"x",
"y",
"width",
"height",
"required",
"value",
"signedAt",
"placedBy",
"align"
],
"additionalProperties": false
},
"description": "This recipient's fields (also listed at the document level)"
}
},
"required": [
"id",
"name",
"email",
"role",
"order",
"status",
"hasAccessCode",
"notifiedAt",
"viewedAt",
"consentedAt",
"signedAt",
"declinedAt",
"declineReason",
"tokenExpiresAt",
"isTurn",
"fields"
],
"additionalProperties": false
}
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"recipientId": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"SIGNATURE",
"INITIALS",
"NAME",
"EMAIL",
"DATE",
"TEXT",
"CHECKBOX"
]
},
"label": {
"type": [
"string",
"null"
]
},
"page": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
},
"required": {
"type": "boolean"
},
"value": {
"type": [
"string",
"null"
]
},
"signedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"placedBy": {
"type": "string",
"enum": [
"COORD",
"ANCHOR"
]
},
"align": {
"anyOf": [
{
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"recipientId",
"type",
"label",
"page",
"x",
"y",
"width",
"height",
"required",
"value",
"signedAt",
"placedBy",
"align"
],
"additionalProperties": false
}
},
"packet": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"position": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"count": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"orderLocked": {
"type": "boolean"
}
},
"required": [
"id",
"title",
"position",
"count",
"orderLocked"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Set when the document is one of several in a packet"
},
"testMode": {
"type": "boolean"
},
"dateFormat": {
"type": "string"
},
"timeZone": {
"type": "string"
},
"timestamp": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"none",
"done",
"pending"
]
},
"authority": {
"type": [
"string",
"null"
]
},
"at": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
}
},
"required": [
"status",
"authority",
"at"
],
"additionalProperties": false,
"description": "Trusted RFC 3161 timestamp on the seal: done, pending (the authorities were unreachable at sealing; retried by the worker), or none (not completed yet)"
},
"signatureSpots": {
"description": "Only on a create response with detectSpots: true",
"type": "array",
"items": {
"type": "object",
"properties": {
"spot": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "1-based number in reading order; use it as { \"spot\": n } in a recipient's fields"
},
"page": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"kind": {
"type": "string",
"enum": [
"signature",
"initials",
"date",
"name",
"title",
"text"
]
},
"description": {
"type": "string",
"description": "Plain English: what the line is and what is printed around it"
},
"label": {
"type": [
"string",
"null"
]
},
"textBelow": {
"type": [
"string",
"null"
]
},
"block": {
"type": [
"string",
"null"
]
},
"pairedDate": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "For a signature spot: the date spot on the same row"
},
"pairedSignature": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"line": {
"type": "object",
"properties": {
"x1": {
"type": "number"
},
"x2": {
"type": "number"
},
"y": {
"type": "number"
}
},
"required": [
"x1",
"x2",
"y"
],
"additionalProperties": false,
"description": "The drawn line, top-left origin in PDF points"
},
"box": {
"type": "object",
"properties": {
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
}
},
"required": [
"x",
"y",
"width",
"height"
],
"additionalProperties": false,
"description": "The field box directly above the line"
}
},
"required": [
"spot",
"page",
"kind",
"description",
"label",
"textBelow",
"block",
"pairedDate",
"pairedSignature",
"line",
"box"
],
"additionalProperties": false,
"description": "Signature spot"
}
}
},
"required": [
"id",
"title",
"message",
"status",
"kind",
"signingOrder",
"pageCount",
"owner",
"templateId",
"expiresAt",
"tokenTtlDays",
"reminderEveryDays",
"originalSha256",
"assembledSha256",
"signaturePageText",
"finalSha256",
"hasFinal",
"hasCertificate",
"sentAt",
"completedAt",
"declinedAt",
"voidedAt",
"voidReason",
"expiredAt",
"createdAt",
"updatedAt",
"recipients",
"fields",
"packet",
"testMode",
"dateFormat",
"timeZone",
"timestamp"
],
"additionalProperties": false,
"description": "Document"
}Void a document. Closes a DRAFT or PENDING document. Every signing link stops working and recipients are notified.
Path parameters
id | string |
Example
curl -X POST "https://sign.prodevgroup.com/api/v1/documents/<id>/void" \
-H "Authorization: Bearer $PROSIGN_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Request body schema
{
"type": "object",
"properties": {
"reason": {
"anyOf": [
{
"type": "string",
"maxLength": 1000
},
{
"type": "null"
}
]
}
},
"description": "Void"
}Response schema (200)
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"message": {
"type": [
"string",
"null"
]
},
"status": {
"type": "string",
"enum": [
"DRAFT",
"PENDING",
"COMPLETED",
"DECLINED",
"VOIDED",
"EXPIRED"
]
},
"kind": {
"type": "string",
"enum": [
"DOCUMENT",
"AGENT_AUTHORIZATION",
"ATTACHMENT",
"PACKET_ACKNOWLEDGMENT"
],
"description": "ATTACHMENT: a packet attachment (for review, or with an acknowledgment sheet). PACKET_ACKNOWLEDGMENT: the sealed last step of a packet, one per signer."
},
"signingOrder": {
"type": "string",
"enum": [
"PARALLEL",
"SEQUENTIAL"
]
},
"pageCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"owner": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"email": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"email",
"name"
],
"additionalProperties": false
},
"templateId": {
"type": [
"string",
"null"
]
},
"expiresAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"tokenTtlDays": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"reminderEveryDays": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"originalSha256": {
"description": "SHA-256 of the uploaded PDF",
"type": [
"string",
"null"
]
},
"assembledSha256": {
"description": "SHA-256 of the PDF with the generated signature page added; null when none",
"type": [
"string",
"null"
]
},
"signaturePageText": {
"description": "Plain-text rendering of the generated signature page(s), to check the result without vision",
"type": [
"string",
"null"
]
},
"finalSha256": {
"type": [
"string",
"null"
]
},
"hasFinal": {
"type": "boolean"
},
"hasCertificate": {
"type": "boolean"
},
"sentAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"completedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"declinedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"voidedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"voidReason": {
"type": [
"string",
"null"
]
},
"expiredAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"createdAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"updatedAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"recipients": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"email": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"SIGNER",
"CC",
"VIEWER"
]
},
"order": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"status": {
"type": "string",
"enum": [
"PENDING",
"VIEWED",
"CONSENTED",
"SIGNED",
"DECLINED"
]
},
"hasAccessCode": {
"type": "boolean"
},
"notifiedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"viewedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"consentedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"signedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"declinedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"declineReason": {
"type": [
"string",
"null"
]
},
"tokenExpiresAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"isTurn": {
"type": "boolean",
"description": "true when this recipient may act now"
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"recipientId": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"SIGNATURE",
"INITIALS",
"NAME",
"EMAIL",
"DATE",
"TEXT",
"CHECKBOX"
]
},
"label": {
"type": [
"string",
"null"
]
},
"page": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
},
"required": {
"type": "boolean"
},
"value": {
"type": [
"string",
"null"
]
},
"signedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"placedBy": {
"type": "string",
"enum": [
"COORD",
"ANCHOR"
]
},
"align": {
"anyOf": [
{
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"recipientId",
"type",
"label",
"page",
"x",
"y",
"width",
"height",
"required",
"value",
"signedAt",
"placedBy",
"align"
],
"additionalProperties": false
},
"description": "This recipient's fields (also listed at the document level)"
}
},
"required": [
"id",
"name",
"email",
"role",
"order",
"status",
"hasAccessCode",
"notifiedAt",
"viewedAt",
"consentedAt",
"signedAt",
"declinedAt",
"declineReason",
"tokenExpiresAt",
"isTurn",
"fields"
],
"additionalProperties": false
}
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"recipientId": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"SIGNATURE",
"INITIALS",
"NAME",
"EMAIL",
"DATE",
"TEXT",
"CHECKBOX"
]
},
"label": {
"type": [
"string",
"null"
]
},
"page": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
},
"required": {
"type": "boolean"
},
"value": {
"type": [
"string",
"null"
]
},
"signedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"placedBy": {
"type": "string",
"enum": [
"COORD",
"ANCHOR"
]
},
"align": {
"anyOf": [
{
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"recipientId",
"type",
"label",
"page",
"x",
"y",
"width",
"height",
"required",
"value",
"signedAt",
"placedBy",
"align"
],
"additionalProperties": false
}
},
"packet": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"position": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"count": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"orderLocked": {
"type": "boolean"
}
},
"required": [
"id",
"title",
"position",
"count",
"orderLocked"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Set when the document is one of several in a packet"
},
"testMode": {
"type": "boolean"
},
"dateFormat": {
"type": "string"
},
"timeZone": {
"type": "string"
},
"timestamp": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"none",
"done",
"pending"
]
},
"authority": {
"type": [
"string",
"null"
]
},
"at": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
}
},
"required": [
"status",
"authority",
"at"
],
"additionalProperties": false,
"description": "Trusted RFC 3161 timestamp on the seal: done, pending (the authorities were unreachable at sealing; retried by the worker), or none (not completed yet)"
},
"signatureSpots": {
"description": "Only on a create response with detectSpots: true",
"type": "array",
"items": {
"type": "object",
"properties": {
"spot": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "1-based number in reading order; use it as { \"spot\": n } in a recipient's fields"
},
"page": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"kind": {
"type": "string",
"enum": [
"signature",
"initials",
"date",
"name",
"title",
"text"
]
},
"description": {
"type": "string",
"description": "Plain English: what the line is and what is printed around it"
},
"label": {
"type": [
"string",
"null"
]
},
"textBelow": {
"type": [
"string",
"null"
]
},
"block": {
"type": [
"string",
"null"
]
},
"pairedDate": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "For a signature spot: the date spot on the same row"
},
"pairedSignature": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"line": {
"type": "object",
"properties": {
"x1": {
"type": "number"
},
"x2": {
"type": "number"
},
"y": {
"type": "number"
}
},
"required": [
"x1",
"x2",
"y"
],
"additionalProperties": false,
"description": "The drawn line, top-left origin in PDF points"
},
"box": {
"type": "object",
"properties": {
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
}
},
"required": [
"x",
"y",
"width",
"height"
],
"additionalProperties": false,
"description": "The field box directly above the line"
}
},
"required": [
"spot",
"page",
"kind",
"description",
"label",
"textBelow",
"block",
"pairedDate",
"pairedSignature",
"line",
"box"
],
"additionalProperties": false,
"description": "Signature spot"
}
}
},
"required": [
"id",
"title",
"message",
"status",
"kind",
"signingOrder",
"pageCount",
"owner",
"templateId",
"expiresAt",
"tokenTtlDays",
"reminderEveryDays",
"originalSha256",
"assembledSha256",
"signaturePageText",
"finalSha256",
"hasFinal",
"hasCertificate",
"sentAt",
"completedAt",
"declinedAt",
"voidedAt",
"voidReason",
"expiredAt",
"createdAt",
"updatedAt",
"recipients",
"fields",
"packet",
"testMode",
"dateFormat",
"timeZone",
"timestamp"
],
"additionalProperties": false,
"description": "Document"
}Send a reminder. Reminds one recipient, or every signer whose turn it is when recipientId is omitted.
Path parameters
id | string |
Example
curl -X POST "https://sign.prodevgroup.com/api/v1/documents/<id>/remind" \
-H "Authorization: Bearer $PROSIGN_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Request body schema
{
"type": "object",
"properties": {
"recipientId": {
"description": "Omit to remind every pending signer",
"type": [
"string",
"null"
]
},
"note": {
"description": "Personal paragraph for the reminder email, written by you or your agent",
"anyOf": [
{
"type": "string",
"maxLength": 4000
},
{
"type": "null"
}
]
}
},
"description": "Remind"
}Response schema (200)
{
"type": "object",
"properties": {
"reminded": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"required": [
"reminded"
],
"additionalProperties": false
}Issue a signing link (and a read-only link) for a recipient. Issues a new signing link plus a read-only link for the recipient, and a ready-to-send message containing both, so an agent can deliver them by text or chat. The read-only link lets the signer hand the document to their own AI assistant without giving it the power to sign. Earlier links keep working until they expire, are revoked, or the recipient acts.
Path parameters
id | string |
rid | string |
Example
curl -X POST "https://sign.prodevgroup.com/api/v1/documents/<id>/recipients/<rid>/link" \
-H "Authorization: Bearer $PROSIGN_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Request body schema
{
"type": "object",
"properties": {
"note": {
"description": "Personal paragraph inserted after the greeting of the default message and email",
"anyOf": [
{
"type": "string",
"maxLength": 4000
},
{
"type": "null"
}
]
},
"messageTemplate": {
"description": "Replaces the ready-to-send text entirely. Placeholders: {{firstName}} {{name}} {{title}} {{signUrl}} {{readUrl}} {{senderName}}. The signing link is appended if missing.",
"anyOf": [
{
"type": "string",
"maxLength": 4000
},
{
"type": "null"
}
]
}
},
"description": "Message options"
}Response schema (200)
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Signing link for this recipient (unique per issue)"
},
"readOnlyUrl": {
"type": "string",
"description": "Read-only link the recipient can give to an AI assistant; it cannot sign, consent or decline"
},
"expiresAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"message": {
"type": "string",
"description": "Ready-to-send text (SMS or email) with both links"
}
},
"required": [
"url",
"readOnlyUrl",
"expiresAt",
"message"
],
"additionalProperties": false
}Extracted text of the document, page by page. Plain text of the original PDF per page (anchor tags removed), so an agent can read the document without a vision model.
Path parameters
id | string |
Example
curl -X GET "https://sign.prodevgroup.com/api/v1/documents/<id>/text" \ -H "Authorization: Bearer $PROSIGN_API_KEY"
Response schema (200)
{
"type": "object",
"properties": {
"pages": {
"type": "array",
"items": {
"type": "object",
"properties": {
"page": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"text": {
"type": "string"
}
},
"required": [
"page",
"text"
],
"additionalProperties": false
}
}
},
"required": [
"pages"
],
"additionalProperties": false
}Revoke every active signing link of a recipient. All links issued so far for this recipient stop working. Issue a new one afterwards if needed.
Path parameters
id | string |
rid | string |
Example
curl -X DELETE "https://sign.prodevgroup.com/api/v1/documents/<id>/recipients/<rid>/links" \ -H "Authorization: Bearer $PROSIGN_API_KEY"
Response: { revoked: number }
Download the PDF. variant=original is the file as uploaded; variant=final (default) is the sealed PDF with the certificate pages, available once the document is COMPLETED (409 not_available before that).
Path parameters
id | string |
Query parameters
| name | type | description |
|---|---|---|
variant | string | Default final |
Example
curl -X GET "https://sign.prodevgroup.com/api/v1/documents/<id>/file" \ -H "Authorization: Bearer $PROSIGN_API_KEY" \ -o output.pdf
Response: PDF bytes (application/pdf)
Download the certificate of completion. The standalone certificate PDF. 409 not_available until the document is COMPLETED.
Path parameters
id | string |
Example
curl -X GET "https://sign.prodevgroup.com/api/v1/documents/<id>/certificate" \ -H "Authorization: Bearer $PROSIGN_API_KEY" \ -o output.pdf
Response: PDF bytes (application/pdf)
Audit trail. Every event for the document in order: created, sent, email_sent, link_opened, consent_given, signature_adopted, signed, declined, voided, reminder_sent, link_rotated, expired, completed, downloaded.
Path parameters
id | string |
Example
curl -X GET "https://sign.prodevgroup.com/api/v1/documents/<id>/audit" \ -H "Authorization: Bearer $PROSIGN_API_KEY"
Response schema (200)
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"action": {
"type": "string"
},
"actorType": {
"type": "string",
"enum": [
"USER",
"RECIPIENT",
"API_KEY",
"SYSTEM"
]
},
"actor": {
"type": "string"
},
"recipientId": {
"type": [
"string",
"null"
]
},
"apiKeyId": {
"type": [
"string",
"null"
]
},
"detail": {
"anyOf": [
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
{
"type": "null"
}
]
},
"ip": {
"type": [
"string",
"null"
]
},
"userAgent": {
"type": [
"string",
"null"
]
},
"createdAt": {
"type": "string",
"description": "ISO 8601 date-time"
}
},
"required": [
"id",
"action",
"actorType",
"actor",
"recipientId",
"apiKeyId",
"detail",
"ip",
"userAgent",
"createdAt"
],
"additionalProperties": false
}
}
},
"required": [
"items"
],
"additionalProperties": false
}Packets
Create a packet: several documents in one signing request (optionally send it right away). A packet groups several PDFs, each with its own recipients, fields and signing order, into one request. Every signer gets one email with one link that opens all of their documents: they agree to sign electronically once, see a progress bar (1/3 complete), and move to the next document automatically after signing. With orderLocked the documents must be signed in the order given; otherwise the signer picks any document from a numbered list. A document with "attachment": true is for review (an invoice, an exhibit): everyone on the packet sees it, each signer must open it, and with "acknowledge": "sign" or "initial" an acknowledgment sheet is appended for them to sign or initial. By default a packet with an attachment ends with a sealed Packet Acknowledgment per signer (every document listed with its SHA-256, one signature, always the last step); "acknowledgment" and the workspace rule (PATCH /settings) control that. The read-only link for AI assistants covers every document in the packet. Send as application/json with fileBase64 (or templateId) per document, or as multipart/form-data with a "payload" part holding this JSON and the PDFs as parts named file1, file2, ... by position. Supports Idempotency-Key.
Example
curl -X POST "https://sign.prodevgroup.com/api/v1/packets" \
-H "Authorization: Bearer $PROSIGN_API_KEY" \
-F "file=@contract.pdf;type=application/pdf" \
-F 'payload={"title":"string","documents":[{"recipients":[{"name":null,"email":null}],"useAnchors":true}],"send":true}'
Request body schema (JSON body, or the "payload" part of multipart/form-data next to a "file" part)
{
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 300,
"description": "Name of the whole request, used in the email subject and on the signing page"
},
"message": {
"description": "Message shown in the packet invite email",
"anyOf": [
{
"type": "string",
"maxLength": 5000
},
{
"type": "null"
}
]
},
"orderLocked": {
"description": "true: each signer must sign the documents in the order listed. false (default): any order, and the signer picks from a numbered list.",
"type": "boolean"
},
"acknowledgment": {
"description": "End the packet with a sealed \"Packet Acknowledgment\" per signer: it lists every document with its page count and SHA-256, and takes one signature as the very last step. Omit to follow the workspace rule (default: on when the packet has an attachment). true or false overrides the rule; an object with title, intro and statement turns it on with your own wording.",
"anyOf": [
{
"type": "boolean"
},
{
"type": "object",
"properties": {
"title": {
"description": "Default \"Packet Acknowledgment\"",
"anyOf": [
{
"type": "string",
"maxLength": 120
},
{
"type": "null"
}
]
},
"intro": {
"description": "Paragraph above the document list. Placeholders: {{packet}}, {{sender}}, {{signer}}, {{count}}",
"anyOf": [
{
"type": "string",
"maxLength": 1500
},
{
"type": "null"
}
]
},
"statement": {
"description": "The statement the signer signs under the list. Same placeholders. Default: the service wording (version 2026.1)",
"anyOf": [
{
"type": "string",
"maxLength": 3000
},
{
"type": "null"
}
]
}
},
"description": "Your own wording for the packet acknowledgment. Passing this object turns the acknowledgment on. Any part left out keeps the service wording; the sheet notes which parts are the sender's."
}
]
},
"testMode": {
"description": "Test run for every document in the packet (emails to you only, marked [TEST]; TEST watermark)",
"type": "boolean"
},
"dateFormat": {
"description": "How DATE fields print. Tokens YYYY YY MMMM MMM MM M DD D, for example MM/DD/YYYY (default), YYYY-MM-DD, \"MMMM D, YYYY\"",
"anyOf": [
{
"type": "string",
"maxLength": 40
},
{
"type": "null"
}
]
},
"timeZone": {
"description": "IANA time zone the signing day is taken in for DATE fields. Default America/Chicago",
"anyOf": [
{
"type": "string",
"maxLength": 64
},
{
"type": "null"
}
]
},
"signingOrder": {
"description": "Packet-wide order. SEQUENTIAL: the whole packet goes to the first signer group, then the next (groups from \"signers\", or each signer's lowest recipient order across the documents; same number = simultaneous). PARALLEL (default): everyone at once. A document's own signingOrder still applies inside it.",
"type": "string",
"enum": [
"PARALLEL",
"SEQUENTIAL"
]
},
"signers": {
"description": "SEQUENTIAL packets: the signer groups, e.g. A first, then B and C together: [{email:A,order:1},{email:B,order:2},{email:C,order:2}]. Every signer must be listed. Omit to derive the groups from the recipient order numbers.",
"anyOf": [
{
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"order": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991,
"description": "1 = first; signers with the same number sign at the same time"
}
},
"required": [
"email",
"order"
]
}
},
{
"type": "null"
}
]
},
"expiresInDays": {
"anyOf": [
{
"type": "integer",
"minimum": 1,
"maximum": 365
},
{
"type": "null"
}
]
},
"tokenTtlDays": {
"description": "How long packet links stay valid. Default 30",
"anyOf": [
{
"type": "integer",
"minimum": 1,
"maximum": 365
},
{
"type": "null"
}
]
},
"reminderEveryDays": {
"anyOf": [
{
"type": "integer",
"minimum": 1,
"maximum": 90
},
{
"type": "null"
}
]
},
"documents": {
"minItems": 1,
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"description": "Required unless templateId is given (then the template title is the default)",
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 300
},
{
"type": "null"
}
]
},
"fileBase64": {
"description": "The PDF as base64 (JSON requests). With multipart, send each PDF as a part named file1, file2, ... matching the document position, or name the part in \"file\".",
"type": "string"
},
"file": {
"description": "Multipart only: the name of the part that holds this document's PDF (default file<position>)",
"type": "string",
"maxLength": 100
},
"templateId": {
"description": "Build this document from a template instead of a PDF; recipients then carry roleOrder",
"type": [
"string",
"null"
]
},
"recipients": {
"description": "This document's own recipients and fields. The same person may appear on several documents; one packet link covers all of them.",
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"email": {
"type": "string",
"maxLength": 320,
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"role": {
"description": "Default SIGNER",
"type": "string",
"enum": [
"SIGNER",
"CC",
"VIEWER"
]
},
"order": {
"description": "Signing order. Default: position in the list (1-based). Anchor tags refer to this number.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"accessCode": {
"description": "Optional code the signer must enter before viewing",
"anyOf": [
{
"type": "string",
"minLength": 4,
"maxLength": 64
},
{
"type": "null"
}
]
},
"message": {
"description": "Personal note for this recipient, written by you or your agent; shown in their invite email instead of the document message",
"anyOf": [
{
"type": "string",
"maxLength": 4000
},
{
"type": "null"
}
]
},
"fields": {
"description": "Ignored when useAnchors is true",
"maxItems": 200,
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"SIGNATURE",
"INITIALS",
"NAME",
"EMAIL",
"DATE",
"TEXT",
"CHECKBOX"
]
},
"page": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991,
"description": "1-based page number"
},
"x": {
"type": "number",
"minimum": 0,
"description": "Left edge in PDF points, top-left origin"
},
"y": {
"type": "number",
"minimum": 0,
"description": "Top edge in PDF points, top-left origin"
},
"width": {
"type": "number",
"exclusiveMinimum": 0
},
"height": {
"type": "number",
"exclusiveMinimum": 0
},
"label": {
"description": "Label shown to the signer (TEXT and CHECKBOX fields)",
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
]
},
"required": {
"type": "boolean"
},
"align": {
"description": "Where the signature, initials or text sits inside the box. Default: center for SIGNATURE and INITIALS, left for text fields. Anchor tags take it as a last part: {{signature:1:right}}, {{text:1:Policy number:center}}.",
"anyOf": [
{
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
{
"type": "null"
}
]
}
},
"required": [
"type",
"page",
"x",
"y",
"width",
"height"
],
"description": "A field placed by coordinates"
},
{
"type": "object",
"properties": {
"spot": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991,
"description": "A spot number from GET /documents/{id}/signature-spots (or from detectSpots:true at creation). The field takes the spot's page, box and kind: a signature line becomes a SIGNATURE field, a date line a DATE field, and so on."
},
"type": {
"description": "Override the kind the spot implies",
"anyOf": [
{
"type": "string",
"enum": [
"SIGNATURE",
"INITIALS",
"NAME",
"EMAIL",
"DATE",
"TEXT",
"CHECKBOX"
]
},
{
"type": "null"
}
]
},
"label": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
]
},
"required": {
"type": "boolean"
},
"align": {
"anyOf": [
{
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
{
"type": "null"
}
]
}
},
"required": [
"spot"
],
"description": "A field placed on a detected signature spot (no coordinates needed)"
}
],
"description": "A field: by coordinates, or by signature spot number"
}
},
"roleOrder": {
"description": "Template documents only: which template role (by order) this person fills",
"anyOf": [
{
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
}
},
"required": [
"name",
"email"
],
"description": "Recipient of a packet document"
}
},
"prefill": {
"description": "TEXT field values by label",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string",
"maxLength": 2000
}
},
"useAnchors": {
"description": "Place fields from {{signature:1}} style tags in this PDF",
"type": "boolean"
},
"message": {
"description": "Shown on this document's signing page",
"anyOf": [
{
"type": "string",
"maxLength": 5000
},
{
"type": "null"
}
]
},
"signingOrder": {
"description": "Order among this document's recipients; default: the packet's signingOrder",
"anyOf": [
{
"type": "string",
"enum": [
"PARALLEL",
"SEQUENTIAL"
]
},
{
"type": "null"
}
]
},
"signaturePage": {
"description": "Append a generated signature page to this document",
"anyOf": [
{
"type": "object",
"properties": {
"enabled": {
"type": "boolean",
"description": "true: append the page. false on PATCH removes a page added earlier."
},
"title": {
"description": "Default \"Signatures\"",
"anyOf": [
{
"type": "string",
"maxLength": 120
},
{
"type": "null"
}
]
},
"statement": {
"type": "string",
"maxLength": 3000,
"description": "The wording the signers agree to, plain text; blank lines become paragraphs. Required."
},
"blocks": {
"minItems": 1,
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"recipient": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991,
"description": "The recipient's order number"
},
"label": {
"description": "Heading over the block, e.g. \"Homeowner\"",
"anyOf": [
{
"type": "string",
"maxLength": 80
},
{
"type": "null"
}
]
},
"printedName": {
"description": "Printed under the signature line; default: the recipient's name",
"anyOf": [
{
"type": "string",
"maxLength": 120
},
{
"type": "null"
}
]
},
"title": {
"description": "Printed under the name, e.g. \"Director of Operations\"",
"anyOf": [
{
"type": "string",
"maxLength": 120
},
{
"type": "null"
}
]
},
"fields": {
"description": "signature, initials, date, name, title, text:<label>, checkbox:<label>; default [\"signature\",\"date\"]",
"anyOf": [
{
"maxItems": 12,
"type": "array",
"items": {
"type": "string",
"maxLength": 70
}
},
{
"type": "null"
}
]
},
"align": {
"description": "Where the signature sits on its line: left, center (default) or right",
"anyOf": [
{
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
{
"type": "null"
}
]
}
},
"required": [
"recipient"
],
"description": "One signer's block on the generated page"
},
"description": "One block per signer, in this order on the page"
},
"layout": {
"description": "stacked (default) or two-column",
"anyOf": [
{
"type": "string",
"enum": [
"stacked",
"two-column"
]
},
{
"type": "null"
}
]
}
},
"required": [
"enabled",
"statement",
"blocks"
],
"description": "A signature page the server generates and appends to the PDF, so no coordinates or spots are needed: title, your statement, a reference line (document title, page count, first 16 characters of the upload's SHA-256), then one block per signer with a signature line, a date line, the printed name and an optional title, each captioned. Fields sit on the lines (26 pt signature box, 18 pt date box, align honored). A recipient with a block needs no other fields. The response carries signaturePageText (a plain-text rendering) and the new pageCount; the certificate shows the upload's SHA-256 and the assembled file's SHA-256. Example for an invoice: {\"enabled\":true,\"title\":\"Acknowledgment of Receipt\",\"statement\":\"By signing below, I acknowledge that I received and reviewed Final Invoice PB-2026-KEN-FINAL dated October 12, 2026.\",\"blocks\":[{\"recipient\":1,\"label\":\"Homeowner\",\"printedName\":\"Jason Kendrick\",\"fields\":[\"signature\",\"date\"],\"align\":\"left\"},{\"recipient\":2,\"label\":\"Homeowner\",\"printedName\":\"Christina Kendrick\",\"fields\":[\"signature\",\"date\"]}]}"
},
{
"type": "null"
}
]
},
"attachment": {
"description": "true: an attachment for review (an invoice, an exhibit). No recipients or fields of its own: everyone on the packet sees it, and each signer must open it before the packet acknowledgment. PDF only.",
"type": "boolean"
},
"acknowledge": {
"description": "Attachments only. none (default): reviewed only. initial / sign: an \"Acknowledgment of Receipt\" sheet is appended to the attachment with a block per signer, and the attachment becomes a document they initial or sign.",
"type": "string",
"enum": [
"none",
"initial",
"sign"
]
},
"acknowledgeTitle": {
"description": "With acknowledge sign/initial: your own title for the receipt sheet",
"anyOf": [
{
"type": "string",
"maxLength": 120
},
{
"type": "null"
}
]
},
"acknowledgeStatement": {
"description": "With acknowledge sign/initial: your own statement for the receipt sheet. Placeholders: {{title}}, {{pages}}, {{sender}}, {{packet}}",
"anyOf": [
{
"type": "string",
"maxLength": 3000
},
{
"type": "null"
}
]
}
},
"description": "A document inside a packet"
},
"description": "The documents, in the order the signer sees them (and must follow when orderLocked)"
},
"send": {
"description": "Send right away: every signer gets one email with one link for all their documents",
"type": "boolean"
}
},
"required": [
"title",
"documents"
],
"description": "Create packet"
}Response schema (201)
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"message": {
"type": [
"string",
"null"
]
},
"orderLocked": {
"type": "boolean"
},
"acknowledgment": {
"type": "boolean",
"description": "Every signer ends with a sealed packet acknowledgment"
},
"signingOrder": {
"type": "string",
"enum": [
"PARALLEL",
"SEQUENTIAL"
],
"description": "Packet-wide order: SEQUENTIAL (one signer group at a time) or PARALLEL"
},
"acknowledgmentText": {
"anyOf": [
{
"type": "object",
"properties": {
"title": {
"description": "Default \"Packet Acknowledgment\"",
"anyOf": [
{
"type": "string",
"maxLength": 120
},
{
"type": "null"
}
]
},
"intro": {
"description": "Paragraph above the document list. Placeholders: {{packet}}, {{sender}}, {{signer}}, {{count}}",
"anyOf": [
{
"type": "string",
"maxLength": 1500
},
{
"type": "null"
}
]
},
"statement": {
"description": "The statement the signer signs under the list. Same placeholders. Default: the service wording (version 2026.1)",
"anyOf": [
{
"type": "string",
"maxLength": 3000
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"description": "Your own wording for the packet acknowledgment. Passing this object turns the acknowledgment on. Any part left out keeps the service wording; the sheet notes which parts are the sender's."
},
{
"type": "null"
}
],
"description": "The sender's own wording for it, when given"
},
"combinedSha256": {
"description": "SHA-256 of the combined, sealed packet PDF (GET /packets/{id}/file): every document followed by its certificate, then the packet audit; null until every document is completed",
"type": [
"string",
"null"
]
},
"combinedTimestampedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
],
"description": "Trusted timestamp on the combined packet PDF"
},
"status": {
"type": "string",
"enum": [
"DRAFT",
"PENDING",
"COMPLETED",
"DECLINED",
"VOIDED",
"EXPIRED"
],
"description": "Derived: DRAFT until sent, PENDING while any document is open, COMPLETED when every document completed, else the closing state"
},
"owner": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"email": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"email",
"name"
],
"additionalProperties": false
},
"tokenTtlDays": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"sentAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"completedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"createdAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"updatedAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"documents": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"message": {
"type": [
"string",
"null"
]
},
"status": {
"type": "string",
"enum": [
"DRAFT",
"PENDING",
"COMPLETED",
"DECLINED",
"VOIDED",
"EXPIRED"
]
},
"kind": {
"type": "string",
"enum": [
"DOCUMENT",
"AGENT_AUTHORIZATION",
"ATTACHMENT",
"PACKET_ACKNOWLEDGMENT"
],
"description": "ATTACHMENT: a packet attachment (for review, or with an acknowledgment sheet). PACKET_ACKNOWLEDGMENT: the sealed last step of a packet, one per signer."
},
"signingOrder": {
"type": "string",
"enum": [
"PARALLEL",
"SEQUENTIAL"
]
},
"pageCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"owner": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"email": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"email",
"name"
],
"additionalProperties": false
},
"templateId": {
"type": [
"string",
"null"
]
},
"expiresAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"tokenTtlDays": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"reminderEveryDays": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"originalSha256": {
"description": "SHA-256 of the uploaded PDF",
"type": [
"string",
"null"
]
},
"assembledSha256": {
"description": "SHA-256 of the PDF with the generated signature page added; null when none",
"type": [
"string",
"null"
]
},
"signaturePageText": {
"description": "Plain-text rendering of the generated signature page(s), to check the result without vision",
"type": [
"string",
"null"
]
},
"finalSha256": {
"type": [
"string",
"null"
]
},
"hasFinal": {
"type": "boolean"
},
"hasCertificate": {
"type": "boolean"
},
"sentAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"completedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"declinedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"voidedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"voidReason": {
"type": [
"string",
"null"
]
},
"expiredAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"createdAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"updatedAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"recipients": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"email": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"SIGNER",
"CC",
"VIEWER"
]
},
"order": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"status": {
"type": "string",
"enum": [
"PENDING",
"VIEWED",
"CONSENTED",
"SIGNED",
"DECLINED"
]
},
"hasAccessCode": {
"type": "boolean"
},
"notifiedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"viewedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"consentedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"signedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"declinedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"declineReason": {
"type": [
"string",
"null"
]
},
"tokenExpiresAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"isTurn": {
"type": "boolean",
"description": "true when this recipient may act now"
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"recipientId": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"SIGNATURE",
"INITIALS",
"NAME",
"EMAIL",
"DATE",
"TEXT",
"CHECKBOX"
]
},
"label": {
"type": [
"string",
"null"
]
},
"page": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
},
"required": {
"type": "boolean"
},
"value": {
"type": [
"string",
"null"
]
},
"signedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"placedBy": {
"type": "string",
"enum": [
"COORD",
"ANCHOR"
]
},
"align": {
"anyOf": [
{
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"recipientId",
"type",
"label",
"page",
"x",
"y",
"width",
"height",
"required",
"value",
"signedAt",
"placedBy",
"align"
],
"additionalProperties": false
},
"description": "This recipient's fields (also listed at the document level)"
}
},
"required": [
"id",
"name",
"email",
"role",
"order",
"status",
"hasAccessCode",
"notifiedAt",
"viewedAt",
"consentedAt",
"signedAt",
"declinedAt",
"declineReason",
"tokenExpiresAt",
"isTurn",
"fields"
],
"additionalProperties": false
}
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"recipientId": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"SIGNATURE",
"INITIALS",
"NAME",
"EMAIL",
"DATE",
"TEXT",
"CHECKBOX"
]
},
"label": {
"type": [
"string",
"null"
]
},
"page": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
},
"required": {
"type": "boolean"
},
"value": {
"type": [
"string",
"null"
]
},
"signedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"placedBy": {
"type": "string",
"enum": [
"COORD",
"ANCHOR"
]
},
"align": {
"anyOf": [
{
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"recipientId",
"type",
"label",
"page",
"x",
"y",
"width",
"height",
"required",
"value",
"signedAt",
"placedBy",
"align"
],
"additionalProperties": false
}
},
"packet": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"position": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"count": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"orderLocked": {
"type": "boolean"
}
},
"required": [
"id",
"title",
"position",
"count",
"orderLocked"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Set when the document is one of several in a packet"
},
"testMode": {
"type": "boolean"
},
"dateFormat": {
"type": "string"
},
"timeZone": {
"type": "string"
},
"timestamp": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"none",
"done",
"pending"
]
},
"authority": {
"type": [
"string",
"null"
]
},
"at": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
}
},
"required": [
"status",
"authority",
"at"
],
"additionalProperties": false,
"description": "Trusted RFC 3161 timestamp on the seal: done, pending (the authorities were unreachable at sealing; retried by the worker), or none (not completed yet)"
},
"signatureSpots": {
"description": "Only on a create response with detectSpots: true",
"type": "array",
"items": {
"type": "object",
"properties": {
"spot": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "1-based number in reading order; use it as { \"spot\": n } in a recipient's fields"
},
"page": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"kind": {
"type": "string",
"enum": [
"signature",
"initials",
"date",
"name",
"title",
"text"
]
},
"description": {
"type": "string",
"description": "Plain English: what the line is and what is printed around it"
},
"label": {
"type": [
"string",
"null"
]
},
"textBelow": {
"type": [
"string",
"null"
]
},
"block": {
"type": [
"string",
"null"
]
},
"pairedDate": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "For a signature spot: the date spot on the same row"
},
"pairedSignature": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"line": {
"type": "object",
"properties": {
"x1": {
"type": "number"
},
"x2": {
"type": "number"
},
"y": {
"type": "number"
}
},
"required": [
"x1",
"x2",
"y"
],
"additionalProperties": false,
"description": "The drawn line, top-left origin in PDF points"
},
"box": {
"type": "object",
"properties": {
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
}
},
"required": [
"x",
"y",
"width",
"height"
],
"additionalProperties": false,
"description": "The field box directly above the line"
}
},
"required": [
"spot",
"page",
"kind",
"description",
"label",
"textBelow",
"block",
"pairedDate",
"pairedSignature",
"line",
"box"
],
"additionalProperties": false,
"description": "Signature spot"
}
}
},
"required": [
"id",
"title",
"message",
"status",
"kind",
"signingOrder",
"pageCount",
"owner",
"templateId",
"expiresAt",
"tokenTtlDays",
"reminderEveryDays",
"originalSha256",
"assembledSha256",
"signaturePageText",
"finalSha256",
"hasFinal",
"hasCertificate",
"sentAt",
"completedAt",
"declinedAt",
"voidedAt",
"voidReason",
"expiredAt",
"createdAt",
"updatedAt",
"recipients",
"fields",
"packet",
"testMode",
"dateFormat",
"timeZone",
"timestamp"
],
"additionalProperties": false,
"description": "Document"
},
"description": "In packet order; each carries packet.position"
},
"signers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"email": {
"type": "string"
},
"documents": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "How many documents in the packet this person signs"
},
"order": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "Packet-wide order group (SEQUENTIAL packets), else null"
},
"waitingOn": {
"type": "array",
"items": {
"type": "string"
},
"description": "Who must finish before this person's turn comes"
},
"signed": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"declined": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"isTurn": {
"type": "boolean",
"description": "true when at least one document is waiting on this person now"
},
"notifiedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
}
},
"required": [
"name",
"email",
"documents",
"order",
"waitingOn",
"signed",
"declined",
"isTurn",
"notifiedAt"
],
"additionalProperties": false
}
}
},
"required": [
"id",
"title",
"message",
"orderLocked",
"acknowledgment",
"signingOrder",
"acknowledgmentText",
"combinedSha256",
"combinedTimestampedAt",
"status",
"owner",
"tokenTtlDays",
"sentAt",
"completedAt",
"createdAt",
"updatedAt",
"documents",
"signers"
],
"additionalProperties": false,
"description": "Packet"
}List packets. Members see their own packets; admins see every packet in the workspace. Newest first, cursor paginated.
Query parameters
| name | type | description |
|---|---|---|
status | string | Derived packet status |
limit | integer | |
cursor | string |
Example
curl -X GET "https://sign.prodevgroup.com/api/v1/packets" \ -H "Authorization: Bearer $PROSIGN_API_KEY"
Response schema (200)
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"message": {
"type": [
"string",
"null"
]
},
"orderLocked": {
"type": "boolean"
},
"acknowledgment": {
"type": "boolean",
"description": "Every signer ends with a sealed packet acknowledgment"
},
"signingOrder": {
"type": "string",
"enum": [
"PARALLEL",
"SEQUENTIAL"
],
"description": "Packet-wide order: SEQUENTIAL (one signer group at a time) or PARALLEL"
},
"acknowledgmentText": {
"anyOf": [
{
"type": "object",
"properties": {
"title": {
"description": "Default \"Packet Acknowledgment\"",
"anyOf": [
{
"type": "string",
"maxLength": 120
},
{
"type": "null"
}
]
},
"intro": {
"description": "Paragraph above the document list. Placeholders: {{packet}}, {{sender}}, {{signer}}, {{count}}",
"anyOf": [
{
"type": "string",
"maxLength": 1500
},
{
"type": "null"
}
]
},
"statement": {
"description": "The statement the signer signs under the list. Same placeholders. Default: the service wording (version 2026.1)",
"anyOf": [
{
"type": "string",
"maxLength": 3000
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"description": "Your own wording for the packet acknowledgment. Passing this object turns the acknowledgment on. Any part left out keeps the service wording; the sheet notes which parts are the sender's."
},
{
"type": "null"
}
],
"description": "The sender's own wording for it, when given"
},
"combinedSha256": {
"description": "SHA-256 of the combined, sealed packet PDF (GET /packets/{id}/file): every document followed by its certificate, then the packet audit; null until every document is completed",
"type": [
"string",
"null"
]
},
"combinedTimestampedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
],
"description": "Trusted timestamp on the combined packet PDF"
},
"status": {
"type": "string",
"enum": [
"DRAFT",
"PENDING",
"COMPLETED",
"DECLINED",
"VOIDED",
"EXPIRED"
],
"description": "Derived: DRAFT until sent, PENDING while any document is open, COMPLETED when every document completed, else the closing state"
},
"owner": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"email": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"email",
"name"
],
"additionalProperties": false
},
"tokenTtlDays": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"sentAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"completedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"createdAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"updatedAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"documents": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"message": {
"type": [
"string",
"null"
]
},
"status": {
"type": "string",
"enum": [
"DRAFT",
"PENDING",
"COMPLETED",
"DECLINED",
"VOIDED",
"EXPIRED"
]
},
"kind": {
"type": "string",
"enum": [
"DOCUMENT",
"AGENT_AUTHORIZATION",
"ATTACHMENT",
"PACKET_ACKNOWLEDGMENT"
],
"description": "ATTACHMENT: a packet attachment (for review, or with an acknowledgment sheet). PACKET_ACKNOWLEDGMENT: the sealed last step of a packet, one per signer."
},
"signingOrder": {
"type": "string",
"enum": [
"PARALLEL",
"SEQUENTIAL"
]
},
"pageCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"owner": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"email": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"email",
"name"
],
"additionalProperties": false
},
"templateId": {
"type": [
"string",
"null"
]
},
"expiresAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"tokenTtlDays": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"reminderEveryDays": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"originalSha256": {
"description": "SHA-256 of the uploaded PDF",
"type": [
"string",
"null"
]
},
"assembledSha256": {
"description": "SHA-256 of the PDF with the generated signature page added; null when none",
"type": [
"string",
"null"
]
},
"signaturePageText": {
"description": "Plain-text rendering of the generated signature page(s), to check the result without vision",
"type": [
"string",
"null"
]
},
"finalSha256": {
"type": [
"string",
"null"
]
},
"hasFinal": {
"type": "boolean"
},
"hasCertificate": {
"type": "boolean"
},
"sentAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"completedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"declinedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"voidedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"voidReason": {
"type": [
"string",
"null"
]
},
"expiredAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"createdAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"updatedAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"recipients": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"email": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"SIGNER",
"CC",
"VIEWER"
]
},
"order": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"status": {
"type": "string",
"enum": [
"PENDING",
"VIEWED",
"CONSENTED",
"SIGNED",
"DECLINED"
]
},
"hasAccessCode": {
"type": "boolean"
},
"notifiedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"viewedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"consentedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"signedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"declinedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"declineReason": {
"type": [
"string",
"null"
]
},
"tokenExpiresAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"isTurn": {
"type": "boolean",
"description": "true when this recipient may act now"
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"recipientId": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"SIGNATURE",
"INITIALS",
"NAME",
"EMAIL",
"DATE",
"TEXT",
"CHECKBOX"
]
},
"label": {
"type": [
"string",
"null"
]
},
"page": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
},
"required": {
"type": "boolean"
},
"value": {
"type": [
"string",
"null"
]
},
"signedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"placedBy": {
"type": "string",
"enum": [
"COORD",
"ANCHOR"
]
},
"align": {
"anyOf": [
{
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"recipientId",
"type",
"label",
"page",
"x",
"y",
"width",
"height",
"required",
"value",
"signedAt",
"placedBy",
"align"
],
"additionalProperties": false
},
"description": "This recipient's fields (also listed at the document level)"
}
},
"required": [
"id",
"name",
"email",
"role",
"order",
"status",
"hasAccessCode",
"notifiedAt",
"viewedAt",
"consentedAt",
"signedAt",
"declinedAt",
"declineReason",
"tokenExpiresAt",
"isTurn",
"fields"
],
"additionalProperties": false
}
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"recipientId": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"SIGNATURE",
"INITIALS",
"NAME",
"EMAIL",
"DATE",
"TEXT",
"CHECKBOX"
]
},
"label": {
"type": [
"string",
"null"
]
},
"page": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
},
"required": {
"type": "boolean"
},
"value": {
"type": [
"string",
"null"
]
},
"signedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"placedBy": {
"type": "string",
"enum": [
"COORD",
"ANCHOR"
]
},
"align": {
"anyOf": [
{
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"recipientId",
"type",
"label",
"page",
"x",
"y",
"width",
"height",
"required",
"value",
"signedAt",
"placedBy",
"align"
],
"additionalProperties": false
}
},
"packet": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"position": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"count": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"orderLocked": {
"type": "boolean"
}
},
"required": [
"id",
"title",
"position",
"count",
"orderLocked"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Set when the document is one of several in a packet"
},
"testMode": {
"type": "boolean"
},
"dateFormat": {
"type": "string"
},
"timeZone": {
"type": "string"
},
"timestamp": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"none",
"done",
"pending"
]
},
"authority": {
"type": [
"string",
"null"
]
},
"at": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
}
},
"required": [
"status",
"authority",
"at"
],
"additionalProperties": false,
"description": "Trusted RFC 3161 timestamp on the seal: done, pending (the authorities were unreachable at sealing; retried by the worker), or none (not completed yet)"
},
"signatureSpots": {
"description": "Only on a create response with detectSpots: true",
"type": "array",
"items": {
"type": "object",
"properties": {
"spot": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "1-based number in reading order; use it as { \"spot\": n } in a recipient's fields"
},
"page": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"kind": {
"type": "string",
"enum": [
"signature",
"initials",
"date",
"name",
"title",
"text"
]
},
"description": {
"type": "string",
"description": "Plain English: what the line is and what is printed around it"
},
"label": {
"type": [
"string",
"null"
]
},
"textBelow": {
"type": [
"string",
"null"
]
},
"block": {
"type": [
"string",
"null"
]
},
"pairedDate": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "For a signature spot: the date spot on the same row"
},
"pairedSignature": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"line": {
"type": "object",
"properties": {
"x1": {
"type": "number"
},
"x2": {
"type": "number"
},
"y": {
"type": "number"
}
},
"required": [
"x1",
"x2",
"y"
],
"additionalProperties": false,
"description": "The drawn line, top-left origin in PDF points"
},
"box": {
"type": "object",
"properties": {
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
}
},
"required": [
"x",
"y",
"width",
"height"
],
"additionalProperties": false,
"description": "The field box directly above the line"
}
},
"required": [
"spot",
"page",
"kind",
"description",
"label",
"textBelow",
"block",
"pairedDate",
"pairedSignature",
"line",
"box"
],
"additionalProperties": false,
"description": "Signature spot"
}
}
},
"required": [
"id",
"title",
"message",
"status",
"kind",
"signingOrder",
"pageCount",
"owner",
"templateId",
"expiresAt",
"tokenTtlDays",
"reminderEveryDays",
"originalSha256",
"assembledSha256",
"signaturePageText",
"finalSha256",
"hasFinal",
"hasCertificate",
"sentAt",
"completedAt",
"declinedAt",
"voidedAt",
"voidReason",
"expiredAt",
"createdAt",
"updatedAt",
"recipients",
"fields",
"packet",
"testMode",
"dateFormat",
"timeZone",
"timestamp"
],
"additionalProperties": false,
"description": "Document"
},
"description": "In packet order; each carries packet.position"
},
"signers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"email": {
"type": "string"
},
"documents": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "How many documents in the packet this person signs"
},
"order": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "Packet-wide order group (SEQUENTIAL packets), else null"
},
"waitingOn": {
"type": "array",
"items": {
"type": "string"
},
"description": "Who must finish before this person's turn comes"
},
"signed": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"declined": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"isTurn": {
"type": "boolean",
"description": "true when at least one document is waiting on this person now"
},
"notifiedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
}
},
"required": [
"name",
"email",
"documents",
"order",
"waitingOn",
"signed",
"declined",
"isTurn",
"notifiedAt"
],
"additionalProperties": false
}
}
},
"required": [
"id",
"title",
"message",
"orderLocked",
"acknowledgment",
"signingOrder",
"acknowledgmentText",
"combinedSha256",
"combinedTimestampedAt",
"status",
"owner",
"tokenTtlDays",
"sentAt",
"completedAt",
"createdAt",
"updatedAt",
"documents",
"signers"
],
"additionalProperties": false,
"description": "Packet"
}
},
"nextCursor": {
"type": [
"string",
"null"
]
}
},
"required": [
"items",
"nextCursor"
],
"additionalProperties": false
}Get a packet with its documents and per-signer progress.
Path parameters
id | string |
Example
curl -X GET "https://sign.prodevgroup.com/api/v1/packets/<id>" \ -H "Authorization: Bearer $PROSIGN_API_KEY"
Response schema (200)
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"message": {
"type": [
"string",
"null"
]
},
"orderLocked": {
"type": "boolean"
},
"acknowledgment": {
"type": "boolean",
"description": "Every signer ends with a sealed packet acknowledgment"
},
"signingOrder": {
"type": "string",
"enum": [
"PARALLEL",
"SEQUENTIAL"
],
"description": "Packet-wide order: SEQUENTIAL (one signer group at a time) or PARALLEL"
},
"acknowledgmentText": {
"anyOf": [
{
"type": "object",
"properties": {
"title": {
"description": "Default \"Packet Acknowledgment\"",
"anyOf": [
{
"type": "string",
"maxLength": 120
},
{
"type": "null"
}
]
},
"intro": {
"description": "Paragraph above the document list. Placeholders: {{packet}}, {{sender}}, {{signer}}, {{count}}",
"anyOf": [
{
"type": "string",
"maxLength": 1500
},
{
"type": "null"
}
]
},
"statement": {
"description": "The statement the signer signs under the list. Same placeholders. Default: the service wording (version 2026.1)",
"anyOf": [
{
"type": "string",
"maxLength": 3000
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"description": "Your own wording for the packet acknowledgment. Passing this object turns the acknowledgment on. Any part left out keeps the service wording; the sheet notes which parts are the sender's."
},
{
"type": "null"
}
],
"description": "The sender's own wording for it, when given"
},
"combinedSha256": {
"description": "SHA-256 of the combined, sealed packet PDF (GET /packets/{id}/file): every document followed by its certificate, then the packet audit; null until every document is completed",
"type": [
"string",
"null"
]
},
"combinedTimestampedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
],
"description": "Trusted timestamp on the combined packet PDF"
},
"status": {
"type": "string",
"enum": [
"DRAFT",
"PENDING",
"COMPLETED",
"DECLINED",
"VOIDED",
"EXPIRED"
],
"description": "Derived: DRAFT until sent, PENDING while any document is open, COMPLETED when every document completed, else the closing state"
},
"owner": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"email": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"email",
"name"
],
"additionalProperties": false
},
"tokenTtlDays": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"sentAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"completedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"createdAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"updatedAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"documents": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"message": {
"type": [
"string",
"null"
]
},
"status": {
"type": "string",
"enum": [
"DRAFT",
"PENDING",
"COMPLETED",
"DECLINED",
"VOIDED",
"EXPIRED"
]
},
"kind": {
"type": "string",
"enum": [
"DOCUMENT",
"AGENT_AUTHORIZATION",
"ATTACHMENT",
"PACKET_ACKNOWLEDGMENT"
],
"description": "ATTACHMENT: a packet attachment (for review, or with an acknowledgment sheet). PACKET_ACKNOWLEDGMENT: the sealed last step of a packet, one per signer."
},
"signingOrder": {
"type": "string",
"enum": [
"PARALLEL",
"SEQUENTIAL"
]
},
"pageCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"owner": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"email": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"email",
"name"
],
"additionalProperties": false
},
"templateId": {
"type": [
"string",
"null"
]
},
"expiresAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"tokenTtlDays": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"reminderEveryDays": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"originalSha256": {
"description": "SHA-256 of the uploaded PDF",
"type": [
"string",
"null"
]
},
"assembledSha256": {
"description": "SHA-256 of the PDF with the generated signature page added; null when none",
"type": [
"string",
"null"
]
},
"signaturePageText": {
"description": "Plain-text rendering of the generated signature page(s), to check the result without vision",
"type": [
"string",
"null"
]
},
"finalSha256": {
"type": [
"string",
"null"
]
},
"hasFinal": {
"type": "boolean"
},
"hasCertificate": {
"type": "boolean"
},
"sentAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"completedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"declinedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"voidedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"voidReason": {
"type": [
"string",
"null"
]
},
"expiredAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"createdAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"updatedAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"recipients": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"email": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"SIGNER",
"CC",
"VIEWER"
]
},
"order": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"status": {
"type": "string",
"enum": [
"PENDING",
"VIEWED",
"CONSENTED",
"SIGNED",
"DECLINED"
]
},
"hasAccessCode": {
"type": "boolean"
},
"notifiedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"viewedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"consentedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"signedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"declinedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"declineReason": {
"type": [
"string",
"null"
]
},
"tokenExpiresAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"isTurn": {
"type": "boolean",
"description": "true when this recipient may act now"
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"recipientId": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"SIGNATURE",
"INITIALS",
"NAME",
"EMAIL",
"DATE",
"TEXT",
"CHECKBOX"
]
},
"label": {
"type": [
"string",
"null"
]
},
"page": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
},
"required": {
"type": "boolean"
},
"value": {
"type": [
"string",
"null"
]
},
"signedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"placedBy": {
"type": "string",
"enum": [
"COORD",
"ANCHOR"
]
},
"align": {
"anyOf": [
{
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"recipientId",
"type",
"label",
"page",
"x",
"y",
"width",
"height",
"required",
"value",
"signedAt",
"placedBy",
"align"
],
"additionalProperties": false
},
"description": "This recipient's fields (also listed at the document level)"
}
},
"required": [
"id",
"name",
"email",
"role",
"order",
"status",
"hasAccessCode",
"notifiedAt",
"viewedAt",
"consentedAt",
"signedAt",
"declinedAt",
"declineReason",
"tokenExpiresAt",
"isTurn",
"fields"
],
"additionalProperties": false
}
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"recipientId": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"SIGNATURE",
"INITIALS",
"NAME",
"EMAIL",
"DATE",
"TEXT",
"CHECKBOX"
]
},
"label": {
"type": [
"string",
"null"
]
},
"page": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
},
"required": {
"type": "boolean"
},
"value": {
"type": [
"string",
"null"
]
},
"signedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"placedBy": {
"type": "string",
"enum": [
"COORD",
"ANCHOR"
]
},
"align": {
"anyOf": [
{
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"recipientId",
"type",
"label",
"page",
"x",
"y",
"width",
"height",
"required",
"value",
"signedAt",
"placedBy",
"align"
],
"additionalProperties": false
}
},
"packet": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"position": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"count": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"orderLocked": {
"type": "boolean"
}
},
"required": [
"id",
"title",
"position",
"count",
"orderLocked"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Set when the document is one of several in a packet"
},
"testMode": {
"type": "boolean"
},
"dateFormat": {
"type": "string"
},
"timeZone": {
"type": "string"
},
"timestamp": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"none",
"done",
"pending"
]
},
"authority": {
"type": [
"string",
"null"
]
},
"at": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
}
},
"required": [
"status",
"authority",
"at"
],
"additionalProperties": false,
"description": "Trusted RFC 3161 timestamp on the seal: done, pending (the authorities were unreachable at sealing; retried by the worker), or none (not completed yet)"
},
"signatureSpots": {
"description": "Only on a create response with detectSpots: true",
"type": "array",
"items": {
"type": "object",
"properties": {
"spot": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "1-based number in reading order; use it as { \"spot\": n } in a recipient's fields"
},
"page": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"kind": {
"type": "string",
"enum": [
"signature",
"initials",
"date",
"name",
"title",
"text"
]
},
"description": {
"type": "string",
"description": "Plain English: what the line is and what is printed around it"
},
"label": {
"type": [
"string",
"null"
]
},
"textBelow": {
"type": [
"string",
"null"
]
},
"block": {
"type": [
"string",
"null"
]
},
"pairedDate": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "For a signature spot: the date spot on the same row"
},
"pairedSignature": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"line": {
"type": "object",
"properties": {
"x1": {
"type": "number"
},
"x2": {
"type": "number"
},
"y": {
"type": "number"
}
},
"required": [
"x1",
"x2",
"y"
],
"additionalProperties": false,
"description": "The drawn line, top-left origin in PDF points"
},
"box": {
"type": "object",
"properties": {
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
}
},
"required": [
"x",
"y",
"width",
"height"
],
"additionalProperties": false,
"description": "The field box directly above the line"
}
},
"required": [
"spot",
"page",
"kind",
"description",
"label",
"textBelow",
"block",
"pairedDate",
"pairedSignature",
"line",
"box"
],
"additionalProperties": false,
"description": "Signature spot"
}
}
},
"required": [
"id",
"title",
"message",
"status",
"kind",
"signingOrder",
"pageCount",
"owner",
"templateId",
"expiresAt",
"tokenTtlDays",
"reminderEveryDays",
"originalSha256",
"assembledSha256",
"signaturePageText",
"finalSha256",
"hasFinal",
"hasCertificate",
"sentAt",
"completedAt",
"declinedAt",
"voidedAt",
"voidReason",
"expiredAt",
"createdAt",
"updatedAt",
"recipients",
"fields",
"packet",
"testMode",
"dateFormat",
"timeZone",
"timestamp"
],
"additionalProperties": false,
"description": "Document"
},
"description": "In packet order; each carries packet.position"
},
"signers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"email": {
"type": "string"
},
"documents": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "How many documents in the packet this person signs"
},
"order": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "Packet-wide order group (SEQUENTIAL packets), else null"
},
"waitingOn": {
"type": "array",
"items": {
"type": "string"
},
"description": "Who must finish before this person's turn comes"
},
"signed": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"declined": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"isTurn": {
"type": "boolean",
"description": "true when at least one document is waiting on this person now"
},
"notifiedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
}
},
"required": [
"name",
"email",
"documents",
"order",
"waitingOn",
"signed",
"declined",
"isTurn",
"notifiedAt"
],
"additionalProperties": false
}
}
},
"required": [
"id",
"title",
"message",
"orderLocked",
"acknowledgment",
"signingOrder",
"acknowledgmentText",
"combinedSha256",
"combinedTimestampedAt",
"status",
"owner",
"tokenTtlDays",
"sentAt",
"completedAt",
"createdAt",
"updatedAt",
"documents",
"signers"
],
"additionalProperties": false,
"description": "Packet"
}Delete a packet and its documents. Draft packets can be deleted by their owner. Sent packets only by an ADMIN or OWNER; audit trails are kept.
Path parameters
id | string |
Example
curl -X DELETE "https://sign.prodevgroup.com/api/v1/packets/<id>" \ -H "Authorization: Bearer $PROSIGN_API_KEY"
Response: Deleted
Send a DRAFT packet for signature. Moves every document to PENDING and emails each signer once, with one link that opens all of their documents. Every document is checked first; if one cannot be sent, none is. Supports Idempotency-Key.
Path parameters
id | string |
Example
curl -X POST "https://sign.prodevgroup.com/api/v1/packets/<id>/send" \ -H "Authorization: Bearer $PROSIGN_API_KEY"
Response schema (200)
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"message": {
"type": [
"string",
"null"
]
},
"orderLocked": {
"type": "boolean"
},
"acknowledgment": {
"type": "boolean",
"description": "Every signer ends with a sealed packet acknowledgment"
},
"signingOrder": {
"type": "string",
"enum": [
"PARALLEL",
"SEQUENTIAL"
],
"description": "Packet-wide order: SEQUENTIAL (one signer group at a time) or PARALLEL"
},
"acknowledgmentText": {
"anyOf": [
{
"type": "object",
"properties": {
"title": {
"description": "Default \"Packet Acknowledgment\"",
"anyOf": [
{
"type": "string",
"maxLength": 120
},
{
"type": "null"
}
]
},
"intro": {
"description": "Paragraph above the document list. Placeholders: {{packet}}, {{sender}}, {{signer}}, {{count}}",
"anyOf": [
{
"type": "string",
"maxLength": 1500
},
{
"type": "null"
}
]
},
"statement": {
"description": "The statement the signer signs under the list. Same placeholders. Default: the service wording (version 2026.1)",
"anyOf": [
{
"type": "string",
"maxLength": 3000
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"description": "Your own wording for the packet acknowledgment. Passing this object turns the acknowledgment on. Any part left out keeps the service wording; the sheet notes which parts are the sender's."
},
{
"type": "null"
}
],
"description": "The sender's own wording for it, when given"
},
"combinedSha256": {
"description": "SHA-256 of the combined, sealed packet PDF (GET /packets/{id}/file): every document followed by its certificate, then the packet audit; null until every document is completed",
"type": [
"string",
"null"
]
},
"combinedTimestampedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
],
"description": "Trusted timestamp on the combined packet PDF"
},
"status": {
"type": "string",
"enum": [
"DRAFT",
"PENDING",
"COMPLETED",
"DECLINED",
"VOIDED",
"EXPIRED"
],
"description": "Derived: DRAFT until sent, PENDING while any document is open, COMPLETED when every document completed, else the closing state"
},
"owner": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"email": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"email",
"name"
],
"additionalProperties": false
},
"tokenTtlDays": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"sentAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"completedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"createdAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"updatedAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"documents": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"message": {
"type": [
"string",
"null"
]
},
"status": {
"type": "string",
"enum": [
"DRAFT",
"PENDING",
"COMPLETED",
"DECLINED",
"VOIDED",
"EXPIRED"
]
},
"kind": {
"type": "string",
"enum": [
"DOCUMENT",
"AGENT_AUTHORIZATION",
"ATTACHMENT",
"PACKET_ACKNOWLEDGMENT"
],
"description": "ATTACHMENT: a packet attachment (for review, or with an acknowledgment sheet). PACKET_ACKNOWLEDGMENT: the sealed last step of a packet, one per signer."
},
"signingOrder": {
"type": "string",
"enum": [
"PARALLEL",
"SEQUENTIAL"
]
},
"pageCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"owner": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"email": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"email",
"name"
],
"additionalProperties": false
},
"templateId": {
"type": [
"string",
"null"
]
},
"expiresAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"tokenTtlDays": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"reminderEveryDays": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"originalSha256": {
"description": "SHA-256 of the uploaded PDF",
"type": [
"string",
"null"
]
},
"assembledSha256": {
"description": "SHA-256 of the PDF with the generated signature page added; null when none",
"type": [
"string",
"null"
]
},
"signaturePageText": {
"description": "Plain-text rendering of the generated signature page(s), to check the result without vision",
"type": [
"string",
"null"
]
},
"finalSha256": {
"type": [
"string",
"null"
]
},
"hasFinal": {
"type": "boolean"
},
"hasCertificate": {
"type": "boolean"
},
"sentAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"completedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"declinedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"voidedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"voidReason": {
"type": [
"string",
"null"
]
},
"expiredAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"createdAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"updatedAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"recipients": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"email": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"SIGNER",
"CC",
"VIEWER"
]
},
"order": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"status": {
"type": "string",
"enum": [
"PENDING",
"VIEWED",
"CONSENTED",
"SIGNED",
"DECLINED"
]
},
"hasAccessCode": {
"type": "boolean"
},
"notifiedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"viewedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"consentedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"signedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"declinedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"declineReason": {
"type": [
"string",
"null"
]
},
"tokenExpiresAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"isTurn": {
"type": "boolean",
"description": "true when this recipient may act now"
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"recipientId": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"SIGNATURE",
"INITIALS",
"NAME",
"EMAIL",
"DATE",
"TEXT",
"CHECKBOX"
]
},
"label": {
"type": [
"string",
"null"
]
},
"page": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
},
"required": {
"type": "boolean"
},
"value": {
"type": [
"string",
"null"
]
},
"signedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"placedBy": {
"type": "string",
"enum": [
"COORD",
"ANCHOR"
]
},
"align": {
"anyOf": [
{
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"recipientId",
"type",
"label",
"page",
"x",
"y",
"width",
"height",
"required",
"value",
"signedAt",
"placedBy",
"align"
],
"additionalProperties": false
},
"description": "This recipient's fields (also listed at the document level)"
}
},
"required": [
"id",
"name",
"email",
"role",
"order",
"status",
"hasAccessCode",
"notifiedAt",
"viewedAt",
"consentedAt",
"signedAt",
"declinedAt",
"declineReason",
"tokenExpiresAt",
"isTurn",
"fields"
],
"additionalProperties": false
}
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"recipientId": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"SIGNATURE",
"INITIALS",
"NAME",
"EMAIL",
"DATE",
"TEXT",
"CHECKBOX"
]
},
"label": {
"type": [
"string",
"null"
]
},
"page": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
},
"required": {
"type": "boolean"
},
"value": {
"type": [
"string",
"null"
]
},
"signedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"placedBy": {
"type": "string",
"enum": [
"COORD",
"ANCHOR"
]
},
"align": {
"anyOf": [
{
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"recipientId",
"type",
"label",
"page",
"x",
"y",
"width",
"height",
"required",
"value",
"signedAt",
"placedBy",
"align"
],
"additionalProperties": false
}
},
"packet": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"position": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"count": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"orderLocked": {
"type": "boolean"
}
},
"required": [
"id",
"title",
"position",
"count",
"orderLocked"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Set when the document is one of several in a packet"
},
"testMode": {
"type": "boolean"
},
"dateFormat": {
"type": "string"
},
"timeZone": {
"type": "string"
},
"timestamp": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"none",
"done",
"pending"
]
},
"authority": {
"type": [
"string",
"null"
]
},
"at": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
}
},
"required": [
"status",
"authority",
"at"
],
"additionalProperties": false,
"description": "Trusted RFC 3161 timestamp on the seal: done, pending (the authorities were unreachable at sealing; retried by the worker), or none (not completed yet)"
},
"signatureSpots": {
"description": "Only on a create response with detectSpots: true",
"type": "array",
"items": {
"type": "object",
"properties": {
"spot": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "1-based number in reading order; use it as { \"spot\": n } in a recipient's fields"
},
"page": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"kind": {
"type": "string",
"enum": [
"signature",
"initials",
"date",
"name",
"title",
"text"
]
},
"description": {
"type": "string",
"description": "Plain English: what the line is and what is printed around it"
},
"label": {
"type": [
"string",
"null"
]
},
"textBelow": {
"type": [
"string",
"null"
]
},
"block": {
"type": [
"string",
"null"
]
},
"pairedDate": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "For a signature spot: the date spot on the same row"
},
"pairedSignature": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"line": {
"type": "object",
"properties": {
"x1": {
"type": "number"
},
"x2": {
"type": "number"
},
"y": {
"type": "number"
}
},
"required": [
"x1",
"x2",
"y"
],
"additionalProperties": false,
"description": "The drawn line, top-left origin in PDF points"
},
"box": {
"type": "object",
"properties": {
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
}
},
"required": [
"x",
"y",
"width",
"height"
],
"additionalProperties": false,
"description": "The field box directly above the line"
}
},
"required": [
"spot",
"page",
"kind",
"description",
"label",
"textBelow",
"block",
"pairedDate",
"pairedSignature",
"line",
"box"
],
"additionalProperties": false,
"description": "Signature spot"
}
}
},
"required": [
"id",
"title",
"message",
"status",
"kind",
"signingOrder",
"pageCount",
"owner",
"templateId",
"expiresAt",
"tokenTtlDays",
"reminderEveryDays",
"originalSha256",
"assembledSha256",
"signaturePageText",
"finalSha256",
"hasFinal",
"hasCertificate",
"sentAt",
"completedAt",
"declinedAt",
"voidedAt",
"voidReason",
"expiredAt",
"createdAt",
"updatedAt",
"recipients",
"fields",
"packet",
"testMode",
"dateFormat",
"timeZone",
"timestamp"
],
"additionalProperties": false,
"description": "Document"
},
"description": "In packet order; each carries packet.position"
},
"signers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"email": {
"type": "string"
},
"documents": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "How many documents in the packet this person signs"
},
"order": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "Packet-wide order group (SEQUENTIAL packets), else null"
},
"waitingOn": {
"type": "array",
"items": {
"type": "string"
},
"description": "Who must finish before this person's turn comes"
},
"signed": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"declined": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"isTurn": {
"type": "boolean",
"description": "true when at least one document is waiting on this person now"
},
"notifiedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
}
},
"required": [
"name",
"email",
"documents",
"order",
"waitingOn",
"signed",
"declined",
"isTurn",
"notifiedAt"
],
"additionalProperties": false
}
}
},
"required": [
"id",
"title",
"message",
"orderLocked",
"acknowledgment",
"signingOrder",
"acknowledgmentText",
"combinedSha256",
"combinedTimestampedAt",
"status",
"owner",
"tokenTtlDays",
"sentAt",
"completedAt",
"createdAt",
"updatedAt",
"documents",
"signers"
],
"additionalProperties": false,
"description": "Packet"
}Void every pending document of a packet. Each recipient gets one email listing the cancelled documents. Documents that already completed stay completed.
Path parameters
id | string |
Example
curl -X POST "https://sign.prodevgroup.com/api/v1/packets/<id>/void" \
-H "Authorization: Bearer $PROSIGN_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Request body schema
{
"type": "object",
"properties": {
"reason": {
"anyOf": [
{
"type": "string",
"maxLength": 1000
},
{
"type": "null"
}
]
}
},
"description": "Void"
}Response schema (200)
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"message": {
"type": [
"string",
"null"
]
},
"orderLocked": {
"type": "boolean"
},
"acknowledgment": {
"type": "boolean",
"description": "Every signer ends with a sealed packet acknowledgment"
},
"signingOrder": {
"type": "string",
"enum": [
"PARALLEL",
"SEQUENTIAL"
],
"description": "Packet-wide order: SEQUENTIAL (one signer group at a time) or PARALLEL"
},
"acknowledgmentText": {
"anyOf": [
{
"type": "object",
"properties": {
"title": {
"description": "Default \"Packet Acknowledgment\"",
"anyOf": [
{
"type": "string",
"maxLength": 120
},
{
"type": "null"
}
]
},
"intro": {
"description": "Paragraph above the document list. Placeholders: {{packet}}, {{sender}}, {{signer}}, {{count}}",
"anyOf": [
{
"type": "string",
"maxLength": 1500
},
{
"type": "null"
}
]
},
"statement": {
"description": "The statement the signer signs under the list. Same placeholders. Default: the service wording (version 2026.1)",
"anyOf": [
{
"type": "string",
"maxLength": 3000
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"description": "Your own wording for the packet acknowledgment. Passing this object turns the acknowledgment on. Any part left out keeps the service wording; the sheet notes which parts are the sender's."
},
{
"type": "null"
}
],
"description": "The sender's own wording for it, when given"
},
"combinedSha256": {
"description": "SHA-256 of the combined, sealed packet PDF (GET /packets/{id}/file): every document followed by its certificate, then the packet audit; null until every document is completed",
"type": [
"string",
"null"
]
},
"combinedTimestampedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
],
"description": "Trusted timestamp on the combined packet PDF"
},
"status": {
"type": "string",
"enum": [
"DRAFT",
"PENDING",
"COMPLETED",
"DECLINED",
"VOIDED",
"EXPIRED"
],
"description": "Derived: DRAFT until sent, PENDING while any document is open, COMPLETED when every document completed, else the closing state"
},
"owner": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"email": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"email",
"name"
],
"additionalProperties": false
},
"tokenTtlDays": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"sentAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"completedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"createdAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"updatedAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"documents": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"message": {
"type": [
"string",
"null"
]
},
"status": {
"type": "string",
"enum": [
"DRAFT",
"PENDING",
"COMPLETED",
"DECLINED",
"VOIDED",
"EXPIRED"
]
},
"kind": {
"type": "string",
"enum": [
"DOCUMENT",
"AGENT_AUTHORIZATION",
"ATTACHMENT",
"PACKET_ACKNOWLEDGMENT"
],
"description": "ATTACHMENT: a packet attachment (for review, or with an acknowledgment sheet). PACKET_ACKNOWLEDGMENT: the sealed last step of a packet, one per signer."
},
"signingOrder": {
"type": "string",
"enum": [
"PARALLEL",
"SEQUENTIAL"
]
},
"pageCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"owner": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"email": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"email",
"name"
],
"additionalProperties": false
},
"templateId": {
"type": [
"string",
"null"
]
},
"expiresAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"tokenTtlDays": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"reminderEveryDays": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"originalSha256": {
"description": "SHA-256 of the uploaded PDF",
"type": [
"string",
"null"
]
},
"assembledSha256": {
"description": "SHA-256 of the PDF with the generated signature page added; null when none",
"type": [
"string",
"null"
]
},
"signaturePageText": {
"description": "Plain-text rendering of the generated signature page(s), to check the result without vision",
"type": [
"string",
"null"
]
},
"finalSha256": {
"type": [
"string",
"null"
]
},
"hasFinal": {
"type": "boolean"
},
"hasCertificate": {
"type": "boolean"
},
"sentAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"completedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"declinedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"voidedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"voidReason": {
"type": [
"string",
"null"
]
},
"expiredAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"createdAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"updatedAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"recipients": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"email": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"SIGNER",
"CC",
"VIEWER"
]
},
"order": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"status": {
"type": "string",
"enum": [
"PENDING",
"VIEWED",
"CONSENTED",
"SIGNED",
"DECLINED"
]
},
"hasAccessCode": {
"type": "boolean"
},
"notifiedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"viewedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"consentedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"signedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"declinedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"declineReason": {
"type": [
"string",
"null"
]
},
"tokenExpiresAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"isTurn": {
"type": "boolean",
"description": "true when this recipient may act now"
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"recipientId": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"SIGNATURE",
"INITIALS",
"NAME",
"EMAIL",
"DATE",
"TEXT",
"CHECKBOX"
]
},
"label": {
"type": [
"string",
"null"
]
},
"page": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
},
"required": {
"type": "boolean"
},
"value": {
"type": [
"string",
"null"
]
},
"signedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"placedBy": {
"type": "string",
"enum": [
"COORD",
"ANCHOR"
]
},
"align": {
"anyOf": [
{
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"recipientId",
"type",
"label",
"page",
"x",
"y",
"width",
"height",
"required",
"value",
"signedAt",
"placedBy",
"align"
],
"additionalProperties": false
},
"description": "This recipient's fields (also listed at the document level)"
}
},
"required": [
"id",
"name",
"email",
"role",
"order",
"status",
"hasAccessCode",
"notifiedAt",
"viewedAt",
"consentedAt",
"signedAt",
"declinedAt",
"declineReason",
"tokenExpiresAt",
"isTurn",
"fields"
],
"additionalProperties": false
}
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"recipientId": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"SIGNATURE",
"INITIALS",
"NAME",
"EMAIL",
"DATE",
"TEXT",
"CHECKBOX"
]
},
"label": {
"type": [
"string",
"null"
]
},
"page": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
},
"required": {
"type": "boolean"
},
"value": {
"type": [
"string",
"null"
]
},
"signedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"placedBy": {
"type": "string",
"enum": [
"COORD",
"ANCHOR"
]
},
"align": {
"anyOf": [
{
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"recipientId",
"type",
"label",
"page",
"x",
"y",
"width",
"height",
"required",
"value",
"signedAt",
"placedBy",
"align"
],
"additionalProperties": false
}
},
"packet": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"position": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"count": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"orderLocked": {
"type": "boolean"
}
},
"required": [
"id",
"title",
"position",
"count",
"orderLocked"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Set when the document is one of several in a packet"
},
"testMode": {
"type": "boolean"
},
"dateFormat": {
"type": "string"
},
"timeZone": {
"type": "string"
},
"timestamp": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"none",
"done",
"pending"
]
},
"authority": {
"type": [
"string",
"null"
]
},
"at": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
}
},
"required": [
"status",
"authority",
"at"
],
"additionalProperties": false,
"description": "Trusted RFC 3161 timestamp on the seal: done, pending (the authorities were unreachable at sealing; retried by the worker), or none (not completed yet)"
},
"signatureSpots": {
"description": "Only on a create response with detectSpots: true",
"type": "array",
"items": {
"type": "object",
"properties": {
"spot": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "1-based number in reading order; use it as { \"spot\": n } in a recipient's fields"
},
"page": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"kind": {
"type": "string",
"enum": [
"signature",
"initials",
"date",
"name",
"title",
"text"
]
},
"description": {
"type": "string",
"description": "Plain English: what the line is and what is printed around it"
},
"label": {
"type": [
"string",
"null"
]
},
"textBelow": {
"type": [
"string",
"null"
]
},
"block": {
"type": [
"string",
"null"
]
},
"pairedDate": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "For a signature spot: the date spot on the same row"
},
"pairedSignature": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"line": {
"type": "object",
"properties": {
"x1": {
"type": "number"
},
"x2": {
"type": "number"
},
"y": {
"type": "number"
}
},
"required": [
"x1",
"x2",
"y"
],
"additionalProperties": false,
"description": "The drawn line, top-left origin in PDF points"
},
"box": {
"type": "object",
"properties": {
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
}
},
"required": [
"x",
"y",
"width",
"height"
],
"additionalProperties": false,
"description": "The field box directly above the line"
}
},
"required": [
"spot",
"page",
"kind",
"description",
"label",
"textBelow",
"block",
"pairedDate",
"pairedSignature",
"line",
"box"
],
"additionalProperties": false,
"description": "Signature spot"
}
}
},
"required": [
"id",
"title",
"message",
"status",
"kind",
"signingOrder",
"pageCount",
"owner",
"templateId",
"expiresAt",
"tokenTtlDays",
"reminderEveryDays",
"originalSha256",
"assembledSha256",
"signaturePageText",
"finalSha256",
"hasFinal",
"hasCertificate",
"sentAt",
"completedAt",
"declinedAt",
"voidedAt",
"voidReason",
"expiredAt",
"createdAt",
"updatedAt",
"recipients",
"fields",
"packet",
"testMode",
"dateFormat",
"timeZone",
"timestamp"
],
"additionalProperties": false,
"description": "Document"
},
"description": "In packet order; each carries packet.position"
},
"signers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"email": {
"type": "string"
},
"documents": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "How many documents in the packet this person signs"
},
"order": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "Packet-wide order group (SEQUENTIAL packets), else null"
},
"waitingOn": {
"type": "array",
"items": {
"type": "string"
},
"description": "Who must finish before this person's turn comes"
},
"signed": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"declined": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"isTurn": {
"type": "boolean",
"description": "true when at least one document is waiting on this person now"
},
"notifiedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
}
},
"required": [
"name",
"email",
"documents",
"order",
"waitingOn",
"signed",
"declined",
"isTurn",
"notifiedAt"
],
"additionalProperties": false
}
}
},
"required": [
"id",
"title",
"message",
"orderLocked",
"acknowledgment",
"signingOrder",
"acknowledgmentText",
"combinedSha256",
"combinedTimestampedAt",
"status",
"owner",
"tokenTtlDays",
"sentAt",
"completedAt",
"createdAt",
"updatedAt",
"documents",
"signers"
],
"additionalProperties": false,
"description": "Packet"
}Remind every signer who still has documents to sign. One reminder email per signer, listing their open documents, with a fresh packet link.
Path parameters
id | string |
Example
curl -X POST "https://sign.prodevgroup.com/api/v1/packets/<id>/remind" \
-H "Authorization: Bearer $PROSIGN_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Request body schema
{
"type": "object",
"properties": {
"note": {
"description": "Personal paragraph inserted after the greeting of the default message and email",
"anyOf": [
{
"type": "string",
"maxLength": 4000
},
{
"type": "null"
}
]
},
"messageTemplate": {
"description": "Replaces the ready-to-send text entirely. Placeholders: {{firstName}} {{name}} {{title}} {{signUrl}} {{readUrl}} {{senderName}}. The signing link is appended if missing.",
"anyOf": [
{
"type": "string",
"maxLength": 4000
},
{
"type": "null"
}
]
}
},
"description": "Message options"
}Response schema (200)
{
"type": "object",
"properties": {
"reminded": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"required": [
"reminded"
],
"additionalProperties": false
}Issue a packet signing link (and a packet read-only link) for one signer. The link opens every document of the packet this person signs. Also returns a read-only link covering all of them and a ready-to-send message with both, which you can personalize with note or messageTemplate.
Path parameters
id | string |
email | string |
Example
curl -X POST "https://sign.prodevgroup.com/api/v1/packets/<id>/signers/<email>/link" \
-H "Authorization: Bearer $PROSIGN_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Request body schema
{
"type": "object",
"properties": {
"note": {
"description": "Personal paragraph inserted after the greeting of the default message and email",
"anyOf": [
{
"type": "string",
"maxLength": 4000
},
{
"type": "null"
}
]
},
"messageTemplate": {
"description": "Replaces the ready-to-send text entirely. Placeholders: {{firstName}} {{name}} {{title}} {{signUrl}} {{readUrl}} {{senderName}}. The signing link is appended if missing.",
"anyOf": [
{
"type": "string",
"maxLength": 4000
},
{
"type": "null"
}
]
}
},
"description": "Message options"
}Response schema (200)
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Signing link for this recipient (unique per issue)"
},
"readOnlyUrl": {
"type": "string",
"description": "Read-only link the recipient can give to an AI assistant; it cannot sign, consent or decline"
},
"expiresAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"message": {
"type": "string",
"description": "Ready-to-send text (SMS or email) with both links"
}
},
"required": [
"url",
"readOnlyUrl",
"expiresAt",
"message"
],
"additionalProperties": false
}Download the whole packet as one sealed PDF. Every document in packet order, each followed by its own certificate of completion, then the packet audit (every sealed part by SHA-256, every person's actions, the timeline), sealed and timestamped as one file. 409 not_available until every document of the packet is COMPLETED. Each document's own sealed PDF stays at GET /documents/{id}/file.
Path parameters
id | string |
Example
curl -X GET "https://sign.prodevgroup.com/api/v1/packets/<id>/file" \ -H "Authorization: Bearer $PROSIGN_API_KEY" \ -o output.pdf
Response: PDF bytes (application/pdf)
Templates
Create a template. A reusable PDF with named roles and fields. Send multipart/form-data ("file" + "payload") or JSON with fileBase64. With useAnchors, tags in the PDF become fields assigned to the role with that order.
Example
curl -X POST "https://sign.prodevgroup.com/api/v1/templates" \
-H "Authorization: Bearer $PROSIGN_API_KEY" \
-F "file=@contract.pdf;type=application/pdf" \
-F 'payload={"title":"string","roles":[{"order":1,"name":"string","role":"SIGNER"}],"useAnchors":true}'
Request body schema (JSON body, or the "payload" part of multipart/form-data next to a "file" part)
{
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 300
},
"message": {
"anyOf": [
{
"type": "string",
"maxLength": 5000
},
{
"type": "null"
}
]
},
"roles": {
"minItems": 1,
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"order": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Role name, e.g. \"Homeowner\""
},
"role": {
"type": "string",
"enum": [
"SIGNER",
"CC",
"VIEWER"
]
}
},
"required": [
"order",
"name",
"role"
]
}
},
"fields": {
"maxItems": 500,
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"SIGNATURE",
"INITIALS",
"NAME",
"EMAIL",
"DATE",
"TEXT",
"CHECKBOX"
]
},
"page": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991,
"description": "1-based page number"
},
"x": {
"type": "number",
"minimum": 0,
"description": "Left edge in PDF points, top-left origin"
},
"y": {
"type": "number",
"minimum": 0,
"description": "Top edge in PDF points, top-left origin"
},
"width": {
"type": "number",
"exclusiveMinimum": 0
},
"height": {
"type": "number",
"exclusiveMinimum": 0
},
"label": {
"description": "Label shown to the signer (TEXT and CHECKBOX fields)",
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
]
},
"required": {
"type": "boolean"
},
"align": {
"description": "Where the signature, initials or text sits inside the box. Default: center for SIGNATURE and INITIALS, left for text fields. Anchor tags take it as a last part: {{signature:1:right}}, {{text:1:Policy number:center}}.",
"anyOf": [
{
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
{
"type": "null"
}
]
},
"roleOrder": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
}
},
"required": [
"type",
"page",
"x",
"y",
"width",
"height",
"roleOrder"
]
},
{
"type": "object",
"properties": {
"spot": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991,
"description": "A spot number from GET /documents/{id}/signature-spots (or from detectSpots:true at creation). The field takes the spot's page, box and kind: a signature line becomes a SIGNATURE field, a date line a DATE field, and so on."
},
"type": {
"description": "Override the kind the spot implies",
"anyOf": [
{
"type": "string",
"enum": [
"SIGNATURE",
"INITIALS",
"NAME",
"EMAIL",
"DATE",
"TEXT",
"CHECKBOX"
]
},
{
"type": "null"
}
]
},
"label": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
]
},
"required": {
"type": "boolean"
},
"align": {
"anyOf": [
{
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
{
"type": "null"
}
]
},
"roleOrder": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
}
},
"required": [
"spot",
"roleOrder"
]
}
]
}
},
"useAnchors": {
"description": "Find anchor tags now and store them as fields by role order",
"type": "boolean"
},
"fileBase64": {
"description": "The PDF as base64 (JSON requests only)",
"type": "string"
}
},
"required": [
"title",
"roles"
],
"description": "Create template"
}Response schema (201)
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"message": {
"type": [
"string",
"null"
]
},
"pageCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"sha256": {
"type": "string"
},
"roles": {
"type": "array",
"items": {
"type": "object",
"properties": {
"order": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Role name, e.g. \"Homeowner\""
},
"role": {
"type": "string",
"enum": [
"SIGNER",
"CC",
"VIEWER"
]
}
},
"required": [
"order",
"name",
"role"
],
"additionalProperties": false
}
},
"fields": {
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"SIGNATURE",
"INITIALS",
"NAME",
"EMAIL",
"DATE",
"TEXT",
"CHECKBOX"
]
},
"page": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991,
"description": "1-based page number"
},
"x": {
"type": "number",
"minimum": 0,
"description": "Left edge in PDF points, top-left origin"
},
"y": {
"type": "number",
"minimum": 0,
"description": "Top edge in PDF points, top-left origin"
},
"width": {
"type": "number",
"exclusiveMinimum": 0
},
"height": {
"type": "number",
"exclusiveMinimum": 0
},
"label": {
"description": "Label shown to the signer (TEXT and CHECKBOX fields)",
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
]
},
"required": {
"type": "boolean"
},
"align": {
"description": "Where the signature, initials or text sits inside the box. Default: center for SIGNATURE and INITIALS, left for text fields. Anchor tags take it as a last part: {{signature:1:right}}, {{text:1:Policy number:center}}.",
"anyOf": [
{
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
{
"type": "null"
}
]
},
"roleOrder": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
}
},
"required": [
"type",
"page",
"x",
"y",
"width",
"height",
"roleOrder"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"spot": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991,
"description": "A spot number from GET /documents/{id}/signature-spots (or from detectSpots:true at creation). The field takes the spot's page, box and kind: a signature line becomes a SIGNATURE field, a date line a DATE field, and so on."
},
"type": {
"description": "Override the kind the spot implies",
"anyOf": [
{
"type": "string",
"enum": [
"SIGNATURE",
"INITIALS",
"NAME",
"EMAIL",
"DATE",
"TEXT",
"CHECKBOX"
]
},
{
"type": "null"
}
]
},
"label": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
]
},
"required": {
"type": "boolean"
},
"align": {
"anyOf": [
{
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
{
"type": "null"
}
]
},
"roleOrder": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
}
},
"required": [
"spot",
"roleOrder"
],
"additionalProperties": false
}
]
}
},
"createdAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"updatedAt": {
"type": "string",
"description": "ISO 8601 date-time"
}
},
"required": [
"id",
"title",
"message",
"pageCount",
"sha256",
"roles",
"fields",
"createdAt",
"updatedAt"
],
"additionalProperties": false,
"description": "Template"
}List templates.
Example
curl -X GET "https://sign.prodevgroup.com/api/v1/templates" \ -H "Authorization: Bearer $PROSIGN_API_KEY"
Response schema (200)
{
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"message": {
"type": [
"string",
"null"
]
},
"pageCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"sha256": {
"type": "string"
},
"roles": {
"type": "array",
"items": {
"type": "object",
"properties": {
"order": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Role name, e.g. \"Homeowner\""
},
"role": {
"type": "string",
"enum": [
"SIGNER",
"CC",
"VIEWER"
]
}
},
"required": [
"order",
"name",
"role"
],
"additionalProperties": false
}
},
"fields": {
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"SIGNATURE",
"INITIALS",
"NAME",
"EMAIL",
"DATE",
"TEXT",
"CHECKBOX"
]
},
"page": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991,
"description": "1-based page number"
},
"x": {
"type": "number",
"minimum": 0,
"description": "Left edge in PDF points, top-left origin"
},
"y": {
"type": "number",
"minimum": 0,
"description": "Top edge in PDF points, top-left origin"
},
"width": {
"type": "number",
"exclusiveMinimum": 0
},
"height": {
"type": "number",
"exclusiveMinimum": 0
},
"label": {
"description": "Label shown to the signer (TEXT and CHECKBOX fields)",
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
]
},
"required": {
"type": "boolean"
},
"align": {
"description": "Where the signature, initials or text sits inside the box. Default: center for SIGNATURE and INITIALS, left for text fields. Anchor tags take it as a last part: {{signature:1:right}}, {{text:1:Policy number:center}}.",
"anyOf": [
{
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
{
"type": "null"
}
]
},
"roleOrder": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
}
},
"required": [
"type",
"page",
"x",
"y",
"width",
"height",
"roleOrder"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"spot": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991,
"description": "A spot number from GET /documents/{id}/signature-spots (or from detectSpots:true at creation). The field takes the spot's page, box and kind: a signature line becomes a SIGNATURE field, a date line a DATE field, and so on."
},
"type": {
"description": "Override the kind the spot implies",
"anyOf": [
{
"type": "string",
"enum": [
"SIGNATURE",
"INITIALS",
"NAME",
"EMAIL",
"DATE",
"TEXT",
"CHECKBOX"
]
},
{
"type": "null"
}
]
},
"label": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
]
},
"required": {
"type": "boolean"
},
"align": {
"anyOf": [
{
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
{
"type": "null"
}
]
},
"roleOrder": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
}
},
"required": [
"spot",
"roleOrder"
],
"additionalProperties": false
}
]
}
},
"createdAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"updatedAt": {
"type": "string",
"description": "ISO 8601 date-time"
}
},
"required": [
"id",
"title",
"message",
"pageCount",
"sha256",
"roles",
"fields",
"createdAt",
"updatedAt"
],
"additionalProperties": false,
"description": "Template"
}
}
},
"required": [
"items"
],
"additionalProperties": false
}Get a template.
Path parameters
id | string |
Example
curl -X GET "https://sign.prodevgroup.com/api/v1/templates/<id>" \ -H "Authorization: Bearer $PROSIGN_API_KEY"
Response schema (200)
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"message": {
"type": [
"string",
"null"
]
},
"pageCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"sha256": {
"type": "string"
},
"roles": {
"type": "array",
"items": {
"type": "object",
"properties": {
"order": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Role name, e.g. \"Homeowner\""
},
"role": {
"type": "string",
"enum": [
"SIGNER",
"CC",
"VIEWER"
]
}
},
"required": [
"order",
"name",
"role"
],
"additionalProperties": false
}
},
"fields": {
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"SIGNATURE",
"INITIALS",
"NAME",
"EMAIL",
"DATE",
"TEXT",
"CHECKBOX"
]
},
"page": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991,
"description": "1-based page number"
},
"x": {
"type": "number",
"minimum": 0,
"description": "Left edge in PDF points, top-left origin"
},
"y": {
"type": "number",
"minimum": 0,
"description": "Top edge in PDF points, top-left origin"
},
"width": {
"type": "number",
"exclusiveMinimum": 0
},
"height": {
"type": "number",
"exclusiveMinimum": 0
},
"label": {
"description": "Label shown to the signer (TEXT and CHECKBOX fields)",
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
]
},
"required": {
"type": "boolean"
},
"align": {
"description": "Where the signature, initials or text sits inside the box. Default: center for SIGNATURE and INITIALS, left for text fields. Anchor tags take it as a last part: {{signature:1:right}}, {{text:1:Policy number:center}}.",
"anyOf": [
{
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
{
"type": "null"
}
]
},
"roleOrder": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
}
},
"required": [
"type",
"page",
"x",
"y",
"width",
"height",
"roleOrder"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"spot": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991,
"description": "A spot number from GET /documents/{id}/signature-spots (or from detectSpots:true at creation). The field takes the spot's page, box and kind: a signature line becomes a SIGNATURE field, a date line a DATE field, and so on."
},
"type": {
"description": "Override the kind the spot implies",
"anyOf": [
{
"type": "string",
"enum": [
"SIGNATURE",
"INITIALS",
"NAME",
"EMAIL",
"DATE",
"TEXT",
"CHECKBOX"
]
},
{
"type": "null"
}
]
},
"label": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
]
},
"required": {
"type": "boolean"
},
"align": {
"anyOf": [
{
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
{
"type": "null"
}
]
},
"roleOrder": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
}
},
"required": [
"spot",
"roleOrder"
],
"additionalProperties": false
}
]
}
},
"createdAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"updatedAt": {
"type": "string",
"description": "ISO 8601 date-time"
}
},
"required": [
"id",
"title",
"message",
"pageCount",
"sha256",
"roles",
"fields",
"createdAt",
"updatedAt"
],
"additionalProperties": false,
"description": "Template"
}Delete a template. Documents already created from it are not affected.
Path parameters
id | string |
Example
curl -X DELETE "https://sign.prodevgroup.com/api/v1/templates/<id>" \ -H "Authorization: Bearer $PROSIGN_API_KEY"
Response: Deleted
Create a document from a template. Map each template role (by order) to a real person, optionally prefill TEXT fields by label, and optionally send. Supports Idempotency-Key.
Path parameters
id | string |
Example
curl -X POST "https://sign.prodevgroup.com/api/v1/templates/<id>/documents" \
-H "Authorization: Bearer $PROSIGN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"recipients":[{"roleOrder":1,"name":"string","email":"lori@example.com"}],"send":true}'
Request body schema
{
"type": "object",
"properties": {
"title": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 300
},
{
"type": "null"
}
]
},
"message": {
"anyOf": [
{
"type": "string",
"maxLength": 5000
},
{
"type": "null"
}
]
},
"recipients": {
"minItems": 1,
"maxItems": 50,
"type": "array",
"items": {
"type": "object",
"properties": {
"roleOrder": {
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"email": {
"type": "string",
"maxLength": 320,
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"accessCode": {
"anyOf": [
{
"type": "string",
"minLength": 4,
"maxLength": 64
},
{
"type": "null"
}
]
}
},
"required": [
"roleOrder",
"name",
"email"
]
}
},
"prefill": {
"description": "TEXT field values by label",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string",
"maxLength": 2000
}
},
"signingOrder": {
"type": "string",
"enum": [
"PARALLEL",
"SEQUENTIAL"
]
},
"expiresInDays": {
"anyOf": [
{
"type": "integer",
"minimum": 1,
"maximum": 365
},
{
"type": "null"
}
]
},
"tokenTtlDays": {
"anyOf": [
{
"type": "integer",
"minimum": 1,
"maximum": 365
},
{
"type": "null"
}
]
},
"reminderEveryDays": {
"anyOf": [
{
"type": "integer",
"minimum": 1,
"maximum": 90
},
{
"type": "null"
}
]
},
"send": {
"type": "boolean"
}
},
"required": [
"recipients"
],
"description": "Create a document from a template"
}Response schema (201)
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"message": {
"type": [
"string",
"null"
]
},
"status": {
"type": "string",
"enum": [
"DRAFT",
"PENDING",
"COMPLETED",
"DECLINED",
"VOIDED",
"EXPIRED"
]
},
"kind": {
"type": "string",
"enum": [
"DOCUMENT",
"AGENT_AUTHORIZATION",
"ATTACHMENT",
"PACKET_ACKNOWLEDGMENT"
],
"description": "ATTACHMENT: a packet attachment (for review, or with an acknowledgment sheet). PACKET_ACKNOWLEDGMENT: the sealed last step of a packet, one per signer."
},
"signingOrder": {
"type": "string",
"enum": [
"PARALLEL",
"SEQUENTIAL"
]
},
"pageCount": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"owner": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"email": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"email",
"name"
],
"additionalProperties": false
},
"templateId": {
"type": [
"string",
"null"
]
},
"expiresAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"tokenTtlDays": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"reminderEveryDays": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"originalSha256": {
"description": "SHA-256 of the uploaded PDF",
"type": [
"string",
"null"
]
},
"assembledSha256": {
"description": "SHA-256 of the PDF with the generated signature page added; null when none",
"type": [
"string",
"null"
]
},
"signaturePageText": {
"description": "Plain-text rendering of the generated signature page(s), to check the result without vision",
"type": [
"string",
"null"
]
},
"finalSha256": {
"type": [
"string",
"null"
]
},
"hasFinal": {
"type": "boolean"
},
"hasCertificate": {
"type": "boolean"
},
"sentAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"completedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"declinedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"voidedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"voidReason": {
"type": [
"string",
"null"
]
},
"expiredAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"createdAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"updatedAt": {
"type": "string",
"description": "ISO 8601 date-time"
},
"recipients": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"email": {
"type": "string"
},
"role": {
"type": "string",
"enum": [
"SIGNER",
"CC",
"VIEWER"
]
},
"order": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"status": {
"type": "string",
"enum": [
"PENDING",
"VIEWED",
"CONSENTED",
"SIGNED",
"DECLINED"
]
},
"hasAccessCode": {
"type": "boolean"
},
"notifiedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"viewedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"consentedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"signedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"declinedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"declineReason": {
"type": [
"string",
"null"
]
},
"tokenExpiresAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"isTurn": {
"type": "boolean",
"description": "true when this recipient may act now"
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"recipientId": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"SIGNATURE",
"INITIALS",
"NAME",
"EMAIL",
"DATE",
"TEXT",
"CHECKBOX"
]
},
"label": {
"type": [
"string",
"null"
]
},
"page": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
},
"required": {
"type": "boolean"
},
"value": {
"type": [
"string",
"null"
]
},
"signedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"placedBy": {
"type": "string",
"enum": [
"COORD",
"ANCHOR"
]
},
"align": {
"anyOf": [
{
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"recipientId",
"type",
"label",
"page",
"x",
"y",
"width",
"height",
"required",
"value",
"signedAt",
"placedBy",
"align"
],
"additionalProperties": false
},
"description": "This recipient's fields (also listed at the document level)"
}
},
"required": [
"id",
"name",
"email",
"role",
"order",
"status",
"hasAccessCode",
"notifiedAt",
"viewedAt",
"consentedAt",
"signedAt",
"declinedAt",
"declineReason",
"tokenExpiresAt",
"isTurn",
"fields"
],
"additionalProperties": false
}
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"recipientId": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"SIGNATURE",
"INITIALS",
"NAME",
"EMAIL",
"DATE",
"TEXT",
"CHECKBOX"
]
},
"label": {
"type": [
"string",
"null"
]
},
"page": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
},
"required": {
"type": "boolean"
},
"value": {
"type": [
"string",
"null"
]
},
"signedAt": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
},
"placedBy": {
"type": "string",
"enum": [
"COORD",
"ANCHOR"
]
},
"align": {
"anyOf": [
{
"type": "string",
"enum": [
"left",
"center",
"right"
]
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"recipientId",
"type",
"label",
"page",
"x",
"y",
"width",
"height",
"required",
"value",
"signedAt",
"placedBy",
"align"
],
"additionalProperties": false
}
},
"packet": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"position": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"count": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"orderLocked": {
"type": "boolean"
}
},
"required": [
"id",
"title",
"position",
"count",
"orderLocked"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Set when the document is one of several in a packet"
},
"testMode": {
"type": "boolean"
},
"dateFormat": {
"type": "string"
},
"timeZone": {
"type": "string"
},
"timestamp": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"none",
"done",
"pending"
]
},
"authority": {
"type": [
"string",
"null"
]
},
"at": {
"anyOf": [
{
"type": "string",
"description": "ISO 8601 date-time"
},
{
"type": "null"
}
]
}
},
"required": [
"status",
"authority",
"at"
],
"additionalProperties": false,
"description": "Trusted RFC 3161 timestamp on the seal: done, pending (the authorities were unreachable at sealing; retried by the worker), or none (not completed yet)"
},
"signatureSpots": {
"description": "Only on a create response with detectSpots: true",
"type": "array",
"items": {
"type": "object",
"properties": {
"spot": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "1-based number in reading order; use it as { \"spot\": n } in a recipient's fields"
},
"page": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"kind": {
"type": "string",
"enum": [
"signature",
"initials",
"date",
"name",
"title",
"text"
]
},
"description": {
"type": "string",
"description": "Plain English: what the line is and what is printed around it"
},
"label": {
"type": [
"string",
"null"
]
},
"textBelow": {
"type": [
"string",
"null"
]
},
"block": {
"type": [
"string",
"null"
]
},
"pairedDate": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
],
"description": "For a signature spot: the date spot on the same row"
},
"pairedSignature": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
},
"line": {
"type": "object",
"properties": {
"x1": {
"type": "number"
},
"x2": {
"type": "number"
},
"y": {
"type": "number"
}
},
"required": [
"x1",
"x2",
"y"
],
"additionalProperties": false,
"description": "The drawn line, top-left origin in PDF points"
},
"box": {
"type": "object",
"properties": {
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"width": {
"type": "number"
},
"height": {
"type": "number"
}
},
"required": [
"x",
"y",
"width",
"height"
],
"additionalProperties": false,
"description": "The field box directly above the line"
}
},
"required": [
"spot",
"page",
"kind",
"description",
"label",
"textBelow",
"block",
"pairedDate",
"pairedSignature",
"line",
"box"
],
"additionalProperties": false,
"description": "Signature spot"
}
}
},
"required": [
"id",
"title",
"message",
"status",
"kind",
"signingOrder",
"pageCount",
"owner",
"templateId",
"expiresAt",
"tokenTtlDays",
"reminderEveryDays",
"originalSha256",
"assembledSha256",
"signaturePageText",
"finalSha256",
"hasFinal",
"hasCertificate",
"sentAt",
"completedAt",
"declinedAt",
"voidedAt",
"voidReason",
"expiredAt",
"createdAt",
"updatedAt",
"recipients",
"fields",
"packet",
"testMode",
"dateFormat",
"timeZone",
"timestamp"
],
"additionalProperties": false,
"description": "Document"
}