OpenAI API

Uploads

Use Uploads to upload large files in multiple parts.

Creates an intermediate [Upload](/docs/api-reference/uploads/object) object that you can add [Parts](/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](/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`s, the correct `mime_type` must be specified. Please refer to documentation for the supported MIME types for your use case: - [Assistants](/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](/docs/api-reference/files/create).

post
https://api.openai.com/v1/uploads

Body

application/json

CreateUploadRequest

* Additional properties are NOT allowed.
filenamestringrequired

The name of the file to upload.

purposestringrequired

The intended purpose of the uploaded file.

See the documentation on File purposes.

Allowed values:assistantsbatchfine-tunevision

bytesintegerrequired

The number of bytes in the file you are uploading.

mime_typestringrequired

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.

Response

200 application/json

OK

Upload

The Upload object can accept byte chunks in the form of Parts.

idstringrequired

The Upload unique identifier, which can be referenced in API endpoints.

created_atintegerrequired

The Unix timestamp (in seconds) for when the Upload was created.

filenamestringrequired

The name of the file to be uploaded.

bytesintegerrequired

The intended number of bytes to be uploaded.

purposestringrequired

The intended purpose of the file. Please refer here for acceptable values.

statusstringrequired

The status of the Upload.

Allowed values:pendingcompletedcancelledexpired

expires_atintegerrequired

The Unix timestamp (in seconds) for when the Upload was created.

objectstring

The object type, which is always “upload”.

Allowed values:upload

file

The ready File object after the Upload is completed.

Show Child Parameters
post/uploads

Body

{ "filename": "filename", "purpose": "assistants", "bytes": 0, "mime_type": "mime_type" }
 
200 application/json

Cancels the Upload. No Parts may be added after an Upload is cancelled.

post
https://api.openai.com/v1/uploads/{upload_id}/cancel

Path Parameters

upload_idstringrequired

The ID of the Upload.

Example:upload_abc123

Response

200 application/json

OK

Upload

The Upload object can accept byte chunks in the form of Parts.

idstringrequired

The Upload unique identifier, which can be referenced in API endpoints.

created_atintegerrequired

The Unix timestamp (in seconds) for when the Upload was created.

filenamestringrequired

The name of the file to be uploaded.

bytesintegerrequired

The intended number of bytes to be uploaded.

purposestringrequired

The intended purpose of the file. Please refer here for acceptable values.

statusstringrequired

The status of the Upload.

Allowed values:pendingcompletedcancelledexpired

expires_atintegerrequired

The Unix timestamp (in seconds) for when the Upload was created.

objectstring

The object type, which is always “upload”.

Allowed values:upload

file

The ready File object after the Upload is completed.

Show Child Parameters
post/uploads/{upload_id}/cancel
 
200 application/json

Completes the [Upload](/docs/api-reference/uploads/object). Within the returned Upload object, there is a nested [File](/docs/api-reference/files/object) object that is ready to use in the rest of the platform. You can specify the order of the Parts by passing in an ordered list of the Part IDs. The number of bytes uploaded upon completion must match the number of bytes initially specified when creating the Upload object. No Parts may be added after an Upload is completed.

post
https://api.openai.com/v1/uploads/{upload_id}/complete

Path Parameters

upload_idstringrequired

The ID of the Upload.

Example:upload_abc123

Body

application/json

CompleteUploadRequest

* Additional properties are NOT allowed.
part_idsarray[string]required

The ordered list of Part IDs.

md5string

The optional md5 checksum for the file contents to verify if the bytes uploaded matches what you expect.

Response

200 application/json

OK

Upload

The Upload object can accept byte chunks in the form of Parts.

idstringrequired

The Upload unique identifier, which can be referenced in API endpoints.

created_atintegerrequired

The Unix timestamp (in seconds) for when the Upload was created.

filenamestringrequired

The name of the file to be uploaded.

bytesintegerrequired

The intended number of bytes to be uploaded.

purposestringrequired

The intended purpose of the file. Please refer here for acceptable values.

statusstringrequired

The status of the Upload.

Allowed values:pendingcompletedcancelledexpired

expires_atintegerrequired

The Unix timestamp (in seconds) for when the Upload was created.

objectstring

The object type, which is always “upload”.

Allowed values:upload

file

The ready File object after the Upload is completed.

Show Child Parameters
post/uploads/{upload_id}/complete

Body

{ "part_ids": [ "[]" ] }
 
200 application/json

Adds a [Part](/docs/api-reference/uploads/part-object) to an [Upload](/docs/api-reference/uploads/object) object. A Part represents a chunk of bytes from the file you are trying to upload. Each Part can be at most 64 MB, and you can add Parts until you hit the Upload maximum of 8 GB. It is possible to add multiple Parts in parallel. You can decide the intended order of the Parts when you [complete the Upload](/docs/api-reference/uploads/complete).

post
https://api.openai.com/v1/uploads/{upload_id}/parts

Path Parameters

upload_idstringrequired

The ID of the Upload.

Example:upload_abc123

Body

multipart/form-data

AddUploadPartRequest

* Additional properties are NOT allowed.
datastringrequired

The chunk of bytes for this Part.

Response

200 application/json

OK

UploadPart

The upload Part represents a chunk of bytes we can add to an Upload object.

idstringrequired

The upload Part unique identifier, which can be referenced in API endpoints.

created_atintegerrequired

The Unix timestamp (in seconds) for when the Part was created.

upload_idstringrequired

The ID of the Upload object that this Part was added to.

objectstringrequired

The object type, which is always upload.part.

Allowed values:upload.part

post/uploads/{upload_id}/parts

Body

{ "data": "data" }
 
200 application/json