# Upload File

Source: https://www.digiparser.com/docs/api/uploadDocumentFile

# Upload File

Server URL`loading...`

POST

/`api`/`v1`/`process`/`{parserId}`/`files`

Send

Authorization

Path

Body

Upload a document file to process and extract data.

**What you need:**

*   **Parser ID**: Find it in Parser Settings -> General Settings
*   **API Key**: Generate it from Team Settings -> API Keys

**How to use:**

*   Endpoint: `POST /api/v1/process/{parserId}/files`
*   Send the request as `multipart/form-data` with field name `file`
*   (Optional) Provide additional fields:
    *   `folderId`: Folder UUID to assign the created document(s)
    *   `externalIds`: JSON-encoded array of external IDs (one per uploaded file)
    *   `custom`: JSON-encoded array of tracking objects (one per uploaded file)
*   Include your API key in the `Authorization` header

**What you get:**

*   Response includes `documentId` for the uploaded document
*   Document status will be `processing` initially
*   Use the `documentId` with the "Get Document Data" endpoint to retrieve extracted data once processing is complete

## [Authorization](#authorization)

`bearerAuth`

authorization<token>

Your API key. Include it directly in the Authorization header as the API key value (e.g., 'authorization: your-api-key-here')

In: `header`

## [Path Parameters](#path-parameters)

parserId\*string

The ID of the parser

Format`uuid`

## [Request Body](#request-body)

`multipart/form-data`

File to upload (plus optional `externalIds`, `custom`, and `folderId`)

file\*file

The document file to upload

Format`binary`

externalIds?string

Optional JSON-encoded array string of external IDs (e.g. `["doc-123"]`). When provided, the array length must match the number of uploaded `file` entries.

custom?string

Optional JSON-encoded array string of tracking objects (e.g. `[{"batchId":"xyz"}]`). When provided, the array length must match the number of uploaded `file` entries.

folderId?string

Optional folder UUID to assign created documents to that folder. The folder must belong to the same parser/team and must not be deleted.

## [Response Body](#response-body)

### 200

`application/json`

### 400

`application/json`

cURL

JavaScript

Go

Python

Java

C#

```
curl -X POST "https://api.digiparser.com/api/v1/process/d1458cd7-8692-488f-8b3f-0fddade05f9c/files" \  -F file="string"
```

200400

```
{
  "success": true,
  "result": [
    {
      "id": "2b9b1243-3d94-42b0-9515-729c7404e3b7",
      "name": "sample-invoice.pdf",
      "url": "https://documents.digiparser.com/resources/t/01dd1542-7aac-463c-8eda-a7e042fd5876/p/d1458cd7-8692-488f-8b3f-0fddade05f9c/d/2b9b1243-3d94-42b0-9515-729c7404e3b7/sample-invoice.pdf?sig=70adb475a196e71cd2f82c40623bb9be94647aff0d187120ee39c9fd9c7a10d0",
      "isProcessed": false,
      "status": "processing",
      "message": "Extraction started: EXTRACT (f19c7e5b-efb1-48fd-bcd1-876b7aa211a7) job initiated (markdown parsing disabled)",
      "operationName": "f19c7e5b-efb1-48fd-bcd1-876b7aa211a7",
      "documentId": "2b9b1243-3d94-42b0-9515-729c7404e3b7",
      "pageCount": 1,
      "externalId": "doc-123",
      "custom": {
        "batchId": "xyz",
        "customerId": "pqr"
      }
    }
  ]
}
```

```
{
  "error": true,
  "message": "Parser ID mismatch"
}
```

[

Reprocess Document POST

Re-run extraction for an already uploaded document (useful after adding new parser fields). \*\*Request body:\*\* Provide exactly one of \`documentId\` or \`externalId\`. - \`documentId\` and \`externalId\` cannot be sent together. - If neither is provided, the API returns \`400\`.

](/docs/api/reprocessDocument)[

Upload via URL POST

Upload a document by providing a URL pointing to the document file. \*\*What you need:\*\* - \*\*Parser ID\*\*: Find it in Parser Settings -> General Settings - \*\*API Key\*\*: Generate it from Team Settings -> API Keys - \*\*Document URL\*\*: A publicly accessible URL to the document file \*\*How to use:\*\* - Endpoint: \`POST /api/v1/process/{parserId}/urls\` - Send a JSON body (application/json) - Include your API key in the \`Authorization\` header - Optional fields: - \`folderId\`: Folder UUID to assign created documents to that folder - \`externalIds\`: Array of external IDs (one per URL); length must match \`urls\` if provided - \`custom\`: Array of tracking objects (one per URL); length must match \`urls\` if provided - \`urls\` can contain up to 20 URLs per request \*\*Example:\*\* \`\`\`json { "urls": \["https://example.com/document.pdf"\], "externalIds": \["doc-123"\], "custom": \[{"batchId":"xyz"}\], "folderId": "YOUR\_FOLDER\_ID" } \`\`\` \*\*What you get:\*\* - Response includes \`documentId\` for each uploaded document - Document status will be \`processing\` initially - Use the \`documentId\` with the "Get Document Data" endpoint to retrieve extracted data once processing is complete

](/docs/api/uploadDocumentUrls)