---
title: "Create Deal Document Upload"
method: POST
path: "/api/external/v2/deals/{deal_id}/document-uploads"
tags: ["external-v2-documents"]
---

# Create Deal Document Upload

`POST /api/external/v2/deals/{deal_id}/document-uploads`

## Request

- Base URL: `https://api.lev.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.lev.com/api/external/v2/deals/{deal_id}/document-uploads`
- Auth: none declared

Step 1 of an upload. Same controller call as the ``getDocumentUploadUrl`` mutation.

## Path parameters

- `deal_id` integer, required

## Request body

- CreateDealDocumentUploadRequest: Body for POST /api/external/v2/deals/<deal_id>/document-uploads. Mirrors the ``getDocumentUploadUrl`` mutation with ``purpose: deal``.
  - `file_name` string, required: File name with extension, e.g. ``OM.pdf``.

## Response `201`

Successful Response

- DealDocumentUploadTargetObjectResponse: OpenAPI schema for POST /api/external/v2/deals/<deal_id>/document-uploads (object envelope).
  - `request_id` string, required
  - `timestamp` string, required
  - `data` DealDocumentUploadTargetResponse, required: A pre-signed S3 POST form, the same payload the portal's ``getDocumentUploadUrl`` returns. POST a multipart form to ``upload_url`` with every ``upload_fields`` entry as a form field (in the order given) and the file as the last field named ``file``.
    - `upload_url` string, required
    - `upload_fields` object, required
    - `expires_in` integer, required
    - `file_name` string, required

## Other responses

- `422`: Validation Error

## Changes

- **2026-10-15** `bf1607c6be7e`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/lev/apis/lev-api/changes/api/external/v2/deals/:deal_id/document-uploads/post.md)

---

[API](https://skmtc.dev/lev/apis/lev-api.md) - [All operations](https://skmtc.dev/lev/apis/lev-api/llms.txt) - [OpenAPI document](https://skmtc.dev/lev/apis/lev-api/revisions/6330d0ef0603?raw)
