Stay organized with collectionsSave and categorize content based on your preferences.
The latest Google Drive API version is v3. The performance in v3 is better because
searches only return a subset of fields. Use the current version unless you need
thev2collection. If you're using v2, consider
migrating to v3. To migrate, seeMigrate to Drive API v3. For a complete list of version differences, see
theDrive API v2 and v3 comparison
reference.
If you want to continue to use v2, see theGuide to Drive API v2amendment to learn how some instructions in the v3
guides must be amended for v2 developers.
To learn more about Drive API v3 improvements, you can watch the
following video by Google engineers discussing the new API design.
V3 improvements
To optimize performance and reduce API behavior complexity, v3 provides these
improvements over the previous API version:
Searches for files and shared drives don't return full resources by default,
only a subset of commonly used fields gets returned. For more details onfields, see thefiles.listmethod
and thedrives.listmethod.
Almost all methods that return a response now require thefieldsparameter. For a list of all methods requiringfields, see theDrive API reference.
Resources that have duplicate capabilities were removed. Some examples:
Thefiles.listmethod accomplishes the same functionality as theChildrenandParentscollections, so they're removed from v3.
TheRealtime.*methods have been removed.
App Data isn't returned by default in searches. In v2, you can set thedrive.appdatascope, and it returns application data from thefiles.listmethod and thechanges.listmethod, but it slows performance. In v3, you set thedrive.appdatascope,
and also set the query parameterspaces=appDataFolderto request
application data.
All update operations use PATCH instead of PUT.
To export Google Documents, use thefiles.exportmethod.
Thechanges.listmethod behavior is different. Instead of change IDs, use
opaque page tokens. To poll the change collection, first call thechanges.getStartPageTokenmethod for the initial value. For subsequent queries, thechanges.listmethod returns thenewStartPageTokenvalue.
Update methods now reject requests that specify non-writable fields.
The v2exportFormatsandimportFormatsfields in theaboutresource are lists of
allowable import or export formats. In v3, they're MIME type maps of
possible targets to all supported imports or exports.
The v2appdataandappfolderaliases are nowappDataFolderin v3.
Thepropertiesresource is removed from v3. Thefilesresource has thepropertiesfield
that contains true key-value pairs. Thepropertiesfield contains public
properties, and theappPropertiesfield contains private properties, so
the visibility field isn't needed.
ThemodifiedTimefield in thefilesresource updates the last time
anyone modified the file. In v2, themodifiedDatefield was only mutable
on update if you set thesetModifiedDatefield.
TheviewedByMeTimefield in thefilesresource doesn't automatically
update.
To import Google Docs formats, you set the appropriate targetmimeTypein the resource body. In v2, you set?convert=true.
Import operations return a 400 error if the format isn't supported.
Readers and commenters can't view permissions.
Themealias for permissions is removed.
Some functionality was available as part of the request resource but is
instead available as a request parameter. For example:
In v2, you can usechildren.deleteto remove a child file from a
parent folder.
In v3, you usefiles.updateon the child with?removeParents=parent_idin the URL.
Other differences
Fields and parameter names are different in v3. Some examples include:
Thenameproperty replacestitlein thefilesresource.
Timeis the suffix for all date and time fields instead ofDate.
List operations don't use theitemsfield to contain the result set. The
resource type provides a field for the results (such asfilesorchanges).
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-28 UTC."],[],[],null,["# Drive API v2 and v3 comparison guide\n\nThe latest Google Drive API version is v3. The performance in v3 is better because\nsearches only return a subset of fields. Use the current version unless you need\nthe [v2](/workspace/drive/api/v2/reference) collection. If you're using v2, consider\nmigrating to v3. To migrate, see [Migrate to Drive API v3](/workspace/drive/api/guides/migrate-to-v3). For a complete list of version differences, see\nthe [Drive API v2 and v3 comparison\nreference](/workspace/drive/api/guides/v2-to-v3-reference).\n\nIf you want to continue to use v2, see the [Guide to Drive API v2](/workspace/drive/api/guides/v2-guide) amendment to learn how some instructions in the v3\nguides must be amended for v2 developers.\n\nTo learn more about Drive API v3 improvements, you can watch the\nfollowing video by Google engineers discussing the new API design. \n\nV3 improvements\n---------------\n\nTo optimize performance and reduce API behavior complexity, v3 provides these\nimprovements over the previous API version:\n\n- Searches for files and shared drives don't return full resources by default, only a subset of commonly used fields gets returned. For more details on `fields`, see the [`files.list`](/workspace/drive/api/v3/reference/files/list) method and the [`drives.list`](/workspace/drive/api/v3/reference/drives/list) method.\n- Almost all methods that return a response now require the `fields` parameter. For a list of all methods requiring `fields`, see the [Drive API reference](/workspace/drive/api/v3/reference).\n- Resources that have duplicate capabilities were removed. Some examples:\n - The `files.list` method accomplishes the same functionality as the `Children` and `Parents` collections, so they're removed from v3.\n - The `Realtime.*` methods have been removed.\n- App Data isn't returned by default in searches. In v2, you can set the `drive.appdata` scope, and it returns application data from the `files.list` method and the [`changes.list`](/workspace/drive/api/v2/reference/changes/list) method, but it slows performance. In v3, you set the `drive.appdata` scope, and also set the query parameter `spaces=appDataFolder` to request application data.\n- All update operations use PATCH instead of PUT.\n- To export Google Documents, use the [`files.export`](/workspace/drive/api/v2/reference/files/export) method.\n- The `changes.list` method behavior is different. Instead of change IDs, use opaque page tokens. To poll the change collection, first call the [`changes.getStartPageToken`](/workspace/drive/api/v2/reference/changes/getStartPageToken) method for the initial value. For subsequent queries, the `changes.list` method returns the `newStartPageToken` value.\n- Update methods now reject requests that specify non-writable fields.\n- The v2 `exportFormats` and `importFormats` fields in the [`about`](/workspace/drive/api/reference/rest/v3/about) resource are lists of allowable import or export formats. In v3, they're MIME type maps of possible targets to all supported imports or exports.\n- The v2 `appdata` and `appfolder` aliases are now `appDataFolder` in v3.\n- The `properties` resource is removed from v3. The [`files`](/workspace/drive/api/v3/reference/files) resource has the `properties` field that contains true key-value pairs. The `properties` field contains public properties, and the `appProperties` field contains private properties, so the visibility field isn't needed.\n- The `modifiedTime` field in the `files` resource updates the last time anyone modified the file. In v2, the `modifiedDate` field was only mutable on update if you set the `setModifiedDate` field.\n- The `viewedByMeTime` field in the `files` resource doesn't automatically update.\n- To import Google Docs formats, you set the appropriate target `mimeType` in the resource body. In v2, you set `?convert=true`.\n- Import operations return a 400 error if the format isn't supported.\n- Readers and commenters can't view permissions.\n- The `me` alias for permissions is removed.\n- Some functionality was available as part of the request resource but is instead available as a request parameter. For example:\n - In v2, you can use `children.delete` to remove a child file from a parent folder.\n - In v3, you use`files.update` on the child with `?removeParents=parent_id` in the URL.\n\nOther differences\n-----------------\n\nFields and parameter names are different in v3. Some examples include:\n\n- The `name` property replaces `title` in the `files` resource.\n- `Time` is the suffix for all date and time fields instead of `Date`.\n- List operations don't use the `items` field to contain the result set. The resource type provides a field for the results (such as `files` or `changes`)."]]