---
title: "Upload Voluntary Document (Public)"
method: POST
path: "/api/public/intake/voluntary-documents"
tags: ["Public Intake Requests"]
---

# Upload Voluntary Document (Public)

`POST /api/public/intake/voluntary-documents`

## Request

- Base URL: `https://api.signalshq.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.signalshq.io/api/public/intake/voluntary-documents`
- Auth: none declared. Required headers: `X-Intake-Token`

Upload a document voluntarily without document type. These documents are not counted in request totals. Uses X-Intake-Token header. No authentication required.

## Headers

- `X-Intake-Token` string, required: Secure intake token for document upload request

## Request body `multipart/form-data`

- BodyUploadVoluntaryDocumentApiPublicIntakeVoluntaryDocumentsPost
  - `file` string, binary, required: Document file to upload
  - `description` string, nullable: Description of the voluntary document

## Response `201`

Successful Response

- PublicDocumentUploadResponse: Schema for successful public document upload
  - `success` boolean: Whether the upload was successful
  - `message` string, required: Success message
  - `item_id` string, uuid, required: ID of the request item that was uploaded
  - `document_id` string, uuid, required: ID of the uploaded document
  - `document_name` string, required: Name of the uploaded document
  - `file_size` integer, required: Size of the uploaded file in bytes
  - `uploaded_at` string, date-time, required: When the document was uploaded
  - `request_info` UploadRequestInfo, required: Schema for upload request information
    - `request_title` string, required: Title of the upload request
    - `completed_items` integer, required: Number of completed items
    - `total_items` integer, required: Total number of items (excluding voluntary documents)
    - `remaining_items` integer, required: Number of remaining items to upload
    - `uploaded_items` integer, required: Number of uploaded items (alias for completed_items, kept for backward compatibility)
    - `status` string, required: Status of the upload request
    - `can_submit` boolean, required: Whether the request can be submitted

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/signalshq/apis/signals-api.md) - [All operations](https://skmtc.dev/signalshq/apis/signals-api/llms.txt) - [OpenAPI document](https://skmtc.dev/signalshq/apis/signals-api/revisions/2c22af3b5576?raw)
