canonical: https://jentic.com/apis/googleapis.com/dataportability

# Google Data Portability API

The Google Data Portability API lets a third-party application request authorization from a Google user to copy their data out of Google services into the application. It exposes 6 endpoints that initiate a portability archive, check whether the granted authorization is one-time or time-based, retry partial archives, and reset the granted authorization. The API is the programmatic surface behind Google Takeout-style data exports for product integrations.

## For AI agents

Initiate user-authorized data exports from Google services into your application. Lets agents copy a user's Google data with their explicit consent and OAuth-scoped resources.

## Scope

Does not provide live read access to Google data, run analytics over user data, or push data into Google services - use for user-authorized one-time or time-based exports out of Google only.

## Capabilities

- Initiate a portability archive job for a user-granted set of OAuth resources
- Check whether the granted authorization is one-time or time-based
- Retry a portability archive that completed with partial failures
- Reset the user's granted authorization to revoke further exports
- Cancel an in-flight portability archive operation
- Retrieve the signed URLs of completed archive shards for download

## Use cases

### User-Authorized Data Migration into Your App

Move a user's data from Google services (Maps, YouTube, Photos, and more) into a third-party application after they grant scoped consent. The API kicks off a portability archive, returns signed URLs for the resulting shards, and supports retry on partial failure. Setup of the OAuth consent screen and resource scopes typically takes a day; per-user transfers complete asynchronously.

Example prompt: Call POST /v1beta/portabilityArchive:initiate with the granted resources list, poll the long-running operation until done, and present the resulting download URLs to the user

### Authorization Type Verification

Before initiating a transfer, check whether the user's grant is one-time or time-based so the application can decide whether to schedule a recurring sync or limit itself to a single export. POST /v1beta/accessType:check returns the access type tied to the OAuth credentials, letting the app surface the correct UX (single export vs scheduled sync).

Example prompt: Call POST /v1beta/accessType:check and branch the workflow based on whether the response is ONE_TIME or TIME_BASED

### Authorization Reset for Compliance

When a user disconnects the integration or asks for their authorization to be revoked, call POST /v1beta/authorization:reset to remove the existing grant from Google's side. This complements the application's own token revocation and gives the user a clean state at the Google authorization level. Useful for GDPR and CCPA disconnect flows.

Example prompt: Call POST /v1beta/authorization:reset on the user's session and confirm to the user that the Google-side grant has been cleared

### AI Agent Data-Move Operator

An AI agent that imports a user's Google data into a downstream system can drive the entire portability flow through Jentic without writing OAuth and long-running-operation code. Jentic search returns the matching initiate, retry, cancel, or reset operation, the agent loads the schema, and Jentic executes against dataportability.googleapis.com using vault-stored credentials.

Example prompt: Use Jentic to search 'initiate a google data portability archive', load the initiate schema, and execute it with the user's granted resource list

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | /v1beta/portabilityArchive:initiate | Initiate a portability archive |
| POST | /v1beta/{+name}:retry | Retry a partially failed archive |
| POST | /v1beta/{+name}:cancel | Cancel an in-flight archive |
| POST | /v1beta/accessType:check | Check authorization access type |
| POST | /v1beta/authorization:reset | Reset the user's portability authorization |
| GET | /v1beta/{+name} | Get archive job status and download URLs |

## Key resources

- **PortabilityArchive** — Initiate, retry, and cancel a user-authorized data archive
- **AccessType** — Check whether the granted authorization is one-time or time-based
- **Authorization** — Reset the user's data portability authorization
- **ArchiveJobs** — Long-running operations for portability archive jobs

## Why Jentic

- **Setup:** Wiring the Data Portability API by hand means setting up Google OAuth, refreshing short-lived per-user scoped tokens rather than holding client secrets in code, and addressing archive resources on dataportability.googleapis.com. Through Jentic you install once, import the Data Portability API from the API Directory, store the Google credential once, and your agent calls it.
- **Permission scoping:** The API carries the archive resource name in the URL path (/v1beta/{name}:retry and /v1beta/{name}:cancel), so a rule can pin your agent to one portability archive. You choose the operations it may call, so it can initiate and check an archive while cancel or authorization reset are not included unless you add them.
- **Credential handling:** Your Google OAuth credential is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'initiate a Google data portability archive', and Jentic returns the matching Data Portability operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Google Drive API** — Drive API gives ongoing live access to a user's Drive files; Data Portability gives a one-time or scheduled snapshot.
- **Google People API** — People API exposes contacts directly; Data Portability bundles contacts and other data into archive shards.
- **Google OAuth2 API** — OAuth2 obtains the credentials that authorize the Data Portability scopes.

## FAQ

### What authentication does the Data Portability API use?

The Data Portability API uses OAuth 2.0 with per-resource Data Portability scopes (one scope per Google service the user agrees to share). Through Jentic the OAuth client and refresh tokens are stored in your Jentic One instance and the agent receives short-lived scoped tokens, so raw Google credentials never enter the agent context.

### Can I copy a user's YouTube or Maps data with this API?

Yes - the user must grant the corresponding Data Portability scope (for example YouTube, Maps, or Photos resources), then the application calls POST /v1beta/portabilityArchive:initiate with that resource list. The returned operation produces signed-URL archive shards once the export finishes.

### What are the rate limits for the Data Portability API?

Google enforces standard Cloud quotas on dataportability.googleapis.com plus per-user limits on how often a portability archive may be initiated for the same scope. Quotas are visible in the Cloud Console under IAM and admin, quotas, filtered to dataportability.googleapis.com.

### How do I retry a partial archive through Jentic?

Search Jentic for 'retry a portability archive', load the schema for POST /v1beta/{+name}:retry, and execute with the archive job's resource name. The new run replays only the failed resources from the original archive.

### Is the Data Portability API free?

API calls are free; users grant access with no charge to the application or to the user. The application is responsible for storing the resulting archive shards, which it would download from the signed URLs returned by the operation.

### How do I revoke a user's portability grant?

Call POST /v1beta/authorization:reset with the user's authenticated session. This clears the Google-side authorization, after which any future initiate call requires a fresh consent screen. Pair with the application's own token revocation for a complete disconnect.

### Can I limit what my agent is allowed to do with the Data Portability API?

Yes. Because you self-host Jentic One, your own rules decide which Data Portability operations the agent may call and which Google credential it uses, so you can allow it to initiate an archive and check the access type while keeping cancel and authorization reset off limits. Since the archive resource name is carried in the URL path for the retry and cancel operations, a rule can pin the agent to a single portability archive rather than any job. Your stored Google OAuth credential is injected only at execution time and never enters the agent's prompt or logs.
