Automation

The Data Studio API (formerly Looker Studio API), explained for marketers: what it can do, and what it can't

The Data Studio API can't create, copy or schedule a report. Here's what it does do, and the three other routes (Linking API, community connectors, embeds) with code.

Lazarina Stoy·

The Data Studio API, explained for marketers: what it can and can’t do

The Data Studio API can’t create, copy, schedule or refresh a report. It does two things: it finds your reports and data sources, and it changes who can access them, and it only works for organisations on Google Workspace or Cloud Identity. If you searched for the Looker Studio API, it’s the same thing: Google renamed the product back to Data Studio in April 2026, and plenty of pages still use the old name.

If you came here to copy one report per client, the route you want is the Linking API: a URL that opens a copy of a template with each client’s data in it, which someone still has to save in a browser. Getting data in is the job of community connectors, and showing a report somewhere else is the job of embeds. This post covers what each of the four does, what it needs, what it can’t do, a code example for each, and which one fits your job.

Everything here comes from Google’s documentation (checked 13 October 2026) and its Data Studio forum. I haven’t run these against a client account; the code is shown as Google documents it, and I say where Google is silent.

Three things Google calls a Data Studio API, and a fourth route

Data Studio has four ways in, and only the first is an API in the developer sense:

Four cards plugging into one Data Studio frame: Manage (the Data Studio API) lists assets and changes sharing, Copy (the Linking API) opens a copy of a template with new data, Connect (community connectors) brings data in through Apps Script, Show (embeds and URL parameters) puts a report elsewhere
Four routes in, four different jobs. Only the Data Studio API is limited to Workspace or Cloud Identity organisations.
Route What it does What it can’t do Who can use it Code? Browser?
Data Studio API Searches reports and data sources; reads and changes their sharing Create, copy, edit, schedule, refresh or read a report Workspace or Cloud Identity organisations only Yes No
Linking API A URL that opens a copy of a template with each client’s data swapped in Save the copy without a person clicking Google doesn’t limit it to Workspace No, it’s a URL Yes
Community connectors Bring data from any internet-accessible source into Data Studio Run without Apps Script Anyone who builds or is given one Apps Script No
Embeds and URL parameters Put a report in a portal; set report parameters per link Remove the watermark; let embed viewers refresh Anyone the report is shared with No Yes

If the names themselves confuse you, see Looker vs Looker Studio vs Data Studio.

What the Data Studio API does: finds reports and changes who can see them

Google says the Data Studio API “lets you search for and manage Data Studio assets”, mainly so Workspace and Cloud Identity organisations can automate managing and migrating them (Google’s overview, updated 13 May 2026). An asset here is a report or a data source. Five methods cover it.

Method (as Google’s reference names it) What it does Where a marketer would use it
assets:search Lists reports or data sources (one type per call), filtered by title, owner, creator, or who shared what with whom Every report a leaver owns, before their account goes; every report you’ve shared with a particular person or group
Permissions: get Reads who has which role on an asset An access audit before a client offboards
Permissions: addMembers Adds users, groups or a domain as viewers or editors Give a client’s team group view access to a batch of reports
Permissions: revokeAllPermissions Removes members from an asset (never the owners or the caller) Remove a departed contractor from everything
Permissions: patch Updates an asset’s permissions Changing roles already set on a report

A search returns each asset’s ID, title, description, owner, creator, dates, type and whether it’s in the bin. Not what’s inside: “deeper metadata like filters, sections, and dimensions within a report cannot be retrieved using the API”. An inventory, not an audit.

The documented request, filtered by owner. It returns reports the signed-in user can access, so run it as someone who can see them:

# The documented request shape (from Google's reference), not tested here.
# One asset type per call: REPORT or DATA_SOURCE.
# Returns title, owner and dates per report; open one at
# https://datastudio.google.com/reporting/{name}
GET https://datastudio.googleapis.com/v1/assets:search?assetTypes=REPORT&owner=leaver@youragency.com

And the sharing side, adding a client’s Google Group as viewers. Members can be user:, group:, domain: or serviceAccount:; nobody can be added as an owner:

# Written from Google's docs, not tested here.
POST https://datastudio.googleapis.com/v1/assets/REPORT_ID/permissions:addMembers

{
  "role": "VIEWER",
  "members": ["group:client-team@youragency.com"]
}

That’s the real agency use: offboarding and access hygiene. If only one person can edit a client’s reports, fix that first (running reporting as an agency); the report ownership guide covers moving reports before an account goes.

What it takes to switch it on

There’s no API key. The setup, from Google’s overview:

  1. Enable the Data Studio API in a Google Cloud project.
  2. Create an OAuth client for your app, and note its client ID. Google says not to add the Data Studio scopes to the client itself.
  3. A Workspace admin grants domain-wide delegation in the Admin console: they add your client ID with the scopes, usually https://www.googleapis.com/auth/datastudio and https://www.googleapis.com/auth/userinfo.profile, or the read-only https://www.googleapis.com/auth/datastudio.readonly if the app doesn’t manage assets.
  4. Call the API with an OAuth access token. Once the organisation has authorised the app, its users don’t see a consent dialog.


Step 3 is where most people stop. A personal Gmail account can’t use the API at all, and in an organisation it needs an admin. Without it, users get “Error 400: invalid_scope”.

The no-code version

Make’s app for Data Studio wraps exactly these methods in five modules: Search Assets, List Asset Permissions, Add Asset Members, Revoke Asset Permissions, and a raw API call. Same Workspace requirement, and the same limit: there’s no “create report” module, because there’s nothing for it to call.

What the Data Studio API can’t do: the endpoints people keep asking for

No method creates, copies, edits, schedules, refreshes or exports a report, reads a chart’s numbers, or changes a data source’s credentials. The most-viewed Stack Overflow question on this (2020, 12,688 views) asked to copy a report from code; the accepted answer, updated in August 2024, says the API only views assets and updates permissions. In June 2026 a user posted a feature request on Google’s forum for create, copy, delete and move methods, data source credentials and refresh. As of 13 October it has no replies.

What you’d want In the API? The closest real route
Create a report from a template ✘ The Linking API
Copy a report ✘ The Linking API, or copying it by hand
Schedule a PDF email ✘ The schedule dialog (sharing and scheduling)
Refresh data ✘ Data freshness settings (how freshness works)
Export PDF or CSV ✘ Download or schedule from the report (getting data out)
Read a chart’s numbers ✘ Query the source instead: GA4’s own API, BigQuery, or the Sheet
Edit charts or fields ✘ The report editor only
Change a data source’s credentials ✘ The editor (data sources explained)
List reports and their owners ✔ assets:search
Share or unshare in bulk ✔ The permissions methods

I wouldn’t wait for it. The API went generally available in August 2020, and its last changelog entry, in April 2022, was documentation fixes: over four years without a functional change.

Timeline from 2020 to 2026 in two lanes: the Data Studio API goes generally available in August 2020 with its last changelog entry in April 2022; the Linking API launches as the Integration API in December 2021, is renamed in June 2022 and last changes in June 2023; three 2026 forum events are marked
Both changelogs, dated. The 2026 entries are from Google’s Data Studio forum.

What about AI? In a 22-post forum thread asking for an MCP server (the protocol AI assistants use to call tools), a Google staff member described the current API as supporting “only basic asset management”. On 1 September 2026 the same thread got this from Google staff: “due to shifts in strategic priorities, there is currently no defined timeline for the development of an MCP server for Data Studio.” The workaround is to connect the assistant to the data rather than the report: how to connect GA4 to Claude or ChatGPT over MCP.

The Linking API: one URL per client, and the click it still needs

The Linking API is a URL format that opens a copy of a template report with its data sources swapped for someone else’s. Point it at your master report and one client’s GA4 property and Search Console site, and whoever opens it sees your layout with that client’s numbers. The reference page was last updated on 30 April 2026.

An example Linking API URL split one parameter per line: the create address, c.reportId for the template, r.reportName for the copy's name, three ds.ds0 parameters for a GA4 source and four ds.ds1 parameters for a Search Console Domain property
Every part of the link has a job. ds0 and ds1 are the aliases from your own template.

As text, each ds. group names a data source by its alias (ds0, ds1…), shown in the template under Resource → Manage added data sources:

# Written from Google's Linking API reference, not tested here.
# Placeholders in capitals. Shown one parameter per line; join them
# with no spaces or line breaks before you use it.
https://datastudio.google.com/reporting/create?
  c.reportId=TEMPLATE_REPORT_ID
  &r.reportName=Acme%20SEO%20report
  &ds.ds0.connector=googleAnalytics
  &ds.ds0.accountId=GA4_ACCOUNT_ID
  &ds.ds0.propertyId=GA4_PROPERTY_ID
  &ds.ds1.connector=searchConsole
  &ds.ds1.siteUrl=sc-domain%3Aexample.com
  &ds.ds1.tableType=SITE_IMPRESSION
  &ds.ds1.searchType=WEB

The report ID is the part of the template’s URL between reporting/ and /page. Setting connector tells Data Studio to replace that source’s whole configuration, so every required parameter must be there. Leave it out and the link updates only what you give, with the template filling the gaps.

Google’s full list of connectors it can swap:

Connector connector= Required parameters refreshFields default
Google Analytics (GA4) googleAnalytics accountId, propertyId (no viewId: that was Universal Analytics) false
Search Console searchConsole siteUrl (sc-domain: for a Domain property), tableType, searchType false
Google Sheets googleSheets spreadsheetId, worksheetId true
BigQuery bigQuery type, projectId, datasetId, tableId (or a custom query) true
Community connectors community connectorId, plus the connector’s own settings true
Looker looker instanceUrl, model, explore false
Google Cloud Storage googleCloudStorage pathType, path true
Cloud Spanner cloudSpanner projectId, instanceId, databaseId, sql true

Google Ads isn’t on Google’s list, so a template that runs on the native Google Ads connector can’t have that source swapped by a link.

What happens when someone opens the link

The part most write-ups skip: the person opens the link in a browser, the report loads with their data, they click Edit and share, and only then is it saved, to their Data Studio account, as their copy.

Five steps from clicking a Linking API link to sharing the copy, each with what can go wrong: no view access to the template, no access to the client's data, closing the tab before saving, saving under the wrong Google account, and not checking each source's credentials before sharing
The link builds nothing by itself. A signed-in person opens it, saves it, and owns the result.


The catches, in the order you’ll hit them

  1. View access to the template. Whoever opens the link needs at least view access to the master report.
  2. Access to the client’s data. Without it, the charts that depend on that data show an error. The Linking API never changes anyone’s access.
  3. Replace or update, and reusable sources. An embedded template source inherits view access from the report. A reusable one being updated (no connector in the link) needs view access for the person opening it (embedded vs reusable).
  4. refreshFields. For GA4 and Search Console it defaults to false, so field renames and type changes in your template carry over. For Sheets and BigQuery it defaults to true and the fields are re-read. Calculated fields and parameters in template data sources always carry over.
  5. Whose credentials. A new data source made by the link uses the credentials of whoever clicked it. To keep a reusable template source on its existing credentials, leave it out of the link (no alias, no ds.* wildcard) and it’s re-added as it is.
  6. Nothing is saved until Edit and share. Close the tab and there’s no report.
  7. Browser only. Google expects the URL to be opened in a browser. There’s an /embed/ form, but a December 2025 forum thread found it still asks the viewer to sign in, and a Google staff member replied that it can’t be embedded without one: the copy is created in the viewer’s own account.
  8. No usage tracking by default. The copy has no Google Analytics measurement ID unless the link sets r.measurementId or r.keepMeasurementId=true (more in tracking who opens your reports).

When a link misbehaves, add &c.explain=true to the end. Data Studio then shows a debug button with the configuration as it read it.

Where it fits an agency

The realistic workflow: an account manager opens each client’s link, signed in to the agency account with that client’s access, checks it and clicks Edit and share. It’s quicker than copying a report and swapping every source by hand (the manual route). But it’s a person clicking, per client, and the copy belongs to whoever saved it, so record who that was. Every copy inherits the master’s layout, so the story is built once, in the master: Chapter 25 of my ebook, Data Storytelling in Data Studio, covers turning a monthly storyboard into that master report.

Writing the links is the fiddly part, so I built a sheet that does it from your template’s IDs and a client list.

Community connectors: the API for getting data in

“Connect an API to Data Studio” usually means this. A community connector is a small Apps Script project that fetches data from somewhere and hands it to Data Studio. They’re free to build and use, and can be shared directly or listed in the connector gallery. Google lists social media, CRM and advertising platforms among the sources they’re for.

Each connector defines four functions: getAuthType(), getConfig(), getSchema() and getData(). Here are the first two, trimmed from Google’s npm-downloads sample on the Build a Community Connector page:

// Trimmed from Google's sample (npm-downloads). Not tested here.
var cc = DataStudioApp.createCommunityConnector();

// Which sign-in the data source needs. This one needs none.
function getAuthType() {
  return cc.newAuthTypeResponse()
    .setAuthType(cc.AuthType.NONE)
    .build();
}

// The settings screen people see when they add the connector.
function getConfig() {
  var config = cc.getConfig();
  config.newTextInput()
    .setId('package')
    .setName('Enter a single package name or multiple names separated by commas (no spaces!)');
  config.setDateRangeRequired(true);
  return config.build();
}

// getSchema() lists the fields; getData() fetches the rows.

Two things to weigh: it’s code you maintain when the source’s API changes, and in a Workspace organisation Apps Script must stay switched on, or charts built on the connector show an error.

So there are three routes for outside data:

Community connectors also work with the Linking API (connector=community), and a connector’s direct link can open it with its settings prefilled.

Embeds and report URLs: show a report elsewhere, with settings per link

Embedding puts a report inside any site that supports an iframe, including Google Sites. Google’s embed documentation sets the limits: they’re view-only, viewers can’t refresh them by hand, private ones need a Google sign-in, and the Data Studio watermark can’t be removed. The embedding guide goes through the options.

URL parameters set a report’s parameters from the link, so one report can open with a different value per recipient. It’s off by default: an editor ticks “Allow to be modified in report URL” under Resource → Manage variables (parameters), where each parameter’s URL name is also shown.

The value is a small JSON object, URL-encoded and added as params:

# Shape from Google's docs; the parameter name is illustrative. Not tested here.
# The JSON you mean:
{"ds0.client": "acme"}

# The same object, URL-encoded, on the report's view URL:
https://datastudio.google.com/reporting/REPORT_ID/page/PAGE_ID?params=%7B%22ds0.client%22%3A%22acme%22%7D

The parameter only changes a chart if something uses it: a calculated field, a BigQuery custom query or a community connector. And it isn’t access control: anyone holding the URL can edit it. For a portal showing each client only their rows without a Google sign-in, Google’s guide passes a short-lived token in the embed URL to a community connector. That’s developer work; the row-level security guide explains the options.

Which one do you need? Match the job to the route

Start from the job, not the word “API”:

Your job Route What it needs
A copy of my master report for each new client Linking API A browser and access to the client’s data
Find every report a leaver owns and move access Data Studio API, or by hand Workspace admin for the API
Meta, LinkedIn or CRM data in a report A vendor connector, or Sheet/BigQuery staging A connector subscription or a staging routine
A report inside our client portal Embed Viewers signed in to Google, for private reports
One link per client, opening on their value params= URL An editor to allow the parameter
A scheduled PDF per client Not an API: the schedule dialog Sharing and scheduling
An AI assistant that builds reports Not available from Google today No MCP server timeline; what ChatGPT or Claude can do for a build today

If your reports run on BigQuery, the Linking API swaps project, dataset or table per client:

The GA4Dataform Report Template — a Data Studio dashboard by Mehdi Oudjida
Mehdi Oudjida’s free cockpit reads session-scoped GA4 data from BigQuery, another connector the Linking API can swap per project, dataset or table. Open the template · by Mehdi Oudjida

Where to go next

Frequently asked questions

Is there a Data Studio API key?

No. The Data Studio API uses OAuth, and a Workspace admin has to authorise your app through domain-wide delegation in the Admin console. The Linking API needs no key either: it’s a URL.

Does the Data Studio API work with a free Gmail account?

No. Google’s documentation limits it to users in an organisation with Google Workspace or Cloud Identity. The Linking API, embeds and community connectors aren’t restricted to Workspace in Google’s documentation.

Is there an MCP server for Data Studio?

Not from Google. On 1 September 2026 Google staff said on the Data Studio forum that there’s no defined timeline for one.

Do I need Data Studio Pro to use these APIs?

None of Google’s API pages mention Pro. The Data Studio API’s requirement is a Workspace or Cloud Identity organisation, which is a different thing. The free vs Pro guide covers what Pro adds.

What does “Error 400: invalid_scope” mean?

Google’s troubleshooting note says the user’s organisation hasn’t authorised the app, or hasn’t done it correctly. The fix is on the admin’s side, in domain-wide delegation.

Shopping Cart
Scroll to Top