Resources
Uploads — Create
OpenAI API endpoint method reference.
For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending
.mdto the page URL.
Create upload
post /uploads
Creates an intermediate Upload↗ object that you can add Parts↗ 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↗ 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↗.
For guidance on the proper filename extensions for each purpose, please follow the documentation on creating a File↗.
Returns the Upload object with status pending.
Body Parameters
-
bytes: numberThe number of bytes in the file you are uploading.
-
filename: stringThe name of the file to upload.
-
mime_type: stringThe 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.
-
purpose: "assistants" or "batch" or "fine-tune" or "vision"The intended purpose of the uploaded file.
See the documentation on File purposes↗.
-
"assistants" -
"batch" -
"fine-tune" -
"vision"
-
-
expires_after: optional object { anchor, seconds }The expiration policy for a file. By default, files with
purpose=batchexpire after 30 days and all other files are persisted until they are manually deleted.-
anchor: "created_at"Anchor timestamp after which the expiration policy applies. Supported anchors:
created_at."created_at"
-
seconds: numberThe number of seconds after the anchor time that the file will expire. Must be between 3600 (1 hour) and 2592000 (30 days).
-
Returns
-
Upload object { id, bytes, created_at, 6 more }The Upload object can accept byte chunks in the form of Parts.
-
id: stringThe Upload unique identifier, which can be referenced in API endpoints.
-
bytes: numberThe intended number of bytes to be uploaded.
-
created_at: numberThe Unix timestamp (in seconds) for when the Upload was created.
-
expires_at: numberThe Unix timestamp (in seconds) for when the Upload will expire.
-
filename: stringThe name of the file to be uploaded.
-
purpose: stringThe intended purpose of the file. Please refer here↗ for acceptable values.
-
status: "pending" or "completed" or "cancelled" or "expired"The status of the Upload.
-
"pending" -
"completed" -
"cancelled" -
"expired"
-
-
file: optional FileObject or nullThe
Fileobject represents a document that has been uploaded to OpenAI.-
id: stringThe file identifier, which can be referenced in the API endpoints.
-
bytes: numberThe size of the file, in bytes.
-
created_at: numberThe Unix timestamp (in seconds) for when the file was created.
-
filename: stringThe name of the file.
-
object: "file"The object type, which is always
file."file"
-
purpose: "assistants" or "assistants_output" or "batch" or 5 moreThe intended purpose of the file. Supported values are
assistants,assistants_output,batch,batch_output,fine-tune,fine-tune-results,vision, anduser_data.-
"assistants" -
"assistants_output" -
"batch" -
"batch_output" -
"fine-tune" -
"fine-tune-results" -
"vision" -
"user_data"
-
-
status: "uploaded" or "processed" or "error"Deprecated. The current status of the file, which can be either
uploaded,processed, orerror.-
"uploaded" -
"processed" -
"error"
-
-
expires_at: optional numberThe Unix timestamp (in seconds) for when the file will expire.
-
status_details: optional stringDeprecated. For details on why a fine-tuning training file failed validation, see the
errorfield onfine_tuning.job.
-
-
object: optional "upload"The object type, which is always "upload".
"upload"
-
Example
curl https://api.openai.com/v1/uploads \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"bytes": 0,
"filename": "filename",
"mime_type": "mime_type",
"purpose": "assistants"
}'
Response
{
"id": "id",
"bytes": 0,
"created_at": 0,
"expires_at": 0,
"filename": "filename",
"purpose": "purpose",
"status": "pending",
"file": {
"id": "id",
"bytes": 0,
"created_at": 0,
"filename": "filename",
"object": "file",
"purpose": "assistants",
"status": "uploaded",
"expires_at": 0,
"status_details": "status_details"
},
"object": "upload"
}
Example
curl https://api.openai.com/v1/uploads \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"purpose": "fine-tune",
"filename": "training_examples.jsonl",
"bytes": 2147483648,
"mime_type": "text/jsonl",
"expires_after": {
"anchor": "created_at",
"seconds": 3600
}
}'
Response
{
"id": "upload_abc123",
"object": "upload",
"bytes": 2147483648,
"created_at": 1719184911,
"filename": "training_examples.jsonl",
"purpose": "fine-tune",
"status": "pending",
"expires_at": 1719127296
}