Performing a Simple Upload

This page describes how to make a simple upload request in the Drive API. A simple upload is the most straightforward method for uploading a file. Use this option if:

  • The file is small enough to upload again in its entirety if the connection fails.
  • There is no metadata to send. This might be true if you plan to send metadata for the file in a separate request, or if no metadata is available.

If you need to provide metadata for the file, you can use multipart upload or resumable upload instead. For larger files (more than 5 MB) or less reliable network connections, use resumable upload.

Learn about request URIs

When you upload media, you use a special URI. In fact, methods that support media uploads have two URI endpoints:

  • The /upload URI, for the media. The format of the /upload endpoint is the standard resource URI with an /upload prefix. Use this URI when transferring the media data itself. Example: POST /upload/drive/v3/files.
  • The standard resource URI, for the metadata. If the resource contains any data fields, those fields are used to store metadata describing the uploaded file. You can use this URI when creating or updating metadata values. Example: POST /drive/v3/files.

Sending a simple upload request

To use simple upload:

  1. Create a POST request to the method's /upload URI. To update an existing file, use PUT.
  2. Add the query parameter uploadType=media.

    For example:

  3. Add the file's data to the request body.

  4. Add the following HTTP headers:

    • Content-Type. Set to the MIME media type of the object being uploaded.
    • Content-Length. Set to the number of bytes you are uploading. This heading is not required if you are using chunked transfer encoding.
  5. Send the request.

Example: Sending a simple upload request

The following example shows a simple upload request:

Content-Type: image/jpeg
Authorization: Bearer [YOUR_AUTH_TOKEN]


If the request succeeds, the server returns the HTTP 200 OK status code along with the file's metadata:

HTTP/1.1 200
Content-Type: application/json

  "name": "myObject"

Handling errors

When uploading media, be sure to follow these best practices related to error handling:

  • Resume or retry uploads that fail due to connection interruptions or any 5xx errors, including:
    • 500 Internal Server Error
    • 502 Bad Gateway
    • 503 Service Unavailable
    • 504 Gateway Timeout
  • Resume or retry uploads that fail due to 403 rate limit errors.
  • Use an exponential backoff strategy if any 5xx server error is returned when resuming or retrying upload requests. These errors can occur if a server is getting overloaded. Exponential backoff can help alleviate these kinds of problems when there is a high volume of requests or heavy network traffic.

For additional details, see Handling API Errors

Send feedback about...

Need help? Visit our support page.