Quick Create Envelope
Create and send an envelope in a single call. The envelope immediately enters the signing workflow. By default, signing invitations are sent to recipients via email.
Associations
Tabs[].DocumentId corresponds to Documents[].DocumentId, and Tabs[].RecipientId corresponds to Signers[].RecipientId. The three are associated via flat ID references. Tabs[].RecipientId must reference a Signers[].RecipientId; referencing CarbonCopies is not allowed.
Sequential Signing
Set BasicInfo.SigningOrderType=sequential and assign a different SigningOrder to each signer (starting from 1, consecutive). The system will send signing invitations in that order.
Validation Rules
- Every document must contain at least one signing tab assigned to a signer.
- Every signer must have at least one tab in at least one document.
- When
BasicInfo.SigningOrderType=sequential, every signer must provideSigningOrder, and the values must start from 1 and be consecutive (for example, 1,2,3). Gaps are not allowed.
Required Scope: envelope:create (holding the envelope:manage superset scope is also sufficient)
Request Parameters
Request Example
{
"BasicInfo": {
"SigningOrderType": "sequential",
"Expiration": {
"ExpiresAt": "2024-02-15T23:59:59Z"
},
"EnvelopeTitle": "Procurement Contract 2024-Q1"
},
"EmailNotification": {
"EmailSubject": "Please sign the procurement contract",
"EmailMessage": "Please review and sign this contract. Thank you."
},
"Documents": [
{
"DocumentId": "doc1",
"FileId": "SGf1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6",
"Name": "procurement-contract.pdf",
"Order": 1
}
],
"Signers": [
{
"RecipientId": "r1",
"Name": "Alice",
"Email": "alice@example.com",
"SigningOrder": 1
},
{
"RecipientId": "r2",
"Name": "Bob",
"Email": "bob@example.com",
"SigningOrder": 2
}
],
"CarbonCopies": [
{
"RecipientId": "cc1",
"Name": "Carol",
"Email": "carol@example.com"
}
],
"Tabs": [
{
"TabType": "signHere",
"RecipientId": "r1",
"DocumentId": "doc1",
"Position": {
"PositionType": "absolute",
"PageNumber": 3,
"XPosition": 100,
"YPosition": 200,
"Width": 120,
"Height": 40
}
},
{
"TabType": "signHere",
"RecipientId": "r2",
"DocumentId": "doc1",
"Position": {
"PositionType": "anchor",
"AnchorString": "Party A Signature",
"AnchorXOffset": 80,
"AnchorYOffset": -10,
"MatchWholeWord": true,
"RelativeLocation": "Right",
"KeywordIndexes": [
0
],
"Width": 120,
"Height": 40
}
}
]
}Response Parameters
Response Example
{
"Response": {
"RequestId": "req-abc123",
"Error": null,
"Data": {
"EnvelopeId": "SGEVa1b2c3d4e5f6",
"Status": "sent",
"CreatedAt": "2024-01-15T10:30:00Z"
}
}
}Error Codes
| Error Code | Description |
|---|---|
OPENAPI.OPERATOR_USER_ID_REQUIRED | X-Operator-User-Id header not provided |
OPENAPI.OPERATOR_USER_NOT_FOUND | The user does not exist or is not in the current space |
OPENAPI.OPERATOR_USER_NOT_HUMAN | Operator user must be a member of the current space |
INVALID_REQUEST | Request body parsing failed |
VALIDATION.TITLE_EMPTY | Envelope title is empty |
VALIDATION.TITLE_TOO_LONG | Envelope title exceeds 100 characters |
VALIDATION.SIGNING_ORDER_TYPE_INVALID | SigningOrderType is invalid |
VALIDATION.DOCUMENT_REQUIRED | Document list is empty |
VALIDATION.DOCUMENT_ID_DUPLICATE | Duplicate document ID |
VALIDATION.DOCUMENT_FILE_ID_EMPTY | Document FileId is empty |
VALIDATION.SIGNER_REQUIRED | Signer list is empty |
VALIDATION.RECIPIENT_ID_DUPLICATE | Duplicate signer or carbon-copy recipient ID |
VALIDATION.RECIPIENT_EMAIL_INVALID | Invalid email format |
VALIDATION.SIGNER_REQUIRES_TAB | Signer has no tabs |
VALIDATION.DOCUMENT_REQUIRES_SIGNER_TAB | Document has no signer tabs |
VALIDATION.SIGNING_ORDER_INVALID | Duplicate signing order |
VALIDATION.SIGNING_ORDER_REQUIRED | SigningOrder is missing in sequential mode |
VALIDATION.SIGNING_ORDER_NOT_SEQUENTIAL | Signing orders do not start from 1 and remain consecutive |
VALIDATION.TAB_TYPE_INVALID | Tab type is invalid |
VALIDATION.TAB_DOCUMENT_NOT_EXIST | Tab references a non-existent document |
VALIDATION.TAB_RECIPIENT_NOT_SIGNER | Tab RecipientId does not refer to a Signer |
VALIDATION.EXPIRES_AT_PAST | Expiration time is in the past |
ENVELOPE.OUT_ID_DUPLICATE | OutEnvelopeId already exists (returns existing envelope) |
INTERNAL_ERROR | Internal service error |