Upload File

Upload and create a new file in Extend. This endpoint accepts file contents and registers them as a File in Extend, which can be used for [running workflows](https://docs.extend.ai/2026-02-09/developers/api-reference/endpoints/workflow/create-workflow-run), [creating evaluation set items](https://docs.extend.ai/2026-02-09/developers/api-reference/endpoints/evaluation/create-evaluation-set-item), [parsing](https://docs.extend.ai/2026-02-09/developers/api-reference/endpoints/parse/parse-file), etc. If an uploaded file is detected as a Word or PowerPoint document, it will be automatically converted to a PDF. Supported file types can be found [here](https://docs.extend.ai/2026-02-09/product/general/supported-file-types). This endpoint requires multipart form encoding. Most HTTP clients will handle this encoding automatically (see the examples).

Authentication

AuthorizationBearer

Bearer authentication of the form Bearer <token>, where token is your auth token.

Headers

x-extend-api-version"2026-02-09"Optional

API version to use for the request. If you’re using an SDK, you can ignore this parameter. If you are not using an SDK and do not specify a version, you will either receive a 400 Bad Request or be set to a previous legacy version. See API Versioning for more details.

Request

This endpoint expects a multipart form containing a file.
filefileRequired
The file contents to upload

Response

Successfully uploaded file
objectenum

The type of object. Will always be "file".

Allowed values:
idstring

ID for the file.

Example: "file_xK9mLPqRtN3vS8wF5hB2cQ"

namestring

The name of the file

Example: "Invoices.pdf"

typeenum or null

The type of the file.

Availability: Present when the file type could be determined.

presignedUrlstring or null

A presigned URL to download the file. Expires after 15 minutes.

Availability: Present on GET /files/{id}. Not present on POST /files/upload or when the file is embedded in other resources (e.g., in run responses).

parentFileIdstring or null

ID of the parent file.

Availability: Present for files created via a Splitter in a workflow.

metadataobject
createdAtstringformat: "date-time"

The time (in UTC) at which the object was created. Will follow the RFC 3339 format.

Example: "2024-03-21T16:45:00Z"

updatedAtstringformat: "date-time"

The time (in UTC) at which the object was last updated. Will follow the RFC 3339 format.

Example: "2024-03-21T16:45:00Z"

contentsobject or nullDeprecated
**Deprecated:** Use the `POST /parse_runs` endpoint instead to parse and retrieve file contents. The parse runs endpoint provides more control over parsing configuration and better performance. The parsed content of the file. This field will only contain data after the file has been parsed via a parse run, extract run, classify run, split run, edit run, or workflow run. **Availability:** Only present and populated on `GET /files/{id}` when the file has been previously parsed and the corresponding query parameters are set to true. Will be `null` on `POST /files/upload` and for files that haven't been parsed. The structure varies based on file type.

Errors