Google

Google Sheets, Google Calendar, Gmail and Google Drive, connected with one Google sign-in.

Website
google.com
Connects by
Signing in with Google
Category
Spreadsheets and databases, Email, Calendars and meetings, Files and docs, Chat, CRM and sales, Marketing, Social and video, Analytics and SEO, Projects and tasks, Forms, Online stores, Music, books and games, Developer tools, AI
Services
44
Tools
11,412
ServiceKeyWebsite
BigQuerybigquerycloud.google.com/bigquery
Google Sheetssheetsworkspace.google.com/products/sheets
Gmailgmailworkspace.google.com/products/gmail
Google Postmaster Toolspostmaster-toolspostmaster.google.com
Google Calendarcalendarworkspace.google.com/products/calendar
Google Meetgoogle-meetworkspace.google.com/products/meet
Google Cloud Searchgoogle-cloud-searchworkspace.google.com/products/cloud-search
Google Cloud Storagegoogle-cloud-storagecloud.google.com/storage
Google Docsgoogle-docsworkspace.google.com/products/docs
Google Drivedriveworkspace.google.com/products/drive
Google Keepgoogle-keepworkspace.google.com/products/keep
Google Photosgoogle-photosgoogle.com/photos/about
Google Slidesgoogle-slidesworkspace.google.com/products/slides
Google Vaultgoogle-vaultworkspace.google.com/products/vault
Google Chatgoogle-chatworkspace.google.com/products/chat
Google Contactsgoogle-contactscontacts.google.com
Campaign Manager 360campaign-manager-360marketingplatform.google.com/about/campaign-manager-360
Display & Video 360display-video-360marketingplatform.google.com/about/display-video-360
Google Ad Managergoogle-ad-manageradmanager.google.com
Google AdMobgoogle-admobadmob.google.com
Google Adsgoogle-adsads.google.com
Google AdSensegoogle-adsenseadsense.google.com
Google Business Profilegoogle-business-profilebusiness.google.com
Google Local Services Adsgoogle-local-services-adsads.google.com/local-services-ads
Google Walletgoogle-walletwallet.google.com
Search Ads 360search-ads-360marketingplatform.google.com/about/search-ads-360
Bloggerbloggerblogger.com
YouTubeyoutubeyoutube.com
Google Analyticsgoogle-analyticsmarketingplatform.google.com/about/analytics
Google Search Consolesearch-consolesearch.google.com/search-console/about
Google Tag Managergoogle-tag-managermarketingplatform.google.com/about/tag-manager
Google Classroomgoogle-classroomedu.google.com/workspace-for-education/classroom
Google Tasksgoogle-tasksworkspace.google.com/products/tasks
Google Formsgoogle-formsworkspace.google.com/products/forms
Google Merchant Centergoogle-merchant-centergoogle.com/retail/solutions/merchant-center
Google Booksgoogle-booksbooks.google.com
Chrome Web Storegoogle-chrome-web-storechromewebstore.google.com
Firebasefirebasefirebase.google.com
Google Apps Scriptapps-scriptdevelopers.google.com/apps-script
Google Cloudgoogle-cloudcloud.google.com
Google Play Consolegoogle-playplay.google.com/console
Google Workspace Admingoogle-workspace-adminworkspace.google.com
Dialogflow CXdialogflowcloud.google.com/dialogflow
Google Cloud Agent Platformgoogle-agent-platformcloud.google.com/vertex-ai

Connecting

Your client presses Connect on their page, picks a Google account, and approves every service you asked for on one screen. Then they're sent back to their page, and each service shows as connected.

Google shows its consent screen on every sign-in, including a reconnect. This makes sure Operate As always gets a renewal key, so access keeps working.

Check they're connected
curl https://api.operate.as/v1/me/clients \  -H "Authorization: Bearer $OPERATE_AS_API_KEY"
Response
[  {    "id": "6f1c2a7e-...",    "name": "Miller Dental",    "services": [      "bigquery",      "sheets",      "gmail",      "postmaster-tools",      "calendar",      "google-meet",      "google-cloud-search",      "google-cloud-storage",      "google-docs",      "drive",      "google-keep",      "google-photos",      "google-slides",      "google-vault",      "google-chat",      "google-contacts",      "campaign-manager-360",      "display-video-360",      "google-ad-manager",      "google-admob",      "google-ads",      "google-adsense",      "google-business-profile",      "google-local-services-ads",      "google-wallet",      "search-ads-360",      "blogger",      "youtube",      "google-analytics",      "search-console",      "google-tag-manager",      "google-classroom",      "google-tasks",      "google-forms",      "google-merchant-center",      "google-books",      "google-chrome-web-store",      "firebase",      "apps-script",      "google-cloud",      "google-play",      "google-workspace-admin",      "dialogflow",      "google-agent-platform"    ]  }]

Good to know

Gmail and Drive are restricted

Google classes gmail.readonly (reading email) and drive (all Drive files) as restricted, its strictest level. gmail.send is sensitive. They reach the most of a client's account, so only ask for Gmail or Drive if your workflows need them.

Your client can deselect permissions

When a sign-in asks for more than one permission, Google lets your client choose which to approve. If they deselect one a service needs, that service shows as waiting on their page and in your dashboard, while the others connect. To fix it, they open their link and connect Google again with every box checked.

Permissions

BigQuery

What the client readsPermission it asks for
See, query and change your BigQuery datasets and tableshttps://www.googleapis.com/auth/bigquery
See and manage your Google Cloud resourceshttps://www.googleapis.com/auth/cloud-platform

Google Sheets

What the client readsPermission it asks for
Read, add and edit rows in your spreadsheetshttps://www.googleapis.com/auth/spreadsheets

Gmail

What the client readsPermission it asks for
Send email as youhttps://www.googleapis.com/auth/gmail.send
Read your emailhttps://www.googleapis.com/auth/gmail.readonly

Google Postmaster Tools

What the client readsPermission it asks for
See your sending domains' Gmail delivery statshttps://www.googleapis.com/auth/postmaster.traffic.readonly

Google Calendar

What the client readsPermission it asks for
See, add and change events on your calendarshttps://www.googleapis.com/auth/calendar.events
See the names of your calendarshttps://www.googleapis.com/auth/calendar.calendarlist.readonly

Google Meet

What the client readsPermission it asks for
Make meetings and see the ones made this wayhttps://www.googleapis.com/auth/meetings.space.created
See your meetings, who joined, and their recordings and transcriptshttps://www.googleapis.com/auth/meetings.space.readonly

Google Cloud Search

What the client readsPermission it asks for
Search your organization's contenthttps://www.googleapis.com/auth/cloud_search.query
See and change Cloud Search settingshttps://www.googleapis.com/auth/cloud_search.settings

Google Cloud Storage

What the client readsPermission it asks for
See, add and change files in your Cloud Storage bucketshttps://www.googleapis.com/auth/devstorage.read_write

Google Docs

What the client readsPermission it asks for
See, write and edit your documentshttps://www.googleapis.com/auth/documents

Google Drive

What the client readsPermission it asks for
See, add and edit files in your Google Drivehttps://www.googleapis.com/auth/drive
See the activity in your Google Drivehttps://www.googleapis.com/auth/drive.activity.readonly
See and change your Drive labelshttps://www.googleapis.com/auth/drive.labels

Google Keep

What the client readsPermission it asks for
See, edit, add and delete your Google Keep noteshttps://www.googleapis.com/auth/keep

Google Photos

What the client readsPermission it asks for
Add photos and videos to your Google Photos libraryhttps://www.googleapis.com/auth/photoslibrary.appendonly
See the photos, videos and albums Operate As addedhttps://www.googleapis.com/auth/photoslibrary.readonly.appcreateddata
Change the photos, videos and albums Operate As addedhttps://www.googleapis.com/auth/photoslibrary.edit.appcreateddata

Google Slides

What the client readsPermission it asks for
See, make and edit your presentationshttps://www.googleapis.com/auth/presentations

Google Vault

What the client readsPermission it asks for
See and manage your Vault matters, holds and exportshttps://www.googleapis.com/auth/ediscovery

Google Chat

What the client readsPermission it asks for
See your Chat spaceshttps://www.googleapis.com/auth/chat.spaces.readonly
See and send messages in your Chat spaceshttps://www.googleapis.com/auth/chat.messages

Google Contacts

What the client readsPermission it asks for
See, add and change your contactshttps://www.googleapis.com/auth/contacts

Campaign Manager 360

What the client readsPermission it asks for
See and run your Campaign Manager 360 reportshttps://www.googleapis.com/auth/dfareporting
See and manage your campaigns, ads and placementshttps://www.googleapis.com/auth/dfatrafficking

Display & Video 360

What the client readsPermission it asks for
See and manage your advertisers, campaigns and line itemshttps://www.googleapis.com/auth/display-video

Google Ad Manager

What the client readsPermission it asks for
See and manage your Ad Manager network, inventory and reportshttps://www.googleapis.com/auth/admanager

Google AdMob

What the client readsPermission it asks for
See your AdMob apps, ad units and settingshttps://www.googleapis.com/auth/admob.readonly
See your AdMob reportshttps://www.googleapis.com/auth/admob.report

Google Ads

What the client readsPermission it asks for
See and manage your Google Ads accounts, campaigns and reportshttps://www.googleapis.com/auth/adwords
Send audience and conversion data to your Google ad accountshttps://www.googleapis.com/auth/datamanager

Google AdSense

What the client readsPermission it asks for
See your AdSense datahttps://www.googleapis.com/auth/adsense.readonly

Google Business Profile

What the client readsPermission it asks for
See and manage your business listings, their reviews and performancehttps://www.googleapis.com/auth/business.manage

Google Local Services Ads

What the client readsPermission it asks for
See and manage your Google Ads accountshttps://www.googleapis.com/auth/adwords

Google Wallet

What the client readsPermission it asks for
See and manage the Google Wallet passes you issuehttps://www.googleapis.com/auth/wallet_object.issuer

Search Ads 360

What the client readsPermission it asks for
See your Search Ads 360 accounts and reportshttps://www.googleapis.com/auth/doubleclicksearch

Blogger

What the client readsPermission it asks for
See, write and publish posts on your blogshttps://www.googleapis.com/auth/blogger

YouTube

What the client readsPermission it asks for
See and manage your channel and its videoshttps://www.googleapis.com/auth/youtube
See reports on your YouTube channels' views, watch time and audiencehttps://www.googleapis.com/auth/yt-analytics.readonly
See your YouTube revenue reportshttps://www.googleapis.com/auth/yt-analytics-monetary.readonly

Google Analytics

What the client readsPermission it asks for
See your Analytics reportshttps://www.googleapis.com/auth/analytics.readonly
See and change your Analytics properties, data streams and conversionshttps://www.googleapis.com/auth/analytics.edit

Google Search Console

What the client readsPermission it asks for
See your sites' search traffichttps://www.googleapis.com/auth/webmasters.readonly
Tell Google when pages on your sites are added or removedhttps://www.googleapis.com/auth/indexing
See and verify your sites and domainshttps://www.googleapis.com/auth/siteverification

Google Tag Manager

What the client readsPermission it asks for
See your Tag Manager accounts and containershttps://www.googleapis.com/auth/tagmanager.readonly
Add and change tags, triggers and variables in your containershttps://www.googleapis.com/auth/tagmanager.edit.containers
Publish changes to your containershttps://www.googleapis.com/auth/tagmanager.publish

Google Classroom

What the client readsPermission it asks for
See your classeshttps://www.googleapis.com/auth/classroom.courses.readonly
See the students and teachers in your classeshttps://www.googleapis.com/auth/classroom.rosters.readonly
See and change classwork and grades for your studentshttps://www.googleapis.com/auth/classroom.coursework.students

Google Tasks

What the client readsPermission it asks for
See, add and change your taskshttps://www.googleapis.com/auth/tasks

Google Forms

What the client readsPermission it asks for
See, make and edit your formshttps://www.googleapis.com/auth/forms.body
See the answers to your formshttps://www.googleapis.com/auth/forms.responses.readonly

Google Merchant Center

What the client readsPermission it asks for
See and manage your products, feeds and Merchant Center accounthttps://www.googleapis.com/auth/content
See and change your Manufacturer Center productshttps://www.googleapis.com/auth/manufacturercenter

Google Books

What the client readsPermission it asks for
See and change your Google Books libraryhttps://www.googleapis.com/auth/books

Chrome Web Store

What the client readsPermission it asks for
See and publish your Chrome Web Store itemshttps://www.googleapis.com/auth/chromewebstore

Firebase

What the client readsPermission it asks for
See and manage your Firebase projects and appshttps://www.googleapis.com/auth/firebase
Send push notifications from your Firebase projectshttps://www.googleapis.com/auth/firebase.messaging
See and manage your Google Cloud resourceshttps://www.googleapis.com/auth/cloud-platform
See and change the data in your Firestore databaseshttps://www.googleapis.com/auth/datastore

Google Apps Script

What the client readsPermission it asks for
See and change your Apps Script projectshttps://www.googleapis.com/auth/script.projects
See and manage your script deploymentshttps://www.googleapis.com/auth/script.deployments
See your scripts' run historyhttps://www.googleapis.com/auth/script.processes

Google Cloud

What the client readsPermission it asks for
See and manage your Google Cloud resourceshttps://www.googleapis.com/auth/cloud-platform
See and manage your company's Android deviceshttps://www.googleapis.com/auth/androidmanagement
See and publish your Street View photoshttps://www.googleapis.com/auth/streetviewpublish

Google Play Console

What the client readsPermission it asks for
See and manage your Google Play apps, reviews, releases and purchaseshttps://www.googleapis.com/auth/androidpublisher
See your Google Play apps' quality reportshttps://www.googleapis.com/auth/playdeveloperreporting
Check Play Integrity tokens for your appshttps://www.googleapis.com/auth/playintegrity
See and change your Play Games datahttps://www.googleapis.com/auth/games

Google Workspace Admin

What the client readsPermission it asks for
See, add and change the users in your organizationhttps://www.googleapis.com/auth/admin.directory.user
See, add and change your organization's groups and who's in themhttps://www.googleapis.com/auth/admin.directory.group
Add messages to your groups' archiveshttps://www.googleapis.com/auth/apps.groups.migration
See and change your groups' settingshttps://www.googleapis.com/auth/apps.groups.settings
See and manage your Google Workspace security alertshttps://www.googleapis.com/auth/apps.alerts
See and manage your Google Workspace licenseshttps://www.googleapis.com/auth/apps.licensing
See your Chat spaceshttps://www.googleapis.com/auth/chat.spaces.readonly
See your Meet spaceshttps://www.googleapis.com/auth/meetings.space.readonly
See and manage your Workspace customers and subscriptionshttps://www.googleapis.com/auth/apps.order
See licenses for your Marketplace appshttps://www.googleapis.com/auth/appsmarketplace.license
See reports about your managed Chrome browsers and deviceshttps://www.googleapis.com/auth/chrome.management.reports.readonly
See telemetry from your managed ChromeOS deviceshttps://www.googleapis.com/auth/chrome.management.telemetry.readonly
See details of apps on your managed Chrome browsershttps://www.googleapis.com/auth/chrome.management.appdetails.readonly
See and change Chrome policies for your organizationhttps://www.googleapis.com/auth/chrome.management.policy
See and manage your organization's groupshttps://www.googleapis.com/auth/cloud-identity.groups
See your organization's deviceshttps://www.googleapis.com/auth/cloud-identity.devices.readonly

Dialogflow CX

What the client readsPermission it asks for
See and manage your Dialogflow agentshttps://www.googleapis.com/auth/dialogflow
See and manage your Google Cloud resourceshttps://www.googleapis.com/auth/cloud-platform

Google Cloud Agent Platform

What the client readsPermission it asks for
See and manage your Google Cloud resourceshttps://www.googleapis.com/auth/cloud-platform

Tools

BigQuery

Install BigQuery's typed package for your language:

pip install operate-as-bigquery
Run bigquery.analyticshub_organizations_locations_data_exchanges_lis
curl -X POST https://api.operate.as/v1/actions/bigquery.analyticshub_organizations_locations_data_exchanges_lis \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {      "organization": "<organization>"    }  }'

Shows the required inputs. Every input, with its JSON Schema: GET /v1/actions/bigquery.analyticshub_organizations_locations_data_exchanges_lis

Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Google Sheets

Install Google Sheets's typed package for your language:

pip install operate-as-sheets
Run sheets.add_row
curl -X POST https://api.operate.as/v1/actions/sheets.add_row \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {      "spreadsheet_id": "<spreadsheet_id>",      "range": "<range>",      "values": []    }  }'
InputTypeWhat it is
spreadsheet_idrequiredstringThe ID in the sheet's address, after /d/
rangerequiredstringWhich cells, e.g. Sheet1!A1:D20
valuesrequiredarrayThe row's cells, in order
Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Gmail

Install Gmail's typed package for your language:

pip install operate-as-gmail
Run gmail.send_email
curl -X POST https://api.operate.as/v1/actions/gmail.send_email \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {      "to": "<to>",      "subject": "<subject>",      "body": "<body>"    }  }'
InputTypeWhat it is
torequiredstringWho to send it to
subjectrequiredstringSubject
bodyrequiredstringText
Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Google Postmaster Tools

Install Google Postmaster Tools's typed package for your language:

pip install operate-as-postmaster-tools
Run postmaster-tools.domain_stats_batch_query
curl -X POST https://api.operate.as/v1/actions/postmaster-tools.domain_stats_batch_query \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {}  }'

Every input, with its JSON Schema: GET /v1/actions/postmaster-tools.domain_stats_batch_query

Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Google Calendar

Install Google Calendar's typed package for your language:

pip install operate-as-calendar
Run calendar.create_event
curl -X POST https://api.operate.as/v1/actions/calendar.create_event \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {      "summary": "<summary>",      "start": "<start>",      "end": "<end>"    }  }'
InputTypeWhat it is
summaryrequiredstringThe event's title
startrequiredstringWhen it starts (RFC 3339, e.g. 2026-11-02T10:00:00-05:00)
endrequiredstringWhen it ends (RFC 3339)
calendar_idstringLeave empty for the main calendar
descriptionstringNotes on the event
Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Google Meet

Install Google Meet's typed package for your language:

pip install operate-as-google-meet
Run google-meet.conference_records_get
curl -X POST https://api.operate.as/v1/actions/google-meet.conference_records_get \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {      "name": "<name>"    }  }'

Shows the required inputs. Every input, with its JSON Schema: GET /v1/actions/google-meet.conference_records_get

Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Google Cloud Search

Install Google Cloud Search's typed package for your language:

pip install operate-as-google-cloud-search
Run google-cloud-search.debug_datasources_items_check_access
curl -X POST https://api.operate.as/v1/actions/google-cloud-search.debug_datasources_items_check_access \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {      "name": "<name>"    }  }'

Shows the required inputs. Every input, with its JSON Schema: GET /v1/actions/google-cloud-search.debug_datasources_items_check_access

Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Google Cloud Storage

Install Google Cloud Storage's typed package for your language:

pip install operate-as-google-cloud-storage
Run google-cloud-storage.anywhere_caches_disable
curl -X POST https://api.operate.as/v1/actions/google-cloud-storage.anywhere_caches_disable \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {      "bucket": "<bucket>",      "anywhere_cache_id": "<anywhere_cache_id>"    }  }'

Shows the required inputs. Every input, with its JSON Schema: GET /v1/actions/google-cloud-storage.anywhere_caches_disable

Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Google Docs

Install Google Docs's typed package for your language:

pip install operate-as-google-docs
Run google-docs.documents_batch_update
curl -X POST https://api.operate.as/v1/actions/google-docs.documents_batch_update \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {      "document_id": "<document_id>"    }  }'

Shows the required inputs. Every input, with its JSON Schema: GET /v1/actions/google-docs.documents_batch_update

Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Google Drive

Install Google Drive's typed package for your language:

pip install operate-as-drive
Run drive.list_files
curl -X POST https://api.operate.as/v1/actions/drive.list_files \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {}  }'
InputTypeWhat it is
querystringA Drive search, e.g. name contains 'invoice'
page_sizeintegerAt most this many
Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Google Keep

Install Google Keep's typed package for your language:

pip install operate-as-google-keep
Run google-keep.notes_create
curl -X POST https://api.operate.as/v1/actions/google-keep.notes_create \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {}  }'

Every input, with its JSON Schema: GET /v1/actions/google-keep.notes_create

Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Google Photos

Install Google Photos's typed package for your language:

pip install operate-as-google-photos
Run google-photos.albums_add_enrichment
curl -X POST https://api.operate.as/v1/actions/google-photos.albums_add_enrichment \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {      "album_id": "<album_id>"    }  }'

Shows the required inputs. Every input, with its JSON Schema: GET /v1/actions/google-photos.albums_add_enrichment

Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Google Slides

Install Google Slides's typed package for your language:

pip install operate-as-google-slides
Run google-slides.presentations_batch_update
curl -X POST https://api.operate.as/v1/actions/google-slides.presentations_batch_update \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {      "presentation_id": "<presentation_id>"    }  }'

Shows the required inputs. Every input, with its JSON Schema: GET /v1/actions/google-slides.presentations_batch_update

Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Google Vault

Install Google Vault's typed package for your language:

pip install operate-as-google-vault
Run google-vault.matters_add_permissions
curl -X POST https://api.operate.as/v1/actions/google-vault.matters_add_permissions \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {      "matter_id": "<matter_id>"    }  }'

Shows the required inputs. Every input, with its JSON Schema: GET /v1/actions/google-vault.matters_add_permissions

Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Google Chat

Install Google Chat's typed package for your language:

pip install operate-as-google-chat
Run google-chat.custom_emojis_create
curl -X POST https://api.operate.as/v1/actions/google-chat.custom_emojis_create \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {}  }'

Every input, with its JSON Schema: GET /v1/actions/google-chat.custom_emojis_create

Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Google Contacts

Install Google Contacts's typed package for your language:

pip install operate-as-google-contacts
Run google-contacts.contact_groups_batch_get
curl -X POST https://api.operate.as/v1/actions/google-contacts.contact_groups_batch_get \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {}  }'

Every input, with its JSON Schema: GET /v1/actions/google-contacts.contact_groups_batch_get

Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Campaign Manager 360

Install Campaign Manager 360's typed package for your language:

pip install operate-as-campaign-manager-360
Run campaign-manager-360.account_active_ad_summaries_get
curl -X POST https://api.operate.as/v1/actions/campaign-manager-360.account_active_ad_summaries_get \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {      "profile_id": "<profile_id>",      "summary_account_id": "<summary_account_id>"    }  }'

Shows the required inputs. Every input, with its JSON Schema: GET /v1/actions/campaign-manager-360.account_active_ad_summaries_get

Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Display & Video 360

Install Display & Video 360's typed package for your language:

pip install operate-as-display-video-360
Run display-video-360.advertisers_ad_assets_bulk_create
curl -X POST https://api.operate.as/v1/actions/display-video-360.advertisers_ad_assets_bulk_create \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {      "advertiser_id": "<advertiser_id>"    }  }'

Shows the required inputs. Every input, with its JSON Schema: GET /v1/actions/display-video-360.advertisers_ad_assets_bulk_create

Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Google Ad Manager

Install Google Ad Manager's typed package for your language:

pip install operate-as-google-ad-manager
Run google-ad-manager.networks_ad_rules_batch_activate
curl -X POST https://api.operate.as/v1/actions/google-ad-manager.networks_ad_rules_batch_activate \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {      "parent": "<parent>"    }  }'

Shows the required inputs. Every input, with its JSON Schema: GET /v1/actions/google-ad-manager.networks_ad_rules_batch_activate

Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Google AdMob

Install Google AdMob's typed package for your language:

pip install operate-as-google-admob
Run google-admob.accounts_ad_units_list
curl -X POST https://api.operate.as/v1/actions/google-admob.accounts_ad_units_list \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {      "parent": "<parent>"    }  }'

Shows the required inputs. Every input, with its JSON Schema: GET /v1/actions/google-admob.accounts_ad_units_list

Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Google Ads

Install Google Ads's typed package for your language:

pip install operate-as-google-ads
Run google-ads.audience_insights_list_insights_eligible_dates
curl -X POST https://api.operate.as/v1/actions/google-ads.audience_insights_list_insights_eligible_dates \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {}  }'

Every input, with its JSON Schema: GET /v1/actions/google-ads.audience_insights_list_insights_eligible_dates

Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Google AdSense

Install Google AdSense's typed package for your language:

pip install operate-as-google-adsense
Run google-adsense.accounts_adclients_adunits_create
curl -X POST https://api.operate.as/v1/actions/google-adsense.accounts_adclients_adunits_create \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {      "parent": "<parent>"    }  }'

Shows the required inputs. Every input, with its JSON Schema: GET /v1/actions/google-adsense.accounts_adclients_adunits_create

Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Google Business Profile

Install Google Business Profile's typed package for your language:

pip install operate-as-google-business-profile
Run google-business-profile.accounts_locations_create
curl -X POST https://api.operate.as/v1/actions/google-business-profile.accounts_locations_create \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {      "parent": "<parent>"    }  }'

Shows the required inputs. Every input, with its JSON Schema: GET /v1/actions/google-business-profile.accounts_locations_create

Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Google Local Services Ads

Install Google Local Services Ads's typed package for your language:

pip install operate-as-google-local-services-ads
Run google-local-services-ads.account_reports_search
curl -X POST https://api.operate.as/v1/actions/google-local-services-ads.account_reports_search \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {}  }'

Every input, with its JSON Schema: GET /v1/actions/google-local-services-ads.account_reports_search

Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Google Wallet

Install Google Wallet's typed package for your language:

pip install operate-as-google-wallet
Run google-wallet.eventticketclass_addmessage
curl -X POST https://api.operate.as/v1/actions/google-wallet.eventticketclass_addmessage \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {      "resource_id": "<resource_id>"    }  }'

Shows the required inputs. Every input, with its JSON Schema: GET /v1/actions/google-wallet.eventticketclass_addmessage

Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Search Ads 360

Install Search Ads 360's typed package for your language:

pip install operate-as-search-ads-360
Run search-ads-360.customers_custom_columns_get
curl -X POST https://api.operate.as/v1/actions/search-ads-360.customers_custom_columns_get \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {      "resource_name": "<resource_name>"    }  }'

Shows the required inputs. Every input, with its JSON Schema: GET /v1/actions/search-ads-360.customers_custom_columns_get

Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Blogger

Install Blogger's typed package for your language:

pip install operate-as-blogger
Run blogger.blog_user_infos_get
curl -X POST https://api.operate.as/v1/actions/blogger.blog_user_infos_get \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {      "user_id": "<user_id>",      "blog_id": "<blog_id>"    }  }'

Shows the required inputs. Every input, with its JSON Schema: GET /v1/actions/blogger.blog_user_infos_get

Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

YouTube

Install YouTube's typed package for your language:

pip install operate-as-youtube
Run youtube.abuse_reports_insert
curl -X POST https://api.operate.as/v1/actions/youtube.abuse_reports_insert \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {      "part": "<part>"    }  }'

Shows the required inputs. Every input, with its JSON Schema: GET /v1/actions/youtube.abuse_reports_insert

Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Google Analytics

Install Google Analytics's typed package for your language:

pip install operate-as-google-analytics
Run google-analytics.analyticsadmin_account_summaries_list
curl -X POST https://api.operate.as/v1/actions/google-analytics.analyticsadmin_account_summaries_list \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {}  }'

Every input, with its JSON Schema: GET /v1/actions/google-analytics.analyticsadmin_account_summaries_list

Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Google Search Console

Install Google Search Console's typed package for your language:

pip install operate-as-search-console
Run search-console.indexing_url_notifications_get_metadata
curl -X POST https://api.operate.as/v1/actions/search-console.indexing_url_notifications_get_metadata \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {}  }'

Every input, with its JSON Schema: GET /v1/actions/search-console.indexing_url_notifications_get_metadata

Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Google Tag Manager

Install Google Tag Manager's typed package for your language:

pip install operate-as-google-tag-manager
Run google-tag-manager.accounts_containers_create
curl -X POST https://api.operate.as/v1/actions/google-tag-manager.accounts_containers_create \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {      "parent": "<parent>"    }  }'

Shows the required inputs. Every input, with its JSON Schema: GET /v1/actions/google-tag-manager.accounts_containers_create

Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Google Classroom

Install Google Classroom's typed package for your language:

pip install operate-as-google-classroom
Run google-classroom.courses_aliases_create
curl -X POST https://api.operate.as/v1/actions/google-classroom.courses_aliases_create \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {      "course_id": "<course_id>"    }  }'

Shows the required inputs. Every input, with its JSON Schema: GET /v1/actions/google-classroom.courses_aliases_create

Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Google Tasks

Install Google Tasks's typed package for your language:

pip install operate-as-google-tasks
Run google-tasks.tasklists_delete
curl -X POST https://api.operate.as/v1/actions/google-tasks.tasklists_delete \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {      "tasklist": "<tasklist>"    }  }'

Shows the required inputs. Every input, with its JSON Schema: GET /v1/actions/google-tasks.tasklists_delete

Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Google Forms

Install Google Forms's typed package for your language:

pip install operate-as-google-forms
Run google-forms.forms_batch_update
curl -X POST https://api.operate.as/v1/actions/google-forms.forms_batch_update \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {      "form_id": "<form_id>"    }  }'

Shows the required inputs. Every input, with its JSON Schema: GET /v1/actions/google-forms.forms_batch_update

Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Google Merchant Center

Install Google Merchant Center's typed package for your language:

pip install operate-as-google-merchant-center
Run google-merchant-center.accounts_autofeed_settings_get_autofeed_s
curl -X POST https://api.operate.as/v1/actions/google-merchant-center.accounts_autofeed_settings_get_autofeed_s \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {      "name": "<name>"    }  }'

Shows the required inputs. Every input, with its JSON Schema: GET /v1/actions/google-merchant-center.accounts_autofeed_settings_get_autofeed_s

Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Google Books

Install Google Books's typed package for your language:

pip install operate-as-google-books
Run google-books.bookshelves_get
curl -X POST https://api.operate.as/v1/actions/google-books.bookshelves_get \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {      "shelf": "<shelf>",      "user_id": "<user_id>"    }  }'

Shows the required inputs. Every input, with its JSON Schema: GET /v1/actions/google-books.bookshelves_get

Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Chrome Web Store

Install Chrome Web Store's typed package for your language:

pip install operate-as-google-chrome-web-store
Run google-chrome-web-store.media_upload
curl -X POST https://api.operate.as/v1/actions/google-chrome-web-store.media_upload \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {      "name": "<name>"    }  }'

Shows the required inputs. Every input, with its JSON Schema: GET /v1/actions/google-chrome-web-store.media_upload

Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Firebase

Install Firebase's typed package for your language:

pip install operate-as-firebase
Run firebase.available_projects_list
curl -X POST https://api.operate.as/v1/actions/firebase.available_projects_list \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {}  }'

Every input, with its JSON Schema: GET /v1/actions/firebase.available_projects_list

Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Google Apps Script

Install Google Apps Script's typed package for your language:

pip install operate-as-apps-script
Run apps-script.processes_list
curl -X POST https://api.operate.as/v1/actions/apps-script.processes_list \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {}  }'

Every input, with its JSON Schema: GET /v1/actions/apps-script.processes_list

Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Google Cloud

Install Google Cloud's typed package for your language:

pip install operate-as-google-cloud
Run google-cloud.accessapproval_folders_approval_requests_approve
curl -X POST https://api.operate.as/v1/actions/google-cloud.accessapproval_folders_approval_requests_approve \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {      "name": "<name>"    }  }'

Shows the required inputs. Every input, with its JSON Schema: GET /v1/actions/google-cloud.accessapproval_folders_approval_requests_approve

Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Google Play Console

Install Google Play Console's typed package for your language:

pip install operate-as-google-play
Run google-play.applications_data_safety
curl -X POST https://api.operate.as/v1/actions/google-play.applications_data_safety \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {      "package_name": "<package_name>"    }  }'

Shows the required inputs. Every input, with its JSON Schema: GET /v1/actions/google-play.applications_data_safety

Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Google Workspace Admin

Install Google Workspace Admin's typed package for your language:

pip install operate-as-google-workspace-admin
Run google-workspace-admin.alertcenter_alerts_batch_delete
curl -X POST https://api.operate.as/v1/actions/google-workspace-admin.alertcenter_alerts_batch_delete \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {}  }'

Every input, with its JSON Schema: GET /v1/actions/google-workspace-admin.alertcenter_alerts_batch_delete

Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Dialogflow CX

Install Dialogflow CX's typed package for your language:

pip install operate-as-dialogflow
Run dialogflow.projects_agent_entity_types_batch_delete
curl -X POST https://api.operate.as/v1/actions/dialogflow.projects_agent_entity_types_batch_delete \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {      "parent": "<parent>"    }  }'

Shows the required inputs. Every input, with its JSON Schema: GET /v1/actions/dialogflow.projects_agent_entity_types_batch_delete

Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Google Cloud Agent Platform

Install Google Cloud Agent Platform's typed package for your language:

pip install operate-as-google-agent-platform
Run google-agent-platform.batch_prediction_jobs_create
curl -X POST https://api.operate.as/v1/actions/google-agent-platform.batch_prediction_jobs_create \  -H "Authorization: Bearer $OPERATE_AS_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "clientId": "6f1c2a7e-...",    "input": {}  }'

Every input, with its JSON Schema: GET /v1/actions/google-agent-platform.batch_prediction_jobs_create

Response
{  "status": 200,  "data": {    "…": "the service's own response"  },  "encoding": "json"}

Pass-through

The service key goes after the client ID, then the path from Google's API. Sheets' address has no version, so you add v4; Calendar's, Gmail's and Drive's already include it.

See Pass-through requests for the full request and response format.

Call any endpoint
GET /v1/clients/{clientId}/sheets/v4/spreadsheets/{spreadsheetId}/values/Sheet1!A1:D20
GET /v1/clients/{clientId}/calendar/calendars/primary/events?maxResults=10
GET /v1/clients/{clientId}/gmail/users/me/messages?maxResults=10
GET /v1/clients/{clientId}/drive/files?pageSize=20
GET /v1/clients/{clientId}/sheets/v4/spreadsheets/{spreadsheetId}/values/Sheet1!A1:D20
Authorization: Bearer oa_...

When access ends

How long access lastsAbout an hour at a time. Operate As renews it before it runs out and checks every connection daily.
RenewalThe renewal key stops working if it isn't used for six months. Daily renewal keeps it in use.
What ends itYour client removes the app in their Google account, changes their password (if Gmail is connected), or a Workspace admin restricts the app.
When it's removedWe cancel the access with Google too.

See Keeping access alive and Removing access.

Calls answer
HTTP/1.1 409 ConflictContent-Type: application/json{  "detail": "Miller Dental's Google access ended. Send them their link to reconnect."}
Your webhook receives
{  "id": "evt_3f9a1c…",  "type": "connection.expired",  "createdAt": "2026-10-16T08:00:00+00:00",  "data": {    "clientId": "6f1c2a7e-...",    "clientName": "Miller Dental",    "provider": "google",    "services": [      "bigquery",      "sheets",      "gmail",      "postmaster-tools",      "calendar",      "google-meet",      "google-cloud-search",      "google-cloud-storage",      "google-docs",      "drive",      "google-keep",      "google-photos",      "google-slides",      "google-vault",      "google-chat",      "google-contacts",      "campaign-manager-360",      "display-video-360",      "google-ad-manager",      "google-admob",      "google-ads",      "google-adsense",      "google-business-profile",      "google-local-services-ads",      "google-wallet",      "search-ads-360",      "blogger",      "youtube",      "google-analytics",      "search-console",      "google-tag-manager",      "google-classroom",      "google-tasks",      "google-forms",      "google-merchant-center",      "google-books",      "google-chrome-web-store",      "firebase",      "apps-script",      "google-cloud",      "google-play",      "google-workspace-admin",      "dialogflow",      "google-agent-platform"    ],    "reconnectUrl": "https://…"  }}