View all methods
studio.reports.update
Update a Data Studio report.
Facts
| Method | POST https://api.getdx.com/studio.reports.update |
| Required scope | studio:reports:write |
Arguments
Required arguments
| Name | Type | Description |
|---|---|---|
token |
Token |
Auth token passed as an HTTP header. |
id |
Text |
Public ID of the report. |
Optional arguments
| Name | Type | Description |
|---|---|---|
name |
Text |
The report name. Blank values are ignored. |
description |
Text |
Description of the report. |
markdown_notes |
Text |
Markdown notes to give details about the report. |
view_access_type |
Text |
Who can view the report. Valid values are owner_and_direct_url_only, everyone, and specific_users. |
edit_access_type |
Text |
Who can edit the report. Valid values are read_only, everyone, and specific_users. |
viewer_emails |
Array<Text> |
List of users who can view the report. Include when view_access_type is specific_users, or when the existing report already uses specific_users view access. |
editor_emails |
Array<Text> |
List of users who can edit the report. Include when edit_access_type is specific_users, or when the existing report already uses specific_users edit access. |
tiles |
Array<Studio Report Tile> |
Replacement list of supported tiles on the report. |
Usage info
- Organization API keys can update any Data Studio report in the account.
- Personal access tokens can update reports the token owner can edit.
- If
tilesis supplied, DX replaces the report’s supported public tiles with the supplied list. - Unsupported existing tiles, such as
numbertiles, are not returned by this API and are not replaced. - If
tilesis omitted, existing tiles are left unchanged.
Example request
This is a typical request:
curl -X POST https://api.getdx.com/studio.reports.update \
-H 'Accept: application/json' \
-H 'Authorization: Bearer xxxx-xxxxxxxxx-xxxx' \
-H 'Content-Type: application/json' \
--data '{
"id": "ou9lhoz888sa",
"name": "Web Metrics",
"description": "Main application web visit metrics",
"markdown_notes": "## Objectives\n---\n* Provide high-level traffic metrics for marketing team\n* Surface for debugging reported web issues.",
"view_access_type": "everyone",
"edit_access_type": "read_only",
"tiles": [
{
"title": "Median visit duration",
"sql": "SELECT avg(duration) AS avg_duration, week_start FROM custom.web_visits;",
"chart_type": "line",
"chart_config": {
"xAxis": "week_start",
"yAxes": ["avg_duration"]
}
}
]
}'
Example response
This is a typical success response:
{
"ok": true,
"report": {
"id": "ou9lhoz888sa",
"name": "Web Metrics",
"description": "Main application web visit metrics",
"markdown_notes": "## Objectives\n---\n* Provide high-level traffic metrics for marketing team\n* Surface for debugging reported web issues.",
"view_access_type": "everyone",
"edit_access_type": "read_only",
"url": "https://app.getdx.com/datacloud/studio/reports/OTEzNA",
"tiles": [
{
"id": "MTE4e2",
"title": "Median visit duration",
"sql": "SELECT avg(duration) AS avg_duration, week_start FROM custom.web_visits;",
"chart_type": "line",
"chart_config": {
"xAxis": "week_start",
"yAxes": ["avg_duration"]
}
}
],
"created_at": "2026-03-12T19:56:11Z",
"updated_at": "2026-05-12T10:46:12Z"
}
}
The report field is a Studio Report object.
Errors
This table lists the expected errors that this method could return. However, other errors can be returned in the case where the service is down or other unexpected factors affect processing. Callers should always check the value of the ok param in the response.
| Error | Description |
|---|---|
not_authed |
No authentication token provided, or Data Cloud is not available. |
invalid_auth |
Some aspect of authentication cannot be validated. |
not_authorized |
The bearer token does not include the required studio:reports:write scope, the personal access token owner cannot access Data Studio, or the token owner cannot edit the report. |
not_found |
No report with that ID exists in the current account. |
invalid_arguments |
One or more arguments are invalid. |
too_many_requests |
Too many requests were sent in a short period of time. |