# Method: files.insert

- [HTTP request](https://developers.google.com/workspace/drive/api/reference/rest/v2/files/insert#body.HTTP_TEMPLATE)
- [Query parameters](https://developers.google.com/workspace/drive/api/reference/rest/v2/files/insert#body.QUERY_PARAMETERS)
- [Request body](https://developers.google.com/workspace/drive/api/reference/rest/v2/files/insert#body.request_body)
- [Response body](https://developers.google.com/workspace/drive/api/reference/rest/v2/files/insert#body.response_body)
- [Authorization scopes](https://developers.google.com/workspace/drive/api/reference/rest/v2/files/insert#body.aspect)
- [Try it!](https://developers.google.com/workspace/drive/api/reference/rest/v2/files/insert#try-it)

<br />

Inserts a new file.

This method supports an **/upload** URI and accepts uploaded media with the following characteristics:

- **Maximum file size:** 5,120 GB
- **Accepted Media MIME types:** `*/*`

Note: Specify a valid MIME type, rather than the literal `*/*` value. The literal `*/*` is only used to indicate that any valid MIME type can be uploaded.

For more information on uploading files, see [Upload file data](https://developers.google.com/workspace/drive/api/guides/manage-uploads).

Apps creating shortcuts with `files.insert` must specify the MIME type `application/vnd.google-apps.shortcut`.

Apps should specify a file extension in the `title` property when inserting files with the API. For example, an operation to insert a JPEG file should specify something like `"title": "cat.jpg"` in the metadata.

Subsequent `GET` requests include the read-only `fileExtension` property populated with the extension originally specified in the `title` property. When a Google Drive user requests to download a file, or when the file is downloaded through the sync client, Drive builds a full filename (with extension) based on the title. In cases where the extension is missing, Drive attempts to determine the extension based on the file's MIME type.

### HTTP request

- Upload URI, for media upload requests:  
  `POST https://www.googleapis.com/upload/drive/v2/files`
- Metadata URI, for metadata-only requests:  
  `POST https://www.googleapis.com/drive/v2/files`

The URL uses [gRPC Transcoding](https://google.aip.dev/127) syntax.

### Query parameters

| Parameters ||
|---|---|
| `convert` | `boolean` Whether to convert this file to the corresponding Docs Editors format. |
| `enforceSingleParent (deprecated)` | `boolean` Deprecated: Creating files in multiple folders is no longer supported. |
| `ocr` | `boolean` Whether to attempt OCR on .jpg, .png, .gif, or .pdf uploads. |
| `ocrLanguage` | `string` If ocr is true, hints at the language to use. Valid values are BCP 47 codes. |
| `pinned` | `boolean` Whether to pin the head revision of the uploaded file. A file can have a maximum of 200 pinned revisions. |
| `supportsAllDrives` | `boolean` Whether the requesting application supports both My Drives and shared drives. |
| `supportsTeamDrives (deprecated)` | `boolean` Deprecated: Use `supportsAllDrives` instead. |
| `timedTextLanguage` | `string` The language of the timed text. |
| `timedTextTrackName` | `string` The timed text track name. |
| `uploadType` | `string` The type of upload request to the `/upload` URI. If you are uploading data with an `/upload` URI, this field is required. If you are creating a metadata-only file, this field isn't required. Additionally, this field isn't shown in the "Try this method" widget because the widget doesn't support data uploads. Acceptable values are: - `media` - [Simple upload](https://developers.google.com/drive/api/guides/manage-uploads#simple). Upload the media only, without any metadata. - `multipart` - [Multipart upload](https://developers.google.com/drive/api/guides/manage-uploads#multipart). Upload both the media and its metadata, in a single request. - `resumable` - [Resumable upload](https://developers.google.com/drive/api/guides/manage-uploads#resumable). Upload the file in a resumable fashion, using a series of at least two requests where the first request includes the metadata. |
| `useContentAsIndexableText` | `boolean` Whether to use the content as indexable text. |
| `visibility` | ``enum (`https://developers.google.com/workspace/drive/api/reference/rest/v2/Visibility`)`` The visibility of the new file. Permissions are still inherited from parent folders. This parameter is only relevant when `convert=false`. |
| `includePermissionsForView` | `string` Specifies which additional view's permissions to include in the response. Only `published` is supported. |
| `includeLabels` | `string` A comma-separated list of IDs of labels to include in the `labelInfo` part of the response. |

### Request body

The request body contains an instance of `https://developers.google.com/workspace/drive/api/reference/rest/v2/files#File`.

### Response body

If successful, the response body contains an instance of `https://developers.google.com/workspace/drive/api/reference/rest/v2/files#File`.

### Authorization scopes

Requires one of the following OAuth scopes:

- `https://www.googleapis.com/auth/docs`
- `
  https://www.googleapis.com/auth/drive`
- `
  https://www.googleapis.com/auth/drive.appdata`
- `
  https://www.googleapis.com/auth/drive.apps.readonly`
- `
  https://www.googleapis.com/auth/drive.file`

Some scopes are restricted and require a security assessment for your app to use them. For more information, see the [Authorization guide](https://developers.google.com/workspace/guides/configure-oauth-consent).