E-Signature Envelopes
Drive the full document-signing lifecycle programmatically: upload a PDF, place fields, assign recipients to signer slots, send for signature, chase pending signers, and download the sealed result with its audit trail.
All paths on this page are relative to https://api.autessa.com/autessa_poweruser/e-signature. Every request is a POST with a JSON body. Unlike most Poweruser resources, envelope, recipient, and field IDs are UUID strings; user IDs are the usual opaque ID strings. See the Poweruser API overview for authentication and conventions.
Envelope lifecycle
An envelope is one PDF plus its recipients, fields, and audit trail. It moves through these statuses:
| Status | Meaning |
|---|---|
DRAFT | Being assembled — recipients, fields, and prefill values are editable. |
SENT | Signing links emailed; signers are working through it. Structure is frozen. |
COMPLETED | All required signatures collected; the sealed PDF and certificate of completion exist. |
REJECTED | A signer declined, with a reason recorded on the recipient. |
VOIDED | The owner cancelled it after sending. |
EXPIRED | Signing links passed their TTL before completion. |
The typical build-and-send sequence:
/generate-file-upload-link, thenPUTthe PDF to the returned URL./envelope/createwith the returneds3Uri./envelope/recipientsto set signers, viewers, signing order, and completion policy./envelope/fieldsto place signature and input fields, and optionally/envelope/prefillto fillPREFILLfields./envelope/sendto email signing links.
Recipients and signer slots
Each recipient is a SIGNER (assigned fields, must act) or a VIEWER
(CC — emailed a read-only link and the sealed copy, never signs). Signers
occupy signer slots via signingGroup (1-based): recipients sharing a
slot form a client group, and any one of them signing satisfies the slot. A null
signingGroup gives the recipient their own slot.
Two envelope-level knobs control flow:
signingOrder—PARALLEL(everyone at once, default) orSEQUENTIAL(one at a time byorderIndex).completionPolicy—ALL(every slot must be satisfied, default) orANY_ONE(first signature completes and seals the envelope; remaining recipients becomeNOT_REQUIRED).ANY_ONEis only valid withPARALLEL.
Recipient statuses: PENDING, VIEWED, OTP_VERIFIED, SIGNED,
REJECTED, EXPIRED, NOT_REQUIRED, and NOTIFIED (terminal status for
viewers).
Signers authenticate by possession of their emailed signing link, which is
the credential — there is no separate one-time-code step. OTP_VERIFIED and
otpVerifiedAt are retained for backward compatibility and are not set by the
current signing flow.
Field placement
Fields are placed by page and percentage coordinates (pageIndex, xPct,
yPct, widthPct, heightPct), so layouts survive PDF scaling. Every
field has a fillSource:
SIGNER— filled by a recipient at sign time. RequiresrecipientId. Types:SIGNATURE,INITIALS,NAME,EMAIL,DATE_SIGNED,TEXT_INPUT,CHECKBOX,DROPDOWN.PREFILL— filled by you before sending, rendered into the PDF. Types:TEXT_STATIC,DATE_STATIC,IMAGE_STATIC.
Assign every signer at least one SIGNER field. Fields bound to a recipient
who has nothing to sign — or signers with no fields — are the most common
cause of envelopes that "complete" without the signature you expected.
The envelope object
Returned by create, get, recipients, fields, prefill, send, void, resend-link, and remind.
- Name
id- Type
- uuid
- Description
Unique envelope identifier.
- Name
companyId- Type
- string
- Description
Owning company.
- Name
ownerUserId- Type
- string
- Description
The user who owns the envelope.
- Name
title- Type
- string
- Description
Display title.
- Name
status- Type
- string
- Description
DRAFT,SENT,COMPLETED,REJECTED,VOIDED, orEXPIRED.
- Name
signingOrder- Type
- string
- Description
PARALLELorSEQUENTIAL.
- Name
completionPolicy- Type
- string
- Description
ALLorANY_ONE.
- Name
createdAt- Type
- string
- Description
ISO-8601 creation timestamp.
- Name
sentAt- Type
- string
- Description
When signing links were emailed, or absent while
DRAFT.
- Name
completedAt- Type
- string
- Description
When the envelope completed.
- Name
lastActivityAt- Type
- string
- Description
Timestamp of the most recent audit event.
- Name
expiresAt- Type
- string
- Description
When outstanding signing links expire.
- Name
sha256Original- Type
- string
- Description
SHA-256 of the uploaded PDF.
- Name
sha256Prefilled- Type
- string
- Description
SHA-256 of the PDF after prefill rendering.
- Name
sha256Sealed- Type
- string
- Description
SHA-256 of the sealed, completed PDF.
- Name
viewPdfUrl- Type
- string
- Description
Presigned URL for the current-state PDF (original, prefilled, or sealed depending on status).
- Name
recipients- Type
- array<Recipient>
- Description
Recipients:
id(uuid),email,name,orderIndex,signingGroup,recipientKind(SIGNERorVIEWER),status, plus timestamps (invitedAt,firstViewedAt,otpVerifiedAt,signedAt,rejectedAt) and signing evidence (rejectionReason,signerIp,signerUserAgent,signerCertSerial).
- Name
fields- Type
- array<Field>
- Description
Fields:
id(uuid),fillSource,recipientId,fieldType, placement (pageIndex,xPct,yPct,widthPct,heightPct,rotation),required,value,valueImageUrl(presigned URL for image blobs), and font styling (fontFamily,fontSize,fontColor).
- Name
auditTrail- Type
- array<AuditEvent>
- Description
Hash-chained audit events:
id,seq,eventType,recipientId,actorEmail,ip,userAgent,occurredAt,payloadJson,rowHash.
- Name
auditChainValid- Type
- boolean
- Description
Whether the audit-trail hash chain verifies.
- Name
sharingLevel- Type
- string
- Description
Baseline visibility:
PRIVATE,SPECIFIC_MEMBER, orCOMPANY.
- Name
shares- Type
- array<SharePermission>
- Description
Per-user grants (
userId,userEmail,userName,accessLevel,grantedBy,grantedByName,createdAt). The owner is not listed — they have implicit ADMIN.
- Name
myAccessLevel- Type
- string
- Description
The calling user's effective access level:
READ,WRITE,PUBLISH, orADMIN.
- Name
iAmOwner- Type
- boolean
- Description
Whether the calling user owns the envelope.
{
"id": "e3b1c6a2-9f4d-4c8e-b7a1-2d5f8c9e0a13",
"companyId": "cP2mK7dX4v",
"ownerUserId": "uB7nT2wQ9k",
"title": "Consulting Agreement — Acme Corp",
"status": "SENT",
"signingOrder": "PARALLEL",
"completionPolicy": "ALL",
"createdAt": "2026-06-29T15:10:02",
"sentAt": "2026-06-29T16:00:41",
"expiresAt": "2026-07-13T16:00:41",
"sha256Original": "9c56cc51...",
"viewPdfUrl": "https://s3.amazonaws.com/autessa-esign/...",
"recipients": [
{
"id": "7f2a4b1c-8d3e-4f5a-9b0c-1d2e3f4a5b6c",
"email": "sam@acme.com",
"name": "Sam Rivera",
"orderIndex": 1,
"signingGroup": 1,
"recipientKind": "SIGNER",
"status": "VIEWED",
"invitedAt": "2026-06-29T16:00:41",
"firstViewedAt": "2026-06-30T08:12:19"
}
],
"fields": [
{
"id": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
"fillSource": "SIGNER",
"recipientId": "7f2a4b1c-8d3e-4f5a-9b0c-1d2e3f4a5b6c",
"fieldType": "SIGNATURE",
"pageIndex": 2,
"xPct": 12.5,
"yPct": 78.0,
"widthPct": 30.0,
"heightPct": 5.0,
"required": true
}
],
"auditChainValid": true,
"sharingLevel": "PRIVATE",
"shares": [],
"myAccessLevel": "ADMIN",
"iAmOwner": true
}
Generate a file upload link
/e-signature/generate-file-upload-linkReturns a pre-signed S3 URL for uploading the envelope's PDF. PUT the file
bytes to uploadUrl, then pass the returned s3Uri to
/envelope/create.
Request parameters
- Name
fileExtension- Type
- string
- Description
File extension — use
"pdf".
Response
- Name
uploadUrl- Type
- string
- Description
Pre-signed URL;
PUTthe file bytes here.
- Name
s3Uri- Type
- string
- Description
S3 URI to pass as
s3Urion envelope or template creation.
- Name
mimeType- Type
- string
- Description
MIME type to send as
Content-Typeon the upload.
- Name
expiresInSeconds- Type
- integer
- Description
How long the upload URL stays valid.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
curl https://api.autessa.com/autessa_poweruser/e-signature/generate-file-upload-link \
-X POST \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{ "fileExtension": "pdf" }'
# Then upload the PDF:
curl -X PUT "$UPLOAD_URL" \
-H "Content-Type: application/pdf" \
--data-binary '@agreement.pdf'
{
"uploadUrl": "https://s3.amazonaws.com/autessa-files/...",
"s3Uri": "s3://autessa-files/company-cP2mK7dX4v/file-9d1e.pdf",
"mimeType": "application/pdf",
"expiresInSeconds": 3600,
"errors": []
}
Create an envelope
/e-signature/envelope/createRegisters a DRAFT envelope around a PDF already uploaded via
/generate-file-upload-link. Add recipients
and fields next, then send. To start from a reusable layout instead, see
template instantiation.
Request parameters
- Name
title- Type
- string
- Description
Envelope title, shown to signers and in emails.
- Name
s3Uri- Type
- string
- Description
The S3 URI (or key) returned by the file-upload-link flow.
Response
- Name
envelope- Type
- Envelope
- Description
The new envelope in
DRAFTstatus. See the envelope object.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
- cURL
- JavaScript
- Python
curl https://api.autessa.com/autessa_poweruser/e-signature/envelope/create \
-X POST \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Consulting Agreement — Acme Corp",
"s3Uri": "s3://autessa-files/company-cP2mK7dX4v/file-9d1e.pdf"
}'
const response = await fetch(
'https://api.autessa.com/autessa_poweruser/e-signature/envelope/create',
{
method: 'POST',
headers: {
'Authorization': process.env.POWERUSER_KEY,
'Content-Type': 'application/json'
},
body: JSON.stringify({
title: 'Consulting Agreement — Acme Corp',
s3Uri: 's3://autessa-files/company-cP2mK7dX4v/file-9d1e.pdf'
})
}
);
const { envelope } = await response.json();
console.log(envelope.id, envelope.status); // DRAFT
import os
import requests
response = requests.post(
'https://api.autessa.com/autessa_poweruser/e-signature/envelope/create',
headers={'Authorization': os.environ['POWERUSER_KEY']},
json={
'title': 'Consulting Agreement — Acme Corp',
's3Uri': 's3://autessa-files/company-cP2mK7dX4v/file-9d1e.pdf'
}
)
envelope = response.json()['envelope']
{
"envelope": {
"id": "e3b1c6a2-9f4d-4c8e-b7a1-2d5f8c9e0a13",
"title": "Consulting Agreement — Acme Corp",
"status": "DRAFT",
"signingOrder": "PARALLEL",
"completionPolicy": "ALL",
"recipients": [],
"fields": [],
"iAmOwner": true
},
"errors": []
}
Get an envelope
/e-signature/envelope/getRetrieves an envelope's full state — recipients, fields, audit trail, and a presigned URL for the current-state PDF.
Request parameters
- Name
envelopeId- Type
- uuid
- Description
The envelope to fetch.
Response
- Name
envelope- Type
- Envelope
- Description
The envelope object.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
curl https://api.autessa.com/autessa_poweruser/e-signature/envelope/get \
-X POST \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{ "envelopeId": "e3b1c6a2-9f4d-4c8e-b7a1-2d5f8c9e0a13" }'
{
"envelope": {
"id": "e3b1c6a2-9f4d-4c8e-b7a1-2d5f8c9e0a13",
"title": "Consulting Agreement — Acme Corp",
"status": "SENT",
"recipients": [
{ "email": "sam@acme.com", "status": "VIEWED", "signingGroup": 1 }
],
"auditChainValid": true
},
"errors": []
}
List envelopes
/e-signature/envelope/listLists envelopes visible to the linked user, with filtering, search, sorting,
and pagination. Entries are compact summaries — use
/envelope/get for full detail.
Request parameters
- Name
statusFilter- Type
- array<string>
- Description
Restrict to these statuses (
DRAFT,SENT,COMPLETED,REJECTED,VOIDED,EXPIRED).
- Name
search- Type
- string
- Description
Title search string.
- Name
sortBy- Type
- string
- Description
"created","lastActivity", or"title". Defaults tolastActivity.
- Name
sortDir- Type
- string
- Description
"asc"or"desc". Defaults todesc.
- Name
page- Type
- integer
- Description
Page index.
- Name
pageSize- Type
- integer
- Description
Entries per page.
Response
- Name
envelopes- Type
- array<EnvelopeSummary>
- Description
Summaries:
id,title,status,completionPolicy, lifecycle timestamps,recipientCount,completedRecipientCount,requiredSignatureCountandcollectedSignatureCount(signer-slot progress),recipientEmails,sharingLevel,myAccessLevel,iAmOwner,ownerUserId.
- Name
total- Type
- integer
- Description
Total envelopes across all pages.
- Name
page- Type
- integer
- Description
The page returned.
- Name
pageSize- Type
- integer
- Description
Entries per page.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
curl https://api.autessa.com/autessa_poweruser/e-signature/envelope/list \
-X POST \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{
"statusFilter": ["SENT"],
"sortBy": "lastActivity",
"sortDir": "desc",
"page": 0,
"pageSize": 20
}'
{
"envelopes": [
{
"id": "e3b1c6a2-9f4d-4c8e-b7a1-2d5f8c9e0a13",
"title": "Consulting Agreement — Acme Corp",
"status": "SENT",
"completionPolicy": "ALL",
"recipientCount": 2,
"completedRecipientCount": 0,
"requiredSignatureCount": 2,
"collectedSignatureCount": 0,
"recipientEmails": ["sam@acme.com", "lee@acme.com"],
"sharingLevel": "PRIVATE",
"myAccessLevel": "ADMIN",
"iAmOwner": true,
"ownerUserId": "uB7nT2wQ9k"
}
],
"total": 14,
"page": 0,
"pageSize": 20,
"errors": []
}
View the current PDF
/e-signature/envelope/viewReturns a presigned read URL for the envelope's current-state PDF — the original while drafting, the prefilled render once sent, or the sealed document when completed.
Request parameters
- Name
envelopeId- Type
- uuid
- Description
The envelope to view.
Response
- Name
pdfUrl- Type
- string
- Description
Time-boxed presigned URL for the PDF.
- Name
expiresInSeconds- Type
- integer
- Description
How long the URL stays valid.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
curl https://api.autessa.com/autessa_poweruser/e-signature/envelope/view \
-X POST \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{ "envelopeId": "e3b1c6a2-9f4d-4c8e-b7a1-2d5f8c9e0a13" }'
{
"pdfUrl": "https://s3.amazonaws.com/autessa-esign/...",
"expiresInSeconds": 900,
"errors": []
}
Set recipients
/e-signature/envelope/recipientsReplaces the envelope's recipient list and sets the signing order and
completion policy. Include id on an entry to update an existing recipient;
omit it to create a new one.
Request parameters
- Name
envelopeId- Type
- uuid
- Description
The envelope to update.
- Name
signingOrder- Type
- string
- Description
PARALLELorSEQUENTIAL.
- Name
completionPolicy- Type
- string
- Description
ALLorANY_ONE. Null meansALL.ANY_ONErequiresPARALLEL.
- Name
recipients- Type
- array<RecipientInput>
- Description
The full recipient list.
- Name
recipients[].id- Type
- uuid
- Description
Present when updating an existing recipient; omit when adding.
- Name
recipients[].email- Type
- string
- Description
Recipient email — signing links are sent here.
- Name
recipients[].name- Type
- string
- Description
Recipient display name, affirmed at sign time.
- Name
recipients[].orderIndex- Type
- integer
- Description
1-based position for
SEQUENTIALsigning; ignored forPARALLEL.
- Name
recipients[].signingGroup- Type
- integer
- Description
Signer slot (1-based). Recipients sharing a slot form a client group — any one of them signing satisfies it. Null means own slot.
- Name
recipients[].recipientKind- Type
- string
- Description
SIGNER(default) orVIEWER.
Response
- Name
envelope- Type
- Envelope
- Description
The updated envelope object.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
- cURL
- JavaScript
- Python
curl https://api.autessa.com/autessa_poweruser/e-signature/envelope/recipients \
-X POST \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{
"envelopeId": "e3b1c6a2-9f4d-4c8e-b7a1-2d5f8c9e0a13",
"signingOrder": "PARALLEL",
"completionPolicy": "ALL",
"recipients": [
{
"email": "sam@acme.com",
"name": "Sam Rivera",
"signingGroup": 1,
"recipientKind": "SIGNER"
},
{
"email": "legal@acme.com",
"name": "Acme Legal",
"recipientKind": "VIEWER"
}
]
}'
await fetch(
'https://api.autessa.com/autessa_poweruser/e-signature/envelope/recipients',
{
method: 'POST',
headers: {
'Authorization': process.env.POWERUSER_KEY,
'Content-Type': 'application/json'
},
body: JSON.stringify({
envelopeId: 'e3b1c6a2-9f4d-4c8e-b7a1-2d5f8c9e0a13',
signingOrder: 'PARALLEL',
recipients: [
{ email: 'sam@acme.com', name: 'Sam Rivera', signingGroup: 1 },
// Same slot — a client group; either signature satisfies it
{ email: 'jordan@acme.com', name: 'Jordan Kim', signingGroup: 1 }
]
})
}
);
import os
import requests
requests.post(
'https://api.autessa.com/autessa_poweruser/e-signature/envelope/recipients',
headers={'Authorization': os.environ['POWERUSER_KEY']},
json={
'envelopeId': 'e3b1c6a2-9f4d-4c8e-b7a1-2d5f8c9e0a13',
'signingOrder': 'PARALLEL',
'recipients': [
{'email': 'sam@acme.com', 'name': 'Sam Rivera', 'signingGroup': 1}
]
}
)
{
"envelope": {
"id": "e3b1c6a2-9f4d-4c8e-b7a1-2d5f8c9e0a13",
"status": "DRAFT",
"recipients": [
{
"id": "7f2a4b1c-8d3e-4f5a-9b0c-1d2e3f4a5b6c",
"email": "sam@acme.com",
"name": "Sam Rivera",
"signingGroup": 1,
"recipientKind": "SIGNER",
"status": "PENDING"
}
]
},
"errors": []
}
Set fields
/e-signature/envelope/fieldsFully replaces the envelope's field set — send every field you want to
keep, not just changes. Include id to preserve/update an existing field.
Request parameters
- Name
envelopeId- Type
- uuid
- Description
The envelope to update.
- Name
fields- Type
- array<FieldInput>
- Description
The complete field set.
- Name
fields[].id- Type
- uuid
- Description
Optional on create, required when editing an existing field.
- Name
fields[].fillSource- Type
- string
- Description
SIGNERorPREFILL.
- Name
fields[].recipientId- Type
- uuid
- Description
Required when
fillSourceisSIGNER— the recipient who fills the field.
- Name
fields[].fieldType- Type
- string
- Description
SIGNER:SIGNATURE,INITIALS,NAME,EMAIL,DATE_SIGNED,TEXT_INPUT,CHECKBOX,DROPDOWN.PREFILL:TEXT_STATIC,DATE_STATIC,IMAGE_STATIC.
- Name
fields[].pageIndex- Type
- integer
- Description
Zero-based PDF page.
- Name
fields[].xPct- Type
- number
- Description
Left edge as a percentage of page width.
- Name
fields[].yPct- Type
- number
- Description
Top edge as a percentage of page height.
- Name
fields[].widthPct- Type
- number
- Description
Width as a percentage of page width.
- Name
fields[].heightPct- Type
- number
- Description
Height as a percentage of page height.
- Name
fields[].rotation- Type
- integer
- Description
Rotation in degrees.
- Name
fields[].required- Type
- boolean
- Description
Whether the signer must fill it.
- Name
fields[].value- Type
- string
- Description
Static text (
PREFILL) or baseline display value; forDROPDOWN, the options.
- Name
fields[].valueImageS3Key- Type
- string
- Description
For
PREFILLIMAGE_STATIC— S3 key uploaded via the file-upload-link flow.
- Name
fields[].fontFamily- Type
- string
- Description
Render font.
- Name
fields[].fontSize- Type
- integer
- Description
Render font size.
- Name
fields[].fontColor- Type
- string
- Description
Render font color.
Response
- Name
envelope- Type
- Envelope
- Description
The updated envelope object.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
curl https://api.autessa.com/autessa_poweruser/e-signature/envelope/fields \
-X POST \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{
"envelopeId": "e3b1c6a2-9f4d-4c8e-b7a1-2d5f8c9e0a13",
"fields": [
{
"fillSource": "SIGNER",
"recipientId": "7f2a4b1c-8d3e-4f5a-9b0c-1d2e3f4a5b6c",
"fieldType": "SIGNATURE",
"pageIndex": 2,
"xPct": 12.5, "yPct": 78.0,
"widthPct": 30.0, "heightPct": 5.0,
"required": true
},
{
"fillSource": "PREFILL",
"fieldType": "TEXT_STATIC",
"pageIndex": 0,
"xPct": 20.0, "yPct": 30.5,
"widthPct": 40.0, "heightPct": 3.0,
"value": "Acme Corp"
}
]
}'
{
"envelope": {
"id": "e3b1c6a2-9f4d-4c8e-b7a1-2d5f8c9e0a13",
"status": "DRAFT",
"fields": [
{ "id": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d", "fieldType": "SIGNATURE" },
{ "id": "b2c3d4e5-f6a7-4b8c-9d0e-1f2a3b4c5d6e", "fieldType": "TEXT_STATIC" }
]
},
"errors": []
}
Set prefill values
/e-signature/envelope/prefillPopulates PREFILL fields with values before sending — contract amounts,
names, dates, or a static image (for example a company stamp).
Request parameters
- Name
envelopeId- Type
- uuid
- Description
The envelope to update.
- Name
values- Type
- array<PrefillValueInput>
- Description
Values to set.
- Name
values[].fieldId- Type
- uuid
- Description
The
PREFILLfield to populate.
- Name
values[].value- Type
- string
- Description
The text or date value.
- Name
values[].valueImageS3Key- Type
- string
- Description
For
IMAGE_STATIC— S3 key of the uploaded PNG.
Response
- Name
envelope- Type
- Envelope
- Description
The updated envelope object.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
curl https://api.autessa.com/autessa_poweruser/e-signature/envelope/prefill \
-X POST \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{
"envelopeId": "e3b1c6a2-9f4d-4c8e-b7a1-2d5f8c9e0a13",
"values": [
{
"fieldId": "b2c3d4e5-f6a7-4b8c-9d0e-1f2a3b4c5d6e",
"value": "$12,000.00"
}
]
}'
{
"envelope": {
"id": "e3b1c6a2-9f4d-4c8e-b7a1-2d5f8c9e0a13",
"status": "DRAFT"
},
"errors": []
}
Send an envelope
/e-signature/envelope/sendMoves the envelope from DRAFT to SENT: renders prefill values into the
PDF and emails each recipient a tokenized signing link. With SEQUENTIAL
ordering only the first signer is invited; each completion invites the next.
Request parameters
- Name
envelopeId- Type
- uuid
- Description
The envelope to send.
- Name
linkTtlDays- Type
- integer
- Description
Override the default signing-link TTL, in days.
Response
- Name
envelope- Type
- Envelope
- Description
The envelope, now
SENT, withsentAtandexpiresAtpopulated.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred (for example no recipients, or a signer with no fields).
curl https://api.autessa.com/autessa_poweruser/e-signature/envelope/send \
-X POST \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{
"envelopeId": "e3b1c6a2-9f4d-4c8e-b7a1-2d5f8c9e0a13",
"linkTtlDays": 14
}'
{
"envelope": {
"id": "e3b1c6a2-9f4d-4c8e-b7a1-2d5f8c9e0a13",
"status": "SENT",
"sentAt": "2026-06-29T16:00:41",
"expiresAt": "2026-07-13T16:00:41"
},
"errors": []
}
Resend a signing link
/e-signature/envelope/resend-linkIssues a fresh signing link to one recipient and emails it. Use when a link expired or the original email was lost.
Request parameters
- Name
envelopeId- Type
- uuid
- Description
The envelope.
- Name
recipientId- Type
- uuid
- Description
The recipient to re-invite.
Response
- Name
envelope- Type
- Envelope
- Description
The current envelope object.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
curl https://api.autessa.com/autessa_poweruser/e-signature/envelope/resend-link \
-X POST \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{
"envelopeId": "e3b1c6a2-9f4d-4c8e-b7a1-2d5f8c9e0a13",
"recipientId": "7f2a4b1c-8d3e-4f5a-9b0c-1d2e3f4a5b6c"
}'
{
"envelope": { "id": "e3b1c6a2-9f4d-4c8e-b7a1-2d5f8c9e0a13", "status": "SENT" },
"errors": []
}
Remind pending signers
/e-signature/envelope/remindSends reminder emails to recipients who have not yet signed.
Request parameters
- Name
envelopeId- Type
- uuid
- Description
The envelope.
- Name
recipientIds- Type
- array<uuid>
- Description
Recipients to remind. Null or empty reminds every pending recipient.
Response
- Name
envelope- Type
- Envelope
- Description
The current envelope object.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
curl https://api.autessa.com/autessa_poweruser/e-signature/envelope/remind \
-X POST \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{ "envelopeId": "e3b1c6a2-9f4d-4c8e-b7a1-2d5f8c9e0a13" }'
{
"envelope": { "id": "e3b1c6a2-9f4d-4c8e-b7a1-2d5f8c9e0a13", "status": "SENT" },
"errors": []
}
Void an envelope
/e-signature/envelope/voidCancels a sent envelope. Outstanding signing links stop working and the
envelope moves to VOIDED. The reason is recorded in the audit trail.
Request parameters
- Name
envelopeId- Type
- uuid
- Description
The envelope to void.
- Name
reason- Type
- string
- Description
Why the envelope is being voided.
Response
- Name
envelope- Type
- Envelope
- Description
The envelope, now
VOIDED.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
curl https://api.autessa.com/autessa_poweruser/e-signature/envelope/void \
-X POST \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{
"envelopeId": "e3b1c6a2-9f4d-4c8e-b7a1-2d5f8c9e0a13",
"reason": "Terms renegotiated; superseded by a new agreement."
}'
{
"envelope": { "id": "e3b1c6a2-9f4d-4c8e-b7a1-2d5f8c9e0a13", "status": "VOIDED" },
"errors": []
}
Delete an envelope
/e-signature/envelope/deletePermanently deletes an envelope. This is destructive and cannot be undone —
to cancel a sent envelope while keeping its record, use
/envelope/void instead.
Request parameters
- Name
envelopeId- Type
- uuid
- Description
The envelope to delete.
Response
- Name
deleted- Type
- boolean
- Description
Whether the envelope was deleted.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred.
curl https://api.autessa.com/autessa_poweruser/e-signature/envelope/delete \
-X POST \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{ "envelopeId": "e3b1c6a2-9f4d-4c8e-b7a1-2d5f8c9e0a13" }'
{
"deleted": true,
"errors": []
}
Download the sealed PDF
/e-signature/envelope/downloadReturns a presigned download URL for the sealed PDF of a completed envelope — the final document with all signatures and the certificate of completion.
Request parameters
- Name
envelopeId- Type
- uuid
- Description
The completed envelope.
Response
- Name
url- Type
- string
- Description
Time-boxed presigned download URL.
- Name
expiresInSeconds- Type
- integer
- Description
How long the URL stays valid.
- Name
filename- Type
- string
- Description
Suggested filename for the download.
- Name
errors- Type
- array<string>
- Description
Error messages, if any occurred (for example the envelope is not completed).
curl https://api.autessa.com/autessa_poweruser/e-signature/envelope/download \
-X POST \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{ "envelopeId": "e3b1c6a2-9f4d-4c8e-b7a1-2d5f8c9e0a13" }'
{
"url": "https://s3.amazonaws.com/autessa-esign/...",
"expiresInSeconds": 900,
"filename": "Consulting Agreement — Acme Corp (sealed).pdf",
"errors": []
}
List the signing inbox
/e-signature/inbox/listLists envelopes where the linked user is a recipient — matched on email,
independent of which company owns the envelope. This is the "waiting for my
signature" view, complementing /envelope/list which
shows envelopes you own or that are shared with you.
Request parameters
- Name
statusFilter- Type
- array<string>
- Description
Restrict to these envelope statuses.
- Name
page- Type
- integer
- Description
Page index.
- Name
pageSize- Type
- integer
- Description
Entries per page.
Response
Same shape as /envelope/list: envelopes, total,
page, pageSize, errors.
curl https://api.autessa.com/autessa_poweruser/e-signature/inbox/list \
-X POST \
-H "Authorization: $POWERUSER_KEY" \
-H "Content-Type: application/json" \
-d '{ "statusFilter": ["SENT"], "page": 0, "pageSize": 20 }'
{
"envelopes": [
{
"id": "f4c2d7b3-0a5e-4d9f-c8b2-3e6a9d0f1b24",
"title": "NDA — Northwind Traders",
"status": "SENT",
"recipientCount": 1
}
],
"total": 1,
"page": 0,
"pageSize": 20,
"errors": []
}
Errors
| Status | When |
|---|---|
200 | Success — check errors for validation messages (unknown envelope, structural edits after send, ANY_ONE with SEQUENTIAL, download before completion). |
401 | Invalid or missing poweruser key, or the linked user lacks access to the envelope. |
403 | Scoped key without the endpoint in its allow-list. |
408 | Server-side error; errors contains the message. |