Migrating from V0 to V1
This guide outlines the structural and behavioral differences between V0 and V1 of the QuicklySign API.
V1 introduces document packs, improved flexibility, enhanced security features, and more granular update behavior.
Key New Features
Document Packs
V1 introduces document packs, allowing multiple documents to be submitted in a single request.
Requests are now grouped under a document_pack, replacing the single-document model used in V0.
You can merge multiple documents or templates into a single document pack, which wasn’t possible in V0.
Event Hooks
Server-side event handlers that run directly on QuicklySign’s infrastructure.
These differ from webhooks and can be tailored to specific business use cases without requiring external endpoints.
User-Defined Attributes
You may attach custom metadata to document packs, such as:
- Internal reference numbers
- External system IDs
- Values required by downstream automation
These attributes are settable at document pack creation and can be viewed by the owner/editor on the UI.
Generated Signing URLs
V1 allows you to generate signing links directly via API.
These links:
- Can be distributed through your own channels
- Enforce OTP verification
- Provide enhanced signing security
Enhanced Upload Options
V1 supports multiple document upload methods:
- Base64 encoded documents
- Remote file URLs
- Temporary upload URLs (legacy supported)
Conditional Signatory Allocation
You may leave a signatory unassigned during creation and allow a signer to nominate the correct participant during the signing process.
Structural Changes
The following structural updates were introduced in V1:
signing_settingsnow groups all signing-related configurationmail_settingsnow groups all email-related configurationdocument_pack_namereplaces the top-leveldocument_namedocumentsnow exist withindocument_packssubscriptionshave been renamed towebhooks
Note: We renamed subscriptions to webhooks to align with standard terminology. Existing subscription references should be updated. See: Subscription Webhooks
Example: V1 Document Pack (Simplified Structure)
This example shows the typical structure returned after a document pack has been created:
{
"key": "<document_pack_key>",
"document_pack_name": "My Example",
"status": "awaiting_signatures",
"documents": [
{
"key": "<document_key>",
"document_name": "Child Document",
"data_fields": [],
"serve_pdf_url": "<document_download_url>"
}
],
"signatories": [
{
"uuid": "<signatory_uuid>",
"name": "Signer 1",
"email": "[email protected]",
"role": "signer-1",
"status": "setup"
}
],
"signing_settings": {
"sequential_signing": true,
"use_two_factor_authentication": true
},
"mail_settings": {
"include_attachments_in_final_mail": false,
"exclude_created_by_from_final_mail": false
},
"user_defined_attributes": [
{
"id": "reference_number",
"name": "Reference Number",
"value": "REF-12345",
"required": false,
"visible_on_ui": true
}
]
}Creating Documents Inside a Document Pack (V1)
In V1, documents are created inside the documents array using document_creation_settings.
Multiple creation methods can be combined per child document if needed (e.g., uploading a base64 document and applying a template).
1: Create From Remote URL
{
"document_pack_name": "My Example",
"documents": [
{
"document_creation_settings": {
"document_url": "https://example.com/myfile.pdf",
"extract_fields_by_tag": true
}
}
]
}2: Upload Base64 Document
{
"document_pack_name": "My Example",
"documents": [
{
"document_creation_settings": {
"base_64_document": "<base_64_encoded_document>",
"extract_fields_by_tag": true
}
}
]
}3: Create From Template
{
"document_pack_name": "My Example",
"documents": [
{
"document_creation_settings": {
"create_from_template_key": "<template_key>"
}
}
]
}4: Apply Template to Uploaded Document
{
"document_pack_name": "My Example",
"documents": [
{
"document_creation_settings": {
"base_64_document": "<base_64_encoded_document>",
"apply_template_to_document": "<template_key>"
}
}
]
}5: Add Signing Page Template
{
"document_pack_name": "My Example",
"documents": [
{
"document_creation_settings": {
"base_64_document": "<base_64_encoded_document>",
"add_signing_page_template_to_document": "<signing_template_key>"
}
}
]
}6: Extract Fields From PDF Form Fields
There are two modes:
- Positioning only – uses PDF field positions to place data fields.
- With metadata – also extracts field descriptions defined in the PDF.
{
"document_pack_name": "My Example",
"documents": [
{
"document_creation_settings": {
"base_64_document": "<base_64_encoded_pdf>",
"extract_fields_from_form_fields_with_metadata": true
}
}
]
}Usage Changes
Endpoint Changes
| V0 | V1 |
|---|---|
/documents | /document_packs |
All document creation requests must now be sent to the document_packs endpoint.
Update Behavior
V1 introduces partial update support:
- You only need to send the fields you wish to update.
- Full payload replacement is no longer required.
Deletion Rules
Deletion behavior for the following objects has changed:
data_fieldssignatories- Child
documents
Explicit removal rules now apply when modifying nested objects.
Document Creation Settings
document_creation_settings now exist per child document.
Important:
- These settings are used during document creation only.
- They are not returned in the final payload.
- Multiple creation options can be combined per document.
Summary
V1 introduces:
- A document pack–based structure
- Improved upload flexibility (Base64, URL, templates)
- Ability to merge multiple documents/templates into one pack
- Stronger security controls (OTP for signing URLs, 2FA)
- Enhanced update behavior (partial updates, deletion rules)
- Clear separation of configuration groups (
signing_settings,mail_settings, etc.)
If you are migrating from V0, ensure that your request structure and endpoints are updated accordingly before deploying to production.
Updated 2 days ago
