Raw schema
{
"type": "object",
"properties": {
"renderId": {
"type": "string",
"format": "uuid",
"description": "Render UUID returned by render_pdf or any /v1/render call. The render's PDF is the document the signer will receive."
},
"signerEmail": {
"type": "string",
"format": "email",
"description": "Recipient email address."
},
"signerName": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "Recipient full name. Must be typed verbatim by the signer to confirm intent."
},
"position": {
"type": "object",
"properties": {
"page": {
"type": "integer",
"minimum": 1,
"maximum": 500
},
"x": {
"type": "number",
"minimum": 0,
"maximum": 2000
},
"y": {
"type": "number",
"minimum": 0,
"maximum": 2000
},
"w": {
"type": "number",
"minimum": 40,
"maximum": 800
},
"h": {
"type": "number",
"minimum": 20,
"maximum": 400
}
},
"additionalProperties": false,
"description": "Optional sender-chosen signature placement in PDF points (72 dpi, origin bottom-left). Defaults to bottom-right of the last page sized 220Γ64 pt; when omitted, the signer can drag the placeholder on the sign page."
},
"message": {
"type": "string",
"maxLength": 500,
"description": "Optional message rendered in the email invitation body."
},
"authMethod": {
"type": "string",
"enum": [
"link",
"sms_otp",
"email_otp"
],
"description": "Identity-verification mode. `link` (default) β possession of the secret URL is the only check. `email_otp` β sign page renders a 6-digit OTP gate; code emailed to `signerEmail`. `sms_otp` β same gate, code texted to `signerPhone` (which must then be supplied). Recommend `email_otp` for higher-value transactions."
},
"signerPhone": {
"type": "string",
"pattern": "^\\+[1-9]\\d{6,14}$",
"description": "E.164 phone number. Required when `authMethod` is `sms_otp`; ignored otherwise. Example: `+14155551234`."
},
"ccEmails": {
"type": "array",
"items": {
"type": "string",
"format": "email"
},
"maxItems": 10,
"description": "Up to 10 observer addresses CC'd on the invite and the completion notice. Not signers themselves."
},
"expiresIn": {
"type": "integer",
"minimum": 3600,
"maximum": 2592000,
"description": "How long (seconds) the sign link stays valid. Defaults to 30 days. Min 1 hour, max 30 days."
},
"reminderCadenceHours": {
"type": "integer",
"minimum": 24,
"maximum": 168,
"description": "When set (24β168), the auto-reminder cron resends the invite every N hours while the request stays pending, up to 3 reminders. Omit for no auto-reminders."
},
"signOnEveryPage": {
"type": "boolean",
"description": "When true, the server stamps the signer's signature on every page of the source PDF instead of only the configured position. Common B2B contract pattern."
},
"requireStamp": {
"type": "boolean",
"description": "Require the signer to upload a company stamp / seal alongside their personal signature (UAE, KSA, JP, KR, IN, CN B2B workflows). Server refuses to seal without one."
},
"signatureTemplateId": {
"type": "string",
"format": "uuid",
"description": "Apply a signature template's defaults (placedFields, position, message, expiresIn, ccEmails). Request-level fields override the template."
},
"placedFields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "Unique field name within the request."
},
"type": {
"type": "string",
"enum": [
"text",
"textarea",
"checkbox",
"date",
"initials",
"radio",
"dropdown"
]
},
"page": {
"type": "integer",
"minimum": 1,
"maximum": 500,
"description": "1-indexed page number."
},
"x": {
"type": "number",
"minimum": 0,
"maximum": 2000,
"description": "Bottom-left x in PDF points."
},
"y": {
"type": "number",
"minimum": 0,
"maximum": 2000,
"description": "Bottom-left y in PDF points."
},
"w": {
"type": "number",
"minimum": 8,
"maximum": 800,
"description": "Width in PDF points."
},
"h": {
"type": "number",
"minimum": 8,
"maximum": 800,
"description": "Height in PDF points."
},
"required": {
"type": "boolean"
},
"defaultValue": {
"type": "string",
"maxLength": 2000
},
"signerLabel": {
"type": "string",
"maxLength": 200
},
"options": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"minItems": 1,
"maxItems": 50,
"description": "Valid choices for radio / dropdown."
},
"anchor": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Text anchor β server locates this string in the PDF and uses its position."
}
},
"required": [
"name",
"type",
"page",
"x",
"y",
"w",
"h"
],
"additionalProperties": false
},
"maxItems": 100,
"description": "Up to 100 sender-defined fillable fields stamped onto the PDF at sign time. Use for flat PDFs that don't ship AcroForm widgets. Names must be unique."
}
},
"required": [
"renderId",
"signerEmail",
"signerName"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}