---
updatedAt: 2026-05-22T15:55:23.000Z
agentTools:
  projectIndex: https://developer.zylo.com/llms.txt
---

# Upload Contract Document

Upload a contract document in a single request using multipart/form-data.
Zylo handles the storage upload on your behalf, so there is no need for a
separate PUT step. Include one file as a form part named `file`, and
optionally pass a `description` text field.

After upload, Zylo automatically begins AI-powered contract data extraction.
Use the returned `company_document_id` with `GET /v2/companyDocuments/{id}`
to poll for processing status. Extracted data is available through the
Pending Contracts and Pending Contract Line Items resources once processing
completes.

Additional information is available in our Help Center article: [Contract Assist Uploads](https://zylo.zendesk.com/hc/en-us/articles/38969081381901-Extract-Contract-Data-with-Contract-Assist-Agent)

Accepted file types: pdf. Maximum file size: 25 MB.

### Required Permissions
`applications:write AND contracts:write`
### Rate Limit
`limited`

# OpenAPI definition

```json
{
  "openapi": "3.0.0",
  "components": {
    "schemas": {
      "ContractReviewableUploadResponse": {
        "properties": {
          "company_document_id": {
            "type": "string",
            "description": "UUID for the company document. Use this to poll for processing status."
          },
          "file_name": {
            "type": "string",
            "description": "The original file name."
          },
          "status": {
            "type": "string",
            "enum": [
              "uploading"
            ],
            "nullable": false,
            "description": "Status of the upload. 'uploading' means the file is in S3 and being processed by AI."
          }
        },
        "required": [
          "company_document_id",
          "file_name",
          "status"
        ],
        "type": "object",
        "additionalProperties": true
      }
    },
    "securitySchemes": {
      "apiKey": {
        "type": "http",
        "scheme": "bearer"
      }
    }
  },
  "info": {
    "title": "Resources",
    "version": "2.0.0"
  },
  "paths": {
    "/v2/pendingContracts/upload": {
      "post": {
        "operationId": "PendingContractsController_CreatePendingContractUpload",
        "responses": {
          "200": {
            "description": "Ok",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContractReviewableUploadResponse"
                }
              }
            }
          }
        },
        "description": "Upload a contract document in a single request using multipart/form-data.\nZylo handles the storage upload on your behalf, so there is no need for a\nseparate PUT step. Include one file as a form part named `file`, and\noptionally pass a `description` text field.\n\nAfter upload, Zylo automatically begins AI-powered contract data extraction.\nUse the returned `company_document_id` with `GET /v2/companyDocuments/{id}`\nto poll for processing status. Extracted data is available through the\nPending Contracts and Pending Contract Line Items resources once processing\ncompletes.\n\nAdditional information is available in our Help Center article: [Contract Assist Uploads](https://zylo.zendesk.com/hc/en-us/articles/38969081381901-Extract-Contract-Data-with-Contract-Assist-Agent)\n\nAccepted file types: pdf. Maximum file size: 25 MB.\n\n### Required Permissions\n`applications:write AND contracts:write`\n### Rate Limit\n`limited`",
        "summary": "Upload Contract Document",
        "tags": [
          "Contracts"
        ],
        "security": [
          {
            "apiKey": []
          }
        ],
        "parameters": [],
        "x-proxy-enabled": false
      }
    }
  },
  "servers": [
    {
      "url": "https://api.zylo.com/"
    }
  ],
  "tags": [
    {
      "name": "Contracts"
    }
  ]
}
```