> You are reading the Docusign Developer Documentation. For clean Markdown of any page, append .md to the page URL.
>
> Documentation indexes by section:
> - APIs and SDKs: https://docusign.docs.buildwithfern.com/docs/llms.txt
> - Platform 101: https://docusign.docs.buildwithfern.com/platform/llms.txt
> - Extension Apps: https://docusign.docs.buildwithfern.com/extension-apps/llms.txt
> - Docusign CLI: https://docusign.docs.buildwithfern.com/docusign-cli/llms.txt
>
> Authentication (OAuth, JWT Grant, M2M): https://docusign.docs.buildwithfern.com/platform/auth
> Webhooks and Connect: https://docusign.docs.buildwithfern.com/platform/webhooks
>
> OpenAPI specifications: https://docusign.docs.buildwithfern.com/openapi.json
> MCP server: https://docusign.docs.buildwithfern.com/_mcp/server

# Create bulk job

POST https://api-d.docusign.com/v1/accounts/{accountId}/upload/jobs
Content-Type: application/json

Create a new job, give presigned URLs back, the client will upload to Azure Blob Store directly.

**Important Upload Workflow**:

1. Call this endpoint to create a job and receive upload URLs
2. For each document in the response's `_embedded.documents` array, extract the `upload_document` URL from `_actions`
3. Upload your document file to each URL using an HTTP PUT request with the document content as binary data
4. After all documents are uploaded, call the `/actions/complete` endpoint to finalize the job
5. Use the GET endpoint to monitor job progress

**Example response structure**:

```json
{
  "_embedded": {
    "documents": [
      {
        "id": "8c566d26-e7fb-4b7e-870c-1d0fb8df9084",
        "sequence": 1,
        "_actions": {
          "upload_document": "https://docupstoragewestwu3dsto.blob.core.windows.net/..."
        }
      }
    ]
  }
}
```

**Azure Blob Storage Upload Instructions**:

Use the pre-signed URL from step 2 to upload your document directly to Azure Blob Storage:

*
*
*
*

```bash
PUT [pre-signed URL from _actions.upload_document]

Headers:

x-ms-blob-type: BlockBlob (Required)
x-ms-meta-filename: YourDocumentName.pdf (Recommended)
Content-Type: application/pdf (Required)
x-ms-meta-metadata: <stringified JSON metadata> (Optional)

Body: [Your document binary data]
```

**Important Notes**:

* The `upload_document` URLs are pre-signed Azure Blob Storage URLs with time-limited validity (8 hours)
* No Auth header is needed
* The `x-ms-meta-filename` header should contain your original document filename
* The `x-ms-blob-type` must be set to `BlockBlob`
* Setting the `Content-Type` header is recommended to match your document type
* If `Content-Type` is not specified, Azure defaults to `application/octet-stream`
* The `x-ms-meta-metadata` header 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**:

```json
{
  "provisions": {
    "jurisdiction": "California",
    "payment_terms_due_date": "OTHER"
  },
  "custom_provisions": {
    "c_ClientId": "value"
  },
  "linked_data": [
    {
      "application_name": "Salesforce",
      "object_name": "Account",
      "record_id": "579386BF-C8EA-4673-AE0E-E2F922B09DC5"
    },
    {
      "application_name": "Dynamics",
      "object_name": "Account",
      "record_id": "514CEAFB-1AC7-43FF-9E88-24CB15150963"
    }
  ]
}
```

**Stringified header value**:

The JSON must be stringified before being set as the header value. For example, the above JSON would become:

```text
x-ms-meta-metadata: "{\"provisions\":{\"jurisdiction\":\"California\",\"payment_terms_due_date\":\"OTHER\"},\"custom_provisions\":{\"c_ClientId\":\"value\"},\"linked_data\":[{\"application_name\":\"Salesforce\",\"object_name\":\"Account\",\"record_id\":\"579386BF-C8EA-4673-AE0E-E2F922B09DC5\"},{\"application_name\":\"Dynamics\",\"object_name\":\"Account\",\"record_id\":\"514CEAFB-1AC7-43FF-9E88-24CB15150963\"}]}"
```

**Metadata Notes**:

* The `x-ms-meta-metadata` header 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 extensions
* `headers`: Required HTTP headers with examples
* `constraints`: Maximum file size and other limits
* `success_status_code`: Expected response code for successful uploads

| Format                           | Extension   | Content-Type                                                                |
| -------------------------------- | ----------- | --------------------------------------------------------------------------- |
| PDF                              | .pdf        | `application/pdf`                                                           |
| Word Document (2007+)            | .docx       | `application/vnd.openxmlformats-officedocument.wordprocessingml.document`   |
| Word Document (Legacy)           | .doc        | `application/msword`                                                        |
| PowerPoint Presentation (2007+)  | .pptx       | `application/vnd.openxmlformats-officedocument.presentationml.presentation` |
| PowerPoint Presentation (Legacy) | .ppt        | `application/vnd.ms-powerpoint`                                             |
| PowerPoint Slideshow             | .ppsx       | `application/vnd.openxmlformats-officedocument.presentationml.slideshow`    |
| Excel Workbook (2007+)           | .xlsx       | `application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`         |
| Excel Workbook (Legacy)          | .xls        | `application/vnd.ms-excel`                                                  |
| Excel Binary Workbook            | .xlsb       | `application/vnd.ms-excel.sheet.binary.macroenabled.12`                     |
| Rich Text Format                 | .rtf        | `text/rtf`                                                                  |
| WordPerfect Document             | .wpd        | `application/vnd.wordperfect`                                               |
| HTML                             | .html, .htm | `text/html`                                                                 |
| JPEG Image                       | .jpg, .jpeg | `image/jpeg`                                                                |
| PNG Image                        | .png        | `image/png`                                                                 |
| TIFF Image                       | .tif, .tiff | `image/tiff`                                                                |

**Example Upload Requests**:

PDF Document (with optional metadata):

```bash
PUT https://storage.blob.core.windows.net/container/doc-id?signature=...
Content-Type: application/pdf
x-ms-blob-type: BlockBlob
x-ms-meta-filename: contract.pdf
x-ms-meta-metadata: "{\"provisions\":{\"jurisdiction\":\"California\"},\"custom_provisions\":{\"c_ClientId\":\"value\"}}"

[Binary PDF data]
```

Word Document:

```bash
PUT https://storage.blob.core.windows.net/container/doc-id?signature=...
Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document
x-ms-blob-type: BlockBlob
x-ms-meta-filename: agreement.docx

[Binary DOCX data]
```

Image:

```bash
PUT https://storage.blob.core.windows.net/container/doc-id?signature=...
Content-Type: image/jpeg
x-ms-blob-type: BlockBlob
x-ms-meta-filename: signed-page.jpg

[Binary JPEG data]
```

Reference: https://developers.docusign.com/docs/agreement-manager-api/reference/agreementmanager/bulkjob/createbulkuploadjob

## Authentication

- `Authorization` header (bearer token, required) — 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

## Servers

- `https://api-d.docusign.com` (Demo server, default)
- `https://api.docusign.com` (Production server)

## Request

### Path parameters

- `accountId` (string, required)

### Body (application/json)

This endpoint expects a CreateBulkJob.

- `expected_number_of_docs` (integer, required) — Number of docs this job will have. Will use provided document_requests size if there is a mismatch.
- `job_name` (string, optional) — Name for the new job to be created. If empty, server will auto-create name for the job.
- `language` (string, optional) — Language for the user, such as en-US, en-GB, if not provided will default to en-US.

## Response

### 200

Job created successfully

- `id` (string, required) — Id for job
- `name` (string, required) — User provided name for this job
- `status` (enum, required) — 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
  - Allowed values: `OPEN`, `UPLOAD_COMPLETE`, `IN_PROGRESS`, `COMPLETE`, `FAILED`, `CANCELED`
- `status_enum` (list of string, required)
- `created_at` (string, required)
- `modified_at` (string, required)
- `expires_at` (string, required)
- `metadata` (BulkJobMetadata, required) — Properties about THIS request/response, not the job resource itself
- `external_job_id` (string, optional) — User provided reference ID for this job
- `ttl_period` (string, optional) — ISO 8601 duration for job validity
- `upload_settings` (UploadSettings, optional) — Upload configuration settings for the bulk job
- `ai_processing` (AiProcessingStatus, optional) — 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.
- `summary` (BulkJobSummary, optional) — 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).
- `_embedded` (BulkJobEmbedded, optional) — Contains detailed information about the BulkJob including presigned upload links, document IDs, etc
- `_action_templates` (BulkJobActionTemplates, optional)
- `_links` (BulkJobLinks, optional)
- `constraints` (BulkJobConstraints, optional) — Describes the limits of a bulk job, or an action associated with a bulk job
- `message` (string, optional)

## Errors

### 400 Bad Request Error

Bad Request - The request was invalid or malformed

- `type` (string, required) — A URI reference that identifies the problem type. When dereferenced, it should provide human-readable documentation for the problem type. Use "about:blank" when no specific type documentation exists.
- `title` (string, required) — A short, human-readable summary of the problem type. Should not change between occurrences.
- `status` (integer, required) — The HTTP status code generated by the origin server for this occurrence of the problem.
- `detail` (string, optional) — A human-readable explanation specific to this occurrence of the problem.
- `instance` (string, optional) — A URI reference that identifies the specific occurrence of the problem (typically the request path).
- `errors` (list of ValidationError, optional) — An array of detailed validation error objects when multiple issues exist. Each entry identifies a specific field-level or parameter-level error.
- `request_id` (string, optional) — Unique identifier for the request, useful for tracing and debugging with support.
- `timestamp` (string, optional) — The timestamp when the error occurred.

### 401 Unauthorized Error

Unauthorized - Authentication is required

- `type` (string, required) — A URI reference that identifies the problem type. When dereferenced, it should provide human-readable documentation for the problem type. Use "about:blank" when no specific type documentation exists.
- `title` (string, required) — A short, human-readable summary of the problem type. Should not change between occurrences.
- `status` (integer, required) — The HTTP status code generated by the origin server for this occurrence of the problem.
- `detail` (string, optional) — A human-readable explanation specific to this occurrence of the problem.
- `instance` (string, optional) — A URI reference that identifies the specific occurrence of the problem (typically the request path).
- `errors` (list of ValidationError, optional) — An array of detailed validation error objects when multiple issues exist. Each entry identifies a specific field-level or parameter-level error.
- `request_id` (string, optional) — Unique identifier for the request, useful for tracing and debugging with support.
- `timestamp` (string, optional) — The timestamp when the error occurred.

### 403 Forbidden Error

Forbidden - The user is not authorized to perform this operation

- `type` (string, required) — A URI reference that identifies the problem type. When dereferenced, it should provide human-readable documentation for the problem type. Use "about:blank" when no specific type documentation exists.
- `title` (string, required) — A short, human-readable summary of the problem type. Should not change between occurrences.
- `status` (integer, required) — The HTTP status code generated by the origin server for this occurrence of the problem.
- `detail` (string, optional) — A human-readable explanation specific to this occurrence of the problem.
- `instance` (string, optional) — A URI reference that identifies the specific occurrence of the problem (typically the request path).
- `errors` (list of ValidationError, optional) — An array of detailed validation error objects when multiple issues exist. Each entry identifies a specific field-level or parameter-level error.
- `request_id` (string, optional) — Unique identifier for the request, useful for tracing and debugging with support.
- `timestamp` (string, optional) — The timestamp when the error occurred.

### 429 Too Many Requests Error

Too Many Requests - User has too many incomplete jobs

- `type` (string, required) — A URI reference that identifies the problem type. When dereferenced, it should provide human-readable documentation for the problem type. Use "about:blank" when no specific type documentation exists.
- `title` (string, required) — A short, human-readable summary of the problem type. Should not change between occurrences.
- `status` (integer, required) — The HTTP status code generated by the origin server for this occurrence of the problem.
- `detail` (string, optional) — A human-readable explanation specific to this occurrence of the problem.
- `instance` (string, optional) — A URI reference that identifies the specific occurrence of the problem (typically the request path).
- `errors` (list of ValidationError, optional) — An array of detailed validation error objects when multiple issues exist. Each entry identifies a specific field-level or parameter-level error.
- `request_id` (string, optional) — Unique identifier for the request, useful for tracing and debugging with support.
- `timestamp` (string, optional) — The timestamp when the error occurred.

### 500 Internal Server Error

Internal Server Error - An unexpected error occurred

- `type` (string, required) — A URI reference that identifies the problem type. When dereferenced, it should provide human-readable documentation for the problem type. Use "about:blank" when no specific type documentation exists.
- `title` (string, required) — A short, human-readable summary of the problem type. Should not change between occurrences.
- `status` (integer, required) — The HTTP status code generated by the origin server for this occurrence of the problem.
- `detail` (string, optional) — A human-readable explanation specific to this occurrence of the problem.
- `instance` (string, optional) — A URI reference that identifies the specific occurrence of the problem (typically the request path).
- `errors` (list of ValidationError, optional) — An array of detailed validation error objects when multiple issues exist. Each entry identifies a specific field-level or parameter-level error.
- `request_id` (string, optional) — Unique identifier for the request, useful for tracing and debugging with support.
- `timestamp` (string, optional) — The timestamp when the error occurred.

## Types

### BulkJobMetadata

Properties about THIS request/response, not the job resource itself

- `request_id` (string, optional)
- `response_timestamp` (string, optional) — When this response was generated
- `response_duration` (integer, optional) — Time in ms to process this request

### UploadSettings

Upload configuration settings for the bulk job

- `ai_extraction` (boolean, optional, default: true) — Controls AI extraction behavior for all documents in the job. - If set to false, AI processing is skipped for all documents in the job - If set to true or not provided (defaults to true), AI processing behavior is determined per document based on file type and size

### AiProcessingStatus

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.

- `resume_ai_triggered_at` (string, optional) — When resume-AI processing was triggered
- `processed` (integer, optional) — Number of documents that successfully completed AI processing
- `skipped` (integer, optional) — Number of documents where AI processing was skipped (file too large, unsupported format, or job-level opt-out)
- `in_progress` (integer, optional) — Number of documents currently being processed
- `failed` (integer, optional) — Number of documents that failed at any processing step

### BulkJobSummary

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).

- `total` (integer, optional) — Total number of documents in the job
- `agreements_created` (integer, optional) — Documents that successfully completed agreement creation (UPLOAD_TO_EMS/SUCCEEDED)
- `failed` (integer, optional) — Total documents that failed at any processing step
- `canceled` (integer, optional) — Total documents that were canceled
- `in_progress` (integer, optional) — Total documents still being processed (not yet in a terminal state)

### BulkJobEmbedded

Contains detailed information about the BulkJob including presigned upload links, document IDs, etc

- `document_status_enum` (list of string, optional) — All possible document status values
- `documents` (list of BulkJobEmbeddedItems, optional) — List of documents with presigned upload URLs
- `duplicate_count` (integer, optional) — Total number of documents flagged as duplicates in this job (may increase as checks complete). Omitted from the response when no deduplication results are available yet (no document has been checked).

### BulkJobActionTemplates

- `upload_document` (BulkJobActionTemplate, optional)

### BulkJobLinks

- `self` (string, optional)

### BulkJobConstraints

Describes the limits of a bulk job, or an action associated with a bulk job

- `max_size_mb` (integer, optional)
- `max_documents_per_job` (integer, optional)
- `allowed_formats` (list of string, optional)
- `timeout_seconds` (integer, optional)

### ValidationError

A single field-level or parameter-level validation error.

- `code` (string, required) — A machine-readable error code identifying the specific validation failure.
- `message` (string, required) — A human-readable description of the validation error.
- `target` (string, optional) — The name of the field, parameter, or path segment that caused the error.

### BulkJobEmbeddedItems

- `id` (string, optional) — Id of the document
- `agreement_id` (string, optional) — Agreement ID associated with this document, if created
- `sequence` (integer, optional) — Sequential order of the document
- `status` (enum, optional) — Document status. Last 4 are terminal statuses. Matches enum with similar name in the backend.
  - Allowed values: `NOT_STARTED`, `IN_PROGRESS`, `CANCELED`, `SUCCEEDED`, `SUCCEEDED_WITH_WARNINGS`, `FAILED`
- `file_name` (string, optional) — The name of the uploaded file
- `ai_extraction` (boolean, optional) — Whether AI extraction was performed on this document
- `error_code` (integer, optional) — Error code if document processing failed
- `error` (string, optional) — Error message if document processing failed
- `warnings` (list of DocumentWarning, optional) — List of warnings encountered during document processing. Present when status is SUCCEEDED_WITH_WARNINGS.
- `is_duplicate` (boolean, optional) — Whether this document was identified as a duplicate (exact or partial match). `true` when a duplicate; `false` when checked and not a duplicate. Omitted from the response when deduplication has not yet completed for this document.
- `_actions` (BulkJobItemActions, optional) — Available actions for this document. Actions vary based on document state - upload actions during initial upload, remediation actions after processing.
- `_links` (BulkJobEmbeddedItemsLinks, optional) — Hypermedia links related to this document

### BulkJobActionTemplate

- `method` (string, optional) — HTTP method used for this template
- `required` (boolean, optional) — Whether this action is required
- `description` (string, optional)
- `template_variables` (BulkJobActionTemplateTemplateVariables, optional) — Key value pairs of variable names and descriptions, explaining how they are to be used
- `headers` (BulkJobActionTemplateHeaders, optional) — Key value pairs of header names and example values
- `constraints` (BulkJobConstraints, optional) — Describes the limits of a bulk job, or an action associated with a bulk job
- `success_status_code` (integer, optional)
- `error_status_codes` (BulkJobActionTemplateErrorStatusCodes, optional) — Key value pairs of error response codes and explanations of those codes

### DocumentWarning

A warning encountered during document processing that did not prevent overall success.

- `code` (string, required) — Machine-readable warning code
- `message` (string, required) — Human-readable warning summary
- `recoverable` (boolean, required) — Whether this warning can be remediated by the client
- `detail` (string, optional) — Detailed diagnostic information about the warning
- `remedy` (string, optional) — Key referencing an action in `_actions` that can resolve this warning

### BulkJobItemActions

Available actions for this document. Actions vary based on document state - upload actions during initial upload, remediation actions after processing.

- `upload_document` (string, optional) — Azure Blob Store presigned URL to upload the document file (valid for ~8 hours)
- `update_metadata` (Affordance, optional) — Affordances (aka 'actions') describe the available operations on a resource, including CRUD and RPC-like operations. It details the expected input payload, http method, query parameters, and the resulting output. Affordances enable clients to dynamically adapt to the API's current state and available actions. Instead of hardcoding all possible endpoints and their associated logic, a client can inspect the affordances within a resource's representation to discover what actions are possible and how to perform them.

### BulkJobEmbeddedItemsLinks

Hypermedia links related to this document

- `document` (BulkJobEmbeddedItemsLinksDocument, optional) — Link to download the document
- `agreement` (BulkJobEmbeddedItemsLinksAgreement, optional) — Link to the associated agreement

### BulkJobActionTemplateTemplateVariables

Key value pairs of variable names and descriptions, explaining how they are to be used

### BulkJobActionTemplateHeaders

Key value pairs of header names and example values

### BulkJobActionTemplateErrorStatusCodes

Key value pairs of error response codes and explanations of those codes

### Affordance

Affordances (aka 'actions') describe the available operations on a resource, including CRUD and RPC-like operations. It details the expected input payload, http method, query parameters, and the resulting output. Affordances enable clients to dynamically adapt to the API's current state and available actions. Instead of hardcoding all possible endpoints and their associated logic, a client can inspect the affordances within a resource's representation to discover what actions are possible and how to perform them.

- `href` (string, optional) — A URI representing the location of the resource or operations.
- `method` (enum, optional) — The http method to use when invoking this affordance
  - Allowed values: `POST`, `GET`, `PATCH`, `PUT`, `DELETE`
- `required` (boolean, optional, default: false) — Indicates if an action must be performed on a resource. This may include a manadatory step as part of a business process, especially when failing to execute a subsequent action will leave the resource in a bad or incomplete state. # note: would it be necessary for manadatory/required actionsto be performed prior to an optional action # note: mandatory actions which have previously been executed on a resource should not be be returned in the server response # execept in cases where the resource is in a state that permits this action to be performed again.
- `sequence` (integer, optional) — Provides a stable and consistent order to a collection of resources. Useful when multiple processes are working in parallel to iterate over a collection of resources with a mandatory/required action.
- `description` (string, optional) — Placeholder
- `template_variables` (map from string to string, optional) — A natural language dictionary of JSON template variables used in invoke an action
- `headers` (map from string to string, optional) — Additional HTTP request headers needed in the request to invoke an action.
- `constraints` (any, optional) — Limits and restrictions on
- `success_status_code` (integer, optional) — Success status codes (2xx range) indicating the request was received, understood, and accepted. Common codes: - 200: OK - Standard successful response - 201: Created - Resource successfully created - 202: Accepted - Request accepted for processing - 204: No Content - Successful with no response body - 206: Partial Content - Partial resource returned

### BulkJobEmbeddedItemsLinksDocument

Link to download the document

- `href` (string, optional) — URL to download the document

### BulkJobEmbeddedItemsLinksAgreement

Link to the associated agreement

- `href` (string, optional) — URL to the agreement resource

## Examples

### BulkJobCreated

**Response**

```json
{
  "id": "12345678-1234-1234-1234-123456789012",
  "name": "test_name",
  "status": "OPEN",
  "status_enum": [
    "OPEN",
    "UPLOAD_COMPLETE",
    "IN_PROGRESS",
    "COMPLETE",
    "FAILED",
    "CANCELED"
  ],
  "created_at": "2025-10-27T20:09:55.119961364Z",
  "modified_at": "2025-10-27T20:09:55.119961564Z",
  "expires_at": "2025-10-30T20:09:55.119961364Z",
  "metadata": {
    "response_timestamp": "2025-10-27T20:09:55.202807429Z",
    "response_duration": 447
  },
  "ttl_period": "P3D",
  "_embedded": {
    "documents": [
      {
        "id": "12345678-1234-1234-1234-123456789012",
        "sequence": 1,
        "_actions": {
          "upload_document": "https://docupstoragewestwu3dsto.blob.core.windows.net/12345678-1234-1234-1234-123456789012/12345678-1234-1234-1234-123456789012?sv=2023-01-03&st=2025-10-27T20%3A04%3A55Z&se=2025-10-28T04%3A09%3A55Z&sr=b&sp=cw&sig=P4dqlDKRsCFqFmoJI1w8zn62UBVzcuCfmJbSUE5jkgs%3D"
        }
      }
    ]
  },
  "_action_templates": {
    "upload_document": {
      "method": "PUT",
      "required": true,
      "description": "Upload the document binary content",
      "template_variables": {
        "document_name": "Client-provided filename, used in x-ms-meta-filename header"
      },
      "headers": {
        "x-ms-blob-type": "BlockBlob",
        "x-ms-meta-filename": "{document_name}",
        "x-ms-meta-metadata": "{stringified_json_metadata}"
      },
      "constraints": {
        "max_size_mb": 100,
        "allowed_formats": [
          "pdf",
          "docx",
          "txt"
        ],
        "timeout_seconds": 300
      },
      "success_status_code": 200
    }
  },
  "constraints": {
    "max_documents_per_job": 10000
  },
  "message": "Files exceeding 100MB or more than 10,000 per job will be rejected."
}
```

### BulkJob_createBulkUploadJob_example

**Request**

```json
{
  "expected_number_of_docs": 2,
  "job_name": "Q4 2025 Contracts",
  "language": "en-US"
}
```

**Response**

```json
{
  "id": "12345678-1234-1234-1234-123456789012",
  "name": "test_name",
  "status": "OPEN",
  "status_enum": [
    "OPEN",
    "UPLOAD_COMPLETE",
    "IN_PROGRESS",
    "COMPLETE",
    "FAILED",
    "CANCELED"
  ],
  "created_at": "2025-10-27T20:09:55.119961364Z",
  "modified_at": "2025-10-27T20:09:55.119961564Z",
  "expires_at": "2025-10-30T20:09:55.119961364Z",
  "metadata": {
    "response_timestamp": "2025-10-27T20:09:55.202807429Z",
    "response_duration": 447
  },
  "ttl_period": "P3D",
  "_embedded": {
    "documents": [
      {
        "id": "12345678-1234-1234-1234-123456789012",
        "sequence": 1,
        "_actions": {
          "upload_document": "https://docupstoragewestwu3dsto.blob.core.windows.net/12345678-1234-1234-1234-123456789012/12345678-1234-1234-1234-123456789012?sv=2023-01-03&st=2025-10-27T20%3A04%3A55Z&se=2025-10-28T04%3A09%3A55Z&sr=b&sp=cw&sig=P4dqlDKRsCFqFmoJI1w8zn62UBVzcuCfmJbSUE5jkgs%3D"
        }
      }
    ]
  },
  "_action_templates": {
    "upload_document": {
      "method": "PUT",
      "required": true,
      "description": "Upload the document binary content",
      "template_variables": {
        "document_name": "Client-provided filename, used in x-ms-meta-filename header"
      },
      "headers": {
        "x-ms-blob-type": "BlockBlob",
        "x-ms-meta-filename": "{document_name}",
        "x-ms-meta-metadata": "{stringified_json_metadata}"
      },
      "constraints": {
        "max_size_mb": 100,
        "allowed_formats": [
          "pdf",
          "docx",
          "txt"
        ],
        "timeout_seconds": 300
      },
      "success_status_code": 200
    }
  },
  "constraints": {
    "max_documents_per_job": 10000
  },
  "message": "Files exceeding 100MB or more than 10,000 per job will be rejected."
}
```