Cloud Storage & File Sharing — entry 008 of 18

Google Drive

Verified Jul 2026

Google Drive's API lets applications create, read, update, and share files and folders stored in a user's Drive, with fine-grained OAuth scopes for personal or Workspace accounts. A live GET against the real gateway, www.googleapis.com/drive/v3/files, returned a 403 without a token, reconfirming OAuth 2.0 auth over HTTPS, and a follow-up OPTIONS preflight echoed the request Origin in Access-Control-Allow-Origin, resolving cors from unknown to yes. The url was updated to Google's current Workspace documentation hub, which the old /drive/ path now permanently redirects to. Personal accounts get 15GB free, with paid Google One and Workspace plans raising the storage cap.

cloud-storagefile-sharingoauthcollaboration
AuthenticationOAuthRequires an OAuth flow; expect app registration.
HTTPSSupportedTraffic is encrypted in transit.
CORSEnabledCallable directly from browser JavaScript.
PricingFreemiumA usable free tier exists, with paid plans for more volume.
FormatsJSONResponses can be requested as JSON.

GreatAPIs Score

Score74out of 100
Authentication8/25OAuth flow required
Pricing17/20Freemium tier available
Docs20/20Machine-readable spec file bundled
Formats9/15Single response format
Freshness20/20Verified within 6 months

Embed this badge

Scored 74 on greatapis.com
<a href="https://greatapis.com/api/google-drive/"><img src="https://greatapis.com/badge/google-drive.svg" alt="Scored 74 on greatapis.com"></a>

Auth quickstart

  1. Register an app / run the OAuth flow to obtain a bearer token.
  2. Send it as an Authorization headerAuthorization: Bearer <token>
Stored keyNo key stored

Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.

Endpoints

Servers
https://www.googleapis.com/drive/v3
Auth
Oauth2Oauth2c
about1
GET/about
Responses
StatusDescriptionSchema
200Successful responseAbout
changes3
GET/changes
Parameters
NameInRequiredType
pageTokenqueryyesstring
driveIdquerynostring
includeCorpusRemovalsquerynoboolean
includeItemsFromAllDrivesquerynoboolean
includeLabelsquerynostring
includePermissionsForViewquerynostring
includeRemovedquerynoboolean
includeTeamDriveItemsquerynoboolean
pageSizequerynointeger
restrictToMyDrivequerynoboolean
spacesquerynostring
supportsAllDrivesquerynoboolean
supportsTeamDrivesquerynoboolean
teamDriveIdquerynostring
Responses
StatusDescriptionSchema
200Successful responseChangeList
GET/changes/startPageToken
Parameters
NameInRequiredType
driveIdquerynostring
supportsAllDrivesquerynoboolean
supportsTeamDrivesquerynoboolean
teamDriveIdquerynostring
Responses
StatusDescriptionSchema
200Successful responseStartPageToken
POST/changes/watch
Parameters
NameInRequiredType
pageTokenqueryyesstring
driveIdquerynostring
includeCorpusRemovalsquerynoboolean
includeItemsFromAllDrivesquerynoboolean
includeLabelsquerynostring
includePermissionsForViewquerynostring
includeRemovedquerynoboolean
includeTeamDriveItemsquerynoboolean
pageSizequerynointeger
restrictToMyDrivequerynoboolean
spacesquerynostring
supportsAllDrivesquerynoboolean
supportsTeamDrivesquerynoboolean
teamDriveIdquerynostring
Request body

application/jsonChannel

Responses
StatusDescriptionSchema
200Successful responseChannel
channels1
POST/channels/stop
Request body

application/jsonChannel

Responses
StatusDescriptionSchema
200Successful response
comments5
GET/files/{fileId}/comments
Parameters
NameInRequiredType
fileIdpathyesstring
includeDeletedquerynoboolean
pageSizequerynointeger
pageTokenquerynostring
startModifiedTimequerynostring
Responses
StatusDescriptionSchema
200Successful responseCommentList
POST/files/{fileId}/comments
Parameters
NameInRequiredType
fileIdpathyesstring
Request body

application/jsonComment

Responses
StatusDescriptionSchema
200Successful responseComment
GET/files/{fileId}/comments/{commentId}
Parameters
NameInRequiredType
fileIdpathyesstring
commentIdpathyesstring
includeDeletedquerynoboolean
Responses
StatusDescriptionSchema
200Successful responseComment
PATCH/files/{fileId}/comments/{commentId}
Parameters
NameInRequiredType
fileIdpathyesstring
commentIdpathyesstring
Request body

application/jsonComment

Responses
StatusDescriptionSchema
200Successful responseComment
DELETE/files/{fileId}/comments/{commentId}
Parameters
NameInRequiredType
fileIdpathyesstring
commentIdpathyesstring
Responses
StatusDescriptionSchema
200Successful response
drives7
GET/drives
Parameters
NameInRequiredType
pageSizequerynointeger
pageTokenquerynostring
qquerynostring
useDomainAdminAccessquerynoboolean
Responses
StatusDescriptionSchema
200Successful responseDriveList
POST/drives
Parameters
NameInRequiredType
requestIdqueryyesstring
Request body

application/jsonDrive

Responses
StatusDescriptionSchema
200Successful responseDrive
GET/drives/{driveId}
Parameters
NameInRequiredType
driveIdpathyesstring
useDomainAdminAccessquerynoboolean
Responses
StatusDescriptionSchema
200Successful responseDrive
PATCH/drives/{driveId}
Parameters
NameInRequiredType
driveIdpathyesstring
useDomainAdminAccessquerynoboolean
Request body

application/jsonDrive

Responses
StatusDescriptionSchema
200Successful responseDrive
DELETE/drives/{driveId}
Parameters
NameInRequiredType
driveIdpathyesstring
allowItemDeletionquerynoboolean
useDomainAdminAccessquerynoboolean
Responses
StatusDescriptionSchema
200Successful response
POST/drives/{driveId}/hide
Parameters
NameInRequiredType
driveIdpathyesstring
Responses
StatusDescriptionSchema
200Successful responseDrive
POST/drives/{driveId}/unhide
Parameters
NameInRequiredType
driveIdpathyesstring
Responses
StatusDescriptionSchema
200Successful responseDrive
files12
GET/files
Parameters
NameInRequiredType
corporaquerynostring
corpusquerynostring
driveIdquerynostring
includeItemsFromAllDrivesquerynoboolean
includeLabelsquerynostring
includePermissionsForViewquerynostring
includeTeamDriveItemsquerynoboolean
orderByquerynostring
pageSizequerynointeger
pageTokenquerynostring
qquerynostring
spacesquerynostring
supportsAllDrivesquerynoboolean
supportsTeamDrivesquerynoboolean
teamDriveIdquerynostring
Responses
StatusDescriptionSchema
200Successful responseFileList
POST/files
Parameters
NameInRequiredType
enforceSingleParentquerynoboolean
ignoreDefaultVisibilityquerynoboolean
includeLabelsquerynostring
includePermissionsForViewquerynostring
keepRevisionForeverquerynoboolean
ocrLanguagequerynostring
supportsAllDrivesquerynoboolean
supportsTeamDrivesquerynoboolean
useContentAsIndexableTextquerynoboolean
Request body

application/octet-streamFile

Responses
StatusDescriptionSchema
200Successful responseFile
GET/files/generateIds
Parameters
NameInRequiredType
countquerynointeger
spacequerynostring
typequerynostring
Responses
StatusDescriptionSchema
200Successful responseGeneratedIds
DELETE/files/trash
Parameters
NameInRequiredType
driveIdquerynostring
enforceSingleParentquerynoboolean
Responses
StatusDescriptionSchema
200Successful response
GET/files/{fileId}
Parameters
NameInRequiredType
fileIdpathyesstring
acknowledgeAbusequerynoboolean
includeLabelsquerynostring
includePermissionsForViewquerynostring
supportsAllDrivesquerynoboolean
supportsTeamDrivesquerynoboolean
Responses
StatusDescriptionSchema
200Successful responseFile
PATCH/files/{fileId}
Parameters
NameInRequiredType
fileIdpathyesstring
addParentsquerynostring
enforceSingleParentquerynoboolean
includeLabelsquerynostring
includePermissionsForViewquerynostring
keepRevisionForeverquerynoboolean
ocrLanguagequerynostring
removeParentsquerynostring
supportsAllDrivesquerynoboolean
supportsTeamDrivesquerynoboolean
useContentAsIndexableTextquerynoboolean
Request body

application/octet-streamFile

Responses
StatusDescriptionSchema
200Successful responseFile
DELETE/files/{fileId}
Parameters
NameInRequiredType
fileIdpathyesstring
enforceSingleParentquerynoboolean
supportsAllDrivesquerynoboolean
supportsTeamDrivesquerynoboolean
Responses
StatusDescriptionSchema
200Successful response
POST/files/{fileId}/copy
Parameters
NameInRequiredType
fileIdpathyesstring
enforceSingleParentquerynoboolean
ignoreDefaultVisibilityquerynoboolean
includeLabelsquerynostring
includePermissionsForViewquerynostring
keepRevisionForeverquerynoboolean
ocrLanguagequerynostring
supportsAllDrivesquerynoboolean
supportsTeamDrivesquerynoboolean
Request body

application/jsonFile

Responses
StatusDescriptionSchema
200Successful responseFile
GET/files/{fileId}/export
Parameters
NameInRequiredType
fileIdpathyesstring
mimeTypequeryyesstring
Responses
StatusDescriptionSchema
200Successful response
GET/files/{fileId}/listLabels
Parameters
NameInRequiredType
fileIdpathyesstring
maxResultsquerynointeger
pageTokenquerynostring
Responses
StatusDescriptionSchema
200Successful responseLabelList
POST/files/{fileId}/modifyLabels
Parameters
NameInRequiredType
fileIdpathyesstring
Request body

application/jsonModifyLabelsRequest

Responses
StatusDescriptionSchema
200Successful responseModifyLabelsResponse
POST/files/{fileId}/watch
Parameters
NameInRequiredType
fileIdpathyesstring
acknowledgeAbusequerynoboolean
includeLabelsquerynostring
includePermissionsForViewquerynostring
supportsAllDrivesquerynoboolean
supportsTeamDrivesquerynoboolean
Request body

application/jsonChannel

Responses
StatusDescriptionSchema
200Successful responseChannel
permissions5
GET/files/{fileId}/permissions
Parameters
NameInRequiredType
fileIdpathyesstring
includePermissionsForViewquerynostring
pageSizequerynointeger
pageTokenquerynostring
supportsAllDrivesquerynoboolean
supportsTeamDrivesquerynoboolean
useDomainAdminAccessquerynoboolean
Responses
StatusDescriptionSchema
200Successful responsePermissionList
POST/files/{fileId}/permissions
Parameters
NameInRequiredType
fileIdpathyesstring
emailMessagequerynostring
enforceSingleParentquerynoboolean
moveToNewOwnersRootquerynoboolean
sendNotificationEmailquerynoboolean
supportsAllDrivesquerynoboolean
supportsTeamDrivesquerynoboolean
transferOwnershipquerynoboolean
useDomainAdminAccessquerynoboolean
Request body

application/jsonPermission

Responses
StatusDescriptionSchema
200Successful responsePermission
GET/files/{fileId}/permissions/{permissionId}
Parameters
NameInRequiredType
fileIdpathyesstring
permissionIdpathyesstring
supportsAllDrivesquerynoboolean
supportsTeamDrivesquerynoboolean
useDomainAdminAccessquerynoboolean
Responses
StatusDescriptionSchema
200Successful responsePermission
PATCH/files/{fileId}/permissions/{permissionId}
Parameters
NameInRequiredType
fileIdpathyesstring
permissionIdpathyesstring
removeExpirationquerynoboolean
supportsAllDrivesquerynoboolean
supportsTeamDrivesquerynoboolean
transferOwnershipquerynoboolean
useDomainAdminAccessquerynoboolean
Request body

application/jsonPermission

Responses
StatusDescriptionSchema
200Successful responsePermission
DELETE/files/{fileId}/permissions/{permissionId}
Parameters
NameInRequiredType
fileIdpathyesstring
permissionIdpathyesstring
supportsAllDrivesquerynoboolean
supportsTeamDrivesquerynoboolean
useDomainAdminAccessquerynoboolean
Responses
StatusDescriptionSchema
200Successful response
replies5
GET/files/{fileId}/comments/{commentId}/replies
Parameters
NameInRequiredType
fileIdpathyesstring
commentIdpathyesstring
includeDeletedquerynoboolean
pageSizequerynointeger
pageTokenquerynostring
Responses
StatusDescriptionSchema
200Successful responseReplyList
POST/files/{fileId}/comments/{commentId}/replies
Parameters
NameInRequiredType
fileIdpathyesstring
commentIdpathyesstring
Request body

application/jsonReply

Responses
StatusDescriptionSchema
200Successful responseReply
GET/files/{fileId}/comments/{commentId}/replies/{replyId}
Parameters
NameInRequiredType
fileIdpathyesstring
commentIdpathyesstring
replyIdpathyesstring
includeDeletedquerynoboolean
Responses
StatusDescriptionSchema
200Successful responseReply
PATCH/files/{fileId}/comments/{commentId}/replies/{replyId}
Parameters
NameInRequiredType
fileIdpathyesstring
commentIdpathyesstring
replyIdpathyesstring
Request body

application/jsonReply

Responses
StatusDescriptionSchema
200Successful responseReply
DELETE/files/{fileId}/comments/{commentId}/replies/{replyId}
Parameters
NameInRequiredType
fileIdpathyesstring
commentIdpathyesstring
replyIdpathyesstring
Responses
StatusDescriptionSchema
200Successful response
revisions4
GET/files/{fileId}/revisions
Parameters
NameInRequiredType
fileIdpathyesstring
pageSizequerynointeger
pageTokenquerynostring
Responses
StatusDescriptionSchema
200Successful responseRevisionList
GET/files/{fileId}/revisions/{revisionId}
Parameters
NameInRequiredType
fileIdpathyesstring
revisionIdpathyesstring
acknowledgeAbusequerynoboolean
Responses
StatusDescriptionSchema
200Successful responseRevision
PATCH/files/{fileId}/revisions/{revisionId}
Parameters
NameInRequiredType
fileIdpathyesstring
revisionIdpathyesstring
Request body

application/jsonRevision

Responses
StatusDescriptionSchema
200Successful responseRevision
DELETE/files/{fileId}/revisions/{revisionId}
Parameters
NameInRequiredType
fileIdpathyesstring
revisionIdpathyesstring
Responses
StatusDescriptionSchema
200Successful response
teamdrives5
GET/teamdrives
Parameters
NameInRequiredType
pageSizequerynointeger
pageTokenquerynostring
qquerynostring
useDomainAdminAccessquerynoboolean
Responses
StatusDescriptionSchema
200Successful responseTeamDriveList
POST/teamdrives
Parameters
NameInRequiredType
requestIdqueryyesstring
Request body

application/jsonTeamDrive

Responses
StatusDescriptionSchema
200Successful responseTeamDrive
GET/teamdrives/{teamDriveId}
Parameters
NameInRequiredType
teamDriveIdpathyesstring
useDomainAdminAccessquerynoboolean
Responses
StatusDescriptionSchema
200Successful responseTeamDrive
PATCH/teamdrives/{teamDriveId}
Parameters
NameInRequiredType
teamDriveIdpathyesstring
useDomainAdminAccessquerynoboolean
Request body

application/jsonTeamDrive

Responses
StatusDescriptionSchema
200Successful responseTeamDrive
DELETE/teamdrives/{teamDriveId}
Parameters
NameInRequiredType
teamDriveIdpathyesstring
Responses
StatusDescriptionSchema
200Successful response

Try it

Developer reference

Base URLhttps://www.googleapis.com/drive/v3
Rate limit

Google's Drive API usage-limits docs (developers.google.com/workspace/drive/api/guides/limits) publish a quota-unit system rather than a flat request count: a default of 1,000,000 quota units/minute/project and 325,000 quota units/minute/user, with per-method costs of 5 units for a read (e.g. files.get), 100 units for a list, 200 units for a download, and 50 units for an edit -- so a simple files.get call costs far less against the ceiling than a files.list or download. There's also a 400,000,000 quota-units/day billing threshold and a 750GB/day upload cap for Workspace users.

Key endpoints
  • GET/files
  • GET/files/{fileId}
  • POST/files
  • POST/files/{fileId}/permissions
  • GET/changes