Create bulk job
Create a new job, give presigned URLs back, the client will upload to Azure Blob Store directly.
Important Upload Workflow:
- Call this endpoint to create a job and receive upload URLs
- For each document in the response’s
_embedded.documentsarray, extract theupload_documentURL from_actions - Upload your document file to each URL using an HTTP PUT request with the document content as binary data
- After all documents are uploaded, call the
/actions/completeendpoint to finalize the job - Use the GET endpoint to monitor job progress
Example response structure:
Azure Blob Storage Upload Instructions:
Use the pre-signed URL from step 2 to upload your document directly to Azure Blob Storage:
Important Notes:
- The
upload_documentURLs are pre-signed Azure Blob Storage URLs with time-limited validity (8 hours) - No Auth header is needed
- The
x-ms-meta-filenameheader should contain your original document filename - The
x-ms-blob-typemust be set toBlockBlob - Setting the
Content-Typeheader is recommended to match your document type - If
Content-Typeis not specified, Azure defaults toapplication/octet-stream - The
x-ms-meta-metadataheader is optional and allows you to attach metadata to the newly created agreement at upload time. See Applying Metadata to Agreements below for details
Applying Metadata to Agreements:
You may include metadata alongside the document bytes during upload. This metadata will be directly applied to the
newly created agreement. To do this, include the x-ms-meta-metadata header on the PUT operation with a stringified
JSON value.
The JSON schema for this header follows the same structure as the standard Agreement PATCH request body.
Example metadata JSON:
Stringified header value:
The JSON must be stringified before being set as the header value. For example, the above JSON would become:
Metadata Notes:
- The
x-ms-meta-metadataheader is entirely optional. If omitted, the agreement is created with AI-extracted values only - The JSON must be stringified (serialized to a single string) before being placed in the header value
- The metadata payload follows the same schema as the Agreement PATCH endpoint request body
- Values provided via metadata will be applied to the agreement after creation, overriding any AI-extracted values for the same fields
Firewall & Network Configuration:
If your organization uses firewalls or network restrictions, you may need to whitelist the following Azure Blob Storage domains to ensure successful document uploads. The upload URLs returned by this API will use one of these domains based on your account’s geographic region:
Primary Storage Endpoints:
https://docupstorageaustauepsto.blob.core.windows.net/https://docupstoragecanacacpsto.blob.core.windows.net/https://docupstoragecentcuspsto.blob.core.windows.net/https://docupstorageeasteu2psto.blob.core.windows.net/https://docupstorageeasteusdsto.blob.core.windows.net/(Demo)https://docupstoragejapajpepsto.blob.core.windows.net/https://docupstoragenortneupsto.blob.core.windows.net/https://docupstoragewestweupsto.blob.core.windows.net/https://docupstoragewestwu3dsto.blob.core.windows.net/(Demo)
Secondary Storage Endpoints (for redundancy/failover):
https://docupstorageaustauepsto-secondary.blob.core.windows.net/https://docupstoragecanacacpsto-secondary.blob.core.windows.net/https://docupstoragecentcuspsto-secondary.blob.core.windows.net/https://docupstorageeasteu2psto-secondary.blob.core.windows.net/https://docupstorageeasteusdsto-secondary.blob.core.windows.net/(Demo)https://docupstoragejapajpepsto-secondary.blob.core.windows.net/https://docupstoragenortneupsto-secondary.blob.core.windows.net/https://docupstoragewestweupsto-secondary.blob.core.windows.net/https://docupstoragewestwu3dsto-secondary.blob.core.windows.net/(Demo)
Note: You may whitelist all domains listed above, or contact your DocuSign administrator to determine which specific region(s) your account uses to minimize the whitelist scope.
Supported File Formats & Content Types:
The table below shows common file formats and their recommended Content-Type headers.
Note: For the most up-to-date list of supported formats, headers, and constraints, always refer to the
_action_templates object in the API response, which provides dynamic configuration including:
allowed_formats: Current list of supported file extensionsheaders: Required HTTP headers with examplesconstraints: Maximum file size and other limitssuccess_status_code: Expected response code for successful uploads
Example Upload Requests:
PDF Document (with optional metadata):
Word Document:
Image:
Authentication
OAuth2 authentication.
- Demo:
- authorizationUrl: https://account-d.docusign.com/oauth/auth
- tokenUrl: https://account-d.docusign.com/oauth/token
- Production:
- authorizationUrl: https://account.docusign.com/oauth/auth
- tokenUrl: https://account.docusign.com/oauth/token
Path parameters
Request
Number of docs this job will have. Will use provided document_requests size if there is a mismatch.
Name for the new job to be created. If empty, server will auto-create name for the job.
Language for the user, such as en-US, en-GB, if not provided will default to en-US.
Response
Job lifecycle states:
- OPEN - Job created and accepting documents
- UPLOAD_COMPLETE - All documents have been received, and processing has not yet started
- IN_PROGRESS - Documents are being processed (AI extraction)
- COMPLETE - The full e2e process is complete
- FAILED - System error prevented job execution
- CANCELED - User initiated request to cancel a job
Properties about THIS request/response, not the job resource itself
AI processing status for BULK_API_INGESTION jobs. Always present; resume_ai_triggered_at is set only for jobs where resume-AI processing was triggered.
Aggregate document counts. Always present in the job status response alongside _embedded.documents (when include_document_details=true) or as the sole count source (when false).