---
title: "Create upload"
method: POST
path: "/uploads"
tags: ["Uploads"]
---

# Create upload

`POST /uploads`

Creates an intermediate [Upload](https://platform.openai.com/docs/api-reference/uploads/object) object
that you can add [Parts](https://platform.openai.com/docs/api-reference/uploads/part-object) to.
Currently, an Upload can accept at most 8 GB in total and expires after an
hour after you create it.

Once you complete the Upload, we will create a
[File](https://platform.openai.com/docs/api-reference/files/object) object that contains all the parts
you uploaded. This File is usable in the rest of our platform as a regular
File object.

For certain `purpose` values, the correct `mime_type` must be specified. 
Please refer to documentation for the 
[supported MIME types for your use case](https://platform.openai.com/docs/assistants/tools/file-search#supported-files).

For guidance on the proper filename extensions for each purpose, please
follow the documentation on [creating a
File](https://platform.openai.com/docs/api-reference/files/create).

Returns the Upload object with status `pending`.

## Request body

- CreateUploadRequest
  - `filename` string, required — The name of the file to upload.
  - `purpose` 'assistants' | 'batch' | 'fine-tune' | 'vision', required — The intended purpose of the uploaded file. See the [documentation on File purposes](https://platform.openai.com/docs/api-reference/files/create#files-create-purpose).
  - `bytes` integer, required — The number of bytes in the file you are uploading.
  - `mime_type` string, required — The MIME type of the file. This must fall within the supported MIME types for your file purpose. See the supported MIME types for assistants and vision.
  - `expires_after` FileExpirationAfter — The expiration policy for a file. By default, files with `purpose=batch` expire after 30 days and all other files are persisted until they are manually deleted.
    - `anchor` 'created_at', required — Anchor timestamp after which the expiration policy applies. Supported anchors: `created_at`.
    - `seconds` integer, required — The number of seconds after the anchor time that the file will expire. Must be between 3600 (1 hour) and 2592000 (30 days).

## Response `200`

OK

- Upload — The Upload object can accept byte chunks in the form of Parts.
  - `id` string, required — The Upload unique identifier, which can be referenced in API endpoints.
  - `created_at` integer, required — The Unix timestamp (in seconds) for when the Upload was created.
  - `filename` string, required — The name of the file to be uploaded.
  - `bytes` integer, required — The intended number of bytes to be uploaded.
  - `purpose` string, required — The intended purpose of the file. [Please refer here](https://platform.openai.com/docs/api-reference/files/object#files/object-purpose) for acceptable values.
  - `status` 'pending' | 'completed' | 'cancelled' | 'expired', required — The status of the Upload.
  - `expires_at` integer, required — The Unix timestamp (in seconds) for when the Upload will expire.
  - `object` 'upload', required — The object type, which is always "upload".
  - `file` object, nullable — The ready File object after the Upload is completed.
    - `id` string, required — The file identifier, which can be referenced in the API endpoints.
    - `bytes` integer, required — The size of the file, in bytes.
    - `created_at` integer, required — The Unix timestamp (in seconds) for when the file was created.
    - `expires_at` integer — The Unix timestamp (in seconds) for when the file will expire.
    - `filename` string, required — The name of the file.
    - `object` 'file', required — The object type, which is always `file`.
    - `purpose` 'assistants' | 'assistants_output' | 'batch' | 'batch_output' | 'fine-tune' | 'fine-tune-results' | 'vision' | 'user_data', required — The intended purpose of the file. Supported values are `assistants`, `assistants_output`, `batch`, `batch_output`, `fine-tune`, `fine-tune-results`, `vision`, and `user_data`.
    - `status` 'uploaded' | 'processed' | 'error', required — Deprecated. The current status of the file, which can be either `uploaded`, `processed`, or `error`.
    - `status_details` string — Deprecated. For details on why a fine-tuning training file failed validation, see the `error` field on `fine_tuning.job`.

---

[API](https://skmtc.net/openai/apis/openai-api.md) · [All operations](https://skmtc.net/openai/apis/openai-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/openai/openai-api/revisions/dcd35773a322/schema)
