presentations for slide content and drive for listing, copying, exporting and deleting a file, which are Drive calls.
Ids. presentations.list returns presentationId per file. slides.list returns each slide’s objectId, and slides.get returns its pageElements. Text and element writes take the objectId of a shape or table, not a slide.
Placeholders. A slide created from a layout has placeholder shapes whose ids Google generates. Read the slide back to get them, or pass placeholderIdMappings through batch.update to choose ids up front.
Speaker notes. slides.setNotes reads the slide first to find the notes shape, deletes the existing text, then inserts the new text. A slide whose notes shape has never been created has no id for Google to write to, so the call explains that instead of guessing.
Text ranges. A range takes type: 'ALL', FROM_START_INDEX with startIndex, or FIXED_RANGE with both indexes. Indexes are Unicode code units counted from the start of the shape’s text, and Google appends a newline the caller did not type.
Destructive operations. presentations.delete, slides.remove, text.delete and batch.update are marked destructive for Corsair permissions. In text.updateStyle, a property named in fields but absent from style is reset to its default.
Rate limits. Google answers a quota burst with 429, or with a 403 whose body says rateLimitExceeded. Both are retried up to four times, waiting for Retry-After when present and sixty seconds otherwise, so a call can wait several minutes before it gives up. An exhausted daily quota is not retried, because no wait inside the request can clear it.
Raw requests. batch.update takes the batchUpdate request types without a typed endpoint, such as mergeTableCells or updateParagraphStyle. Deletions are refused there; use the typed operation.
Webhooks. Google Slides sends no push notifications, so the plugin has none.
What you get:
- 31 typed API operations
- 1 synced entity (
presentations) for fast.search()/.list()
Setup
1
Install
2
Add the plugin
corsair.ts
multiTenancy: true, scope calls with corsair.withTenant(id). See Quick start for KEK + Hub keys, and Multi-tenancy for account isolation.3
Choose authentication
- OAuth 2.0 (Recommended)
Open hub.corsair.dev, navigate to your project, and enter the client ID and client secret from your Google Slides OAuth app.More: OAuth 2.0
4
Connect a tenant
Mint a connect link and send the tenant to it. Hub hosts the page and delivers the result to your app — see Connect / OAuth.
Example API calls
List the slides in a presentationQuery synced data
Synced entities supporttenant.googleslides.db.<entity>.search() and .list(): presentations.
See Database for filters and operators.
What’s next
API reference
Every
googleslides.api.* operation with input and output types.Database
Synced entities, search filters, and operators.
Connect / OAuth
createLink, Hub delivery, and tenant connect flows.
Use with agents
Expose this plugin’s operations as MCP tools.