The Platform Data API provides platform-agnostic, enterprise-grade observability across your Tableau Cloud deployment. Accessible through Tableau Cloud Manager (TCM) REST API, the Platform Data API offers a centralized way to retrieve auditing and usage data to monitor security, performance, and operational health.
The Platform Data API offers the following benefits:
Table of Contents
The Platform Data API provides access to two complementary types of data:
Event logs: Historical event data that captures what happened in your Tableau Cloud deployment. Event logs record user actions, system events, and security-related activities at both the tenant and site levels. This data is stored in JSON format.
Entity snapshots: Point-in-time snapshots of Tableau Cloud content and its components, such as workbooks, data sources, published connections, users, and groups. Entity snapshots capture the current state of what exists on your sites. This data is stored in Parquet format.
Note: You can test these methods using an open source tool available in GitHub, Tableau Cloud Platform Data Loader.
| Goals | Questions to answer | Platform Data file type | Required license |
|---|---|---|---|
| To understand events, user actions, or changes over time | Who accessed this workbook yesterday? What caused this authentication failure? Show me all failed sign-in attempts. | Event logs | See Event Update and Data Retention in the Tableau Cloud Help. |
| To understand the current state or metadata of content | How many workbooks exist in the Sales project? Which data sources are certified? List all users with Creator licenses. | Entity snapshots | Enterprise or Tableau+ |
| To relate events to content for comprehensive analysis | Show access events for workbooks that are now deleted. Which users modified high-priority data sources? What was the state of this workbook when the error occurred? | Event logs and entity snapshots | Enterprise or Tableau+ |
Before you can use the Platform Data API, you must authenticate to the Tableau Cloud Manager (TCM) REST API. How you authenticate to the TCM REST API depends on whether you’re signing in for the first time or have previously signed in before.
First-time workflow: If authenticating to the TCM REST API for the first time, follow the steps described in Sign in to Tableau Cloud Manager REST API.
Returning workflow: If you’ve previously signed in to the TCM REST API, authenticate by using one of the following methods:
Notes:
Retrieve a list of available files to download by calling the appropriate method based on the data type you need:
Event logs:
Entity snapshots:
You can filter the results by date range (startTime and endTime) and type (eventType for event logs, entityType for entity snapshots). If no parameters are included, the APIs return the last 24 hours of available data for all types.
Best practices
Timestamps generally represent when the records became available, not necessarily when the events or snapshots occurred. Consider the following best practices:
Event log types
There are two categories of event types: tenant events and site events.
For a list of event types and corresponding parameters, see:
Entity snapshot entity types
Entity snapshots provide information about site-level content and components. For a list of entity types and corresponding parameters, see:
Best practices
eventType and entityType filters accept a single value per request, we recommend using these filters for ad hoc requests. For example, query no more than three types as separate requests. Making multiple requests for more types can cause a measurable impact on API call capacity and can cause API request limits to be reached quickly. For more information about these limits, see API request limits.GET methods to retrieve specific types you’re interested in.To list files, you need the tenant ID, and for site-level files, both the tenant ID and site ID. The tenant ID is returned after authenticating to the TCM REST API. To get the site ID, you can call the List Tenant Sites method.
Event logs - tenant
This request returns all tenant events 24 hours before the time of the request.
GET https://cloudmanager.tableau.com/api/v1/tenants/{tenantId}/activitylog
This request returns events from January 1 to January 7.
GET https://cloudmanager.tableau.com/api/v1/tenants/{tenantId}/activitylog?startTime=2026-01-01-T00:00:00&endTime=2026-01-07-T00:00:00
This request returns site creation (tcm_activity_log_access) activity from January 1 to January 7.
GET https://cloudmanager.tableau.com/api/v1/tenants/{tenantId}/activitylog?startTime=2026-01-01-T00:00:00&endTime=2026-01-07-T00:00:00&eventType=tcm_activity_log_access
Event logs - site
This request returns all site events 24 hours before the time of the request.
GET https://cloudmanager.tableau.com/api/v1/tenants/{tenantId}/sites/{siteId}/activitylog
This request returns seven days of events from January 1 to January 7.
GET https://cloudmanager.tableau.com/api/v1/tenants/{tenantId}/sites/{siteId}/activitylog?startTime=2026-01-01-T00:00:00&endTime=2026-01-07-T00:00:00
This request returns refresh token or personal access token redemption (hist_redeem_refresh_token) activity from January 1 to January 7.
GET https://cloudmanager.tableau.com/api/v1/tenants/{tenantId}/sites/{siteId}/activitylog?startTime=2026-01-01-T00:00:00&endTime=2026-01-07-T00:00:00&eventType=hist_redeem_refresh_token
Entity snapshots
This request returns all entity snapshots 24 hours before the time of the request.
GET https://cloudmanager.tableau.com/api/v1/tenants/{tenantId}/sites/{siteId}/snapshots
This request returns entity snapshots from January 1 to January 7.
GET https://cloudmanager.tableau.com/api/v1/tenants/{tenantId}/sites/{siteId}/snapshots?startTime=2026-01-01-T00:00:00&endTime=2026-01-07-T00:00:00
This request returns visualization entity snapshots from January 1 to January 7.
GET https://cloudmanager.tableau.com/api/v1/tenants/{tenantId}/sites/{siteId}/snapshots?startTime=2026-01-01-T00:00:00&endTime=2026-01-07-T00:00:00&entityType=views
The response returns a list of file paths and their corresponding sizes (bytes), partitioned by tenant or site ID, date range, and type. What is returned is then filtered by the parameters you provide.
Note: For event logs, because tenant IDs aren’t returned as part of the path for site-level data, consider creating a tenant folder when managing or storing these files.
Event logs - tenant
{
"files": [
{
"path": "tenant-9cde722f-1edc-4cdd-b76f-42d87b51c785/y=2026/m=01/d=01/h=0/eventType=tcm_activity_log_access/ActivityLog-0fb71a00-5645-44e3-ace6-aa37d66aa966-0-0-376429.text",
"size": 2112
}
]
}
Event logs - site
{
"files": [
{
"path": "pod=prod-ca-a/siteLuid=33d345e6-36bd-4411-91e2-1c9fc849564e/y=2026/m=01/d=01/h=0/eventType=hist_redeem_refresh_token/ActivityLog-0fb71a00-5645-44e3-ace6-aa37d66aa966-0-0-376429.text",
"size": 1292
}
]
}
Entity snapshots
{
"files": [
{
"path": "pod=prod-ca-a/siteLuid=33d345e6-36bd-4411-91e2-1c9fc849564e/y=2026/m=01/d=01/h=0/entityType=views/EntitySnapshot-0fb71a00-5645-44e3-ace6-aa37d66aa966-0-0-376429.parquet",
"size": 8192
}
]
}
To access the data, pick which file paths returned from the previous request to generate download URLs for. You’ll then use the paths in the request body of the appropriate GET method:
Event logs:
Entity snapshots:
Event logs - tenant URI
The request returns a download URL for the “ActivityLog-0fb71a00-5645-44e3-ace6-aa37d66aa966-0-0-376429.txt” log file.
POST https://cloudmanager.tableau.com/api/v1/tenants/{tenantId}/activitylog
Event logs - tenant request body
{
"files": [
"tenant-9cde722f-1edc-4cdd-b76f-42d87b51c785/y=2026/m=01/d=01/h=0/eventType=tcm_activity_log_access/ActivityLog-0fb71a00-5645-44e3-ace6-aa37d66aa966-0-0-376429.txt"
]
}
Event logs - site URI
The request returns download URLs for the specified event log files.
POST https://cloudmanager.tableau.com/api/v1/tenants/{tenantId}/sites/{siteId}/activitylog
Event logs - site request body
The request must include a comma-separated list of paths from the previous request.
{
"files": [
"pod=prod-ca-a/siteLuid=33d345e6-36bd-4411-91e2-1c9fc849564e/y=2026/m=01/d=01/h=0/eventType=hist_redeem_refresh_token/ActivityLog-0fb71a00-5645-44e3-ace6-aa37d66aa966-0-0-376429.txt",
"pod=prod-ca-a/siteLuid=33d345e6-36bd-4411-91e2-1c9fc849564e/y=2026/m=01/d=01/h=0/eventType=background_job/ActivityLog-0fb71a00-5645-44e3-ace6-aa37d66aa966-0-0-7.txt "
]
}
Entity snapshots - site URI
The request returns download URLs for the specified entity snapshot files.
POST https://cloudmanager.tableau.com/api/v1/tenants/{tenantId}/sites/{siteId}/snapshots
Entity snapshots - site request body
The request must include a comma-separated list of paths from the previous request.
{
"files": [
"pod=prod-ca-a/siteLuid=33d345e6-36bd-4411-91e2-1c9fc849564e/y=2026/m=01/d=01/h=0/entityType=views/EntitySnapshot-0fb71a00-5645-44e3-ace6-aa37d66aa966-0-0-376429.parquet",
"pod=prod-ca-a/siteLuid=33d345e6-36bd-4411-91e2-1c9fc849564e/y=2026/m=01/d=01/h=0/entityType=workbooks/EntitySnapshot-0fb71a00-5645-44e3-ace6-aa37d66aa966-0-0-7.parquet"
]
}
The response produces the original file paths and corresponding download URLs to access the files. The URLs expire after 10 minutes.
Important: Because the download URLs allow unauthenticated access to your data, treat these URLs as sensitive information and don’t share with anyone.
Event logs - tenant
{
"files": [
{
"path": "tenant-9cde722f-1edc-4cdd-b76f-42d87b51c785/y=2026/m=01/d=01/h=0/eventType=tcm_activity_log_access/ActivityLog-0fb71a00-5645-44e3-ace6-aa37d66aa966-0-0-376429.txt",
"url": "https://m1jb91y8k3mwh.mrap.accesspoint.s3-global.amazonaws.com/tenant%3D9cde722f-1edc-4cdd-b76f-42d87b51c785/y%3D2026/m%3D01/d=01/h=0/eventType=tcm_activity_log_access/ActivityLog-0fb71a00-5645-44e3-ace6-aa37d66aa966-0-0-376429.txt?X-Amz-Algorithm=AWS4-ECDSA-P256-SHA256&..."
}
]
}
Event logs - site
{
"files": [
{
"path": "pod=prod-ca-a/siteLuid=33d345e6-36bd-4411-91e2-1c9fc849564e/y=2026/m=01/d=01/h=0/eventType=hist_redeem_refresh_token/ActivityLog-0fb71a00-5645-44e3-ace6-aa37d66aa966-0-0-376429.txt",
"url": "https://activity-log-site-prod-ca-a.s3.ca-central-1.amazonaws.com/jb91y8k3mwh.mrap.accesspoint.s3-global.amazonaws.com/pod%3Dprod-ca-a/siteLuid%3D33d345e6-36bd-4411-91e2-1c9fc849564e/y=2026/m=01/d=01/h=0/eventType=hist_redeem_refresh_token/ActivityLog-0fb71a00-5645-44e3-ace6-aa37d66aa966-0-0-376429.txt?X-Amz-Algorithm=AWS4-ECDSA-P256-SHA256&..."
},
{
"path": "pod=prod-ca-a/siteLuid=33d345e6-36bd-4411-91e2-1c9fc849564e/y=2026/m=01/d=01/h=0/eventType=background_job/ActivityLog-0fb71a00-5645-44e3-ace6-aa37d66aa966-0-0-7.txt",
"url": "https://activity-log-site-prod-ca-a.s3.ca-central-1.amazonaws.com/jb91y8k3mwh.mrap.accesspoint.s3-global.amazonaws.com/pod%3Dprod-ca-a/siteLuid%3D33d345e6-36bd-4411-91e2-1c9fc849564e/y=2026/m=01/d=01/h=0/eventType=background_job/ActivityLog-0fb71a00-5645-44e3-ace6-aa37d66aa966-0-0-7.txt?X-Amz-Algorithm=AWS4-ECDSA-P256-SHA256&..."
}
]
}
Entity snapshots - site
{
"files": [
{
"path": "pod=prod-ca-a/siteLuid=33d345e6-36bd-4411-91e2-1c9fc849564e/y=2026/m=01/d=01/h=0/entityType=views/EntitySnapshot-0fb71a00-5645-44e3-ace6-aa37d66aa966-0-0-376429.parquet",
"url": "https://entity-snapshot-site-prod-ca-a.s3.ca-central-1.amazonaws.com/jb91y8k3mwh.mrap.accesspoint.s3-global.amazonaws.com/pod%3Dprod-ca-a/siteLuid%3D33d345e6-36bd-4411-91e2-1c9fc849564e/y=2026/m=01/d=01/h=0/entityType=views/EntitySnapshot-0fb71a00-5645-44e3-ace6-aa37d66aa966-0-0-376429.parquet?X-Amz-Algorithm=AWS4-ECDSA-P256-SHA256&..."
},
{
"path": "pod=prod-ca-a/siteLuid=33d345e6-36bd-4411-91e2-1c9fc849564e/y=2026/m=01/d=01/h=0/entityType=workbooks/EntitySnapshot-0fb71a00-5645-44e3-ace6-aa37d66aa966-0-0-7.parquet",
"url": "https://entity-snapshot-site-prod-ca-a.s3.ca-central-1.amazonaws.com/jb91y8k3mwh.mrap.accesspoint.s3-global.amazonaws.com/pod%3Dprod-ca-a/siteLuid%3D33d345e6-36bd-4411-91e2-1c9fc849564e/y=2026/m=01/d=01/h=0/entityType=workbooks/EntitySnapshot-0fb71a00-5645-44e3-ace6-aa37d66aa966-0-0-7.parquet?X-Amz-Algorithm=AWS4-ECDSA-P256-SHA256&..."
}
]
}
Programmatically open each URL returned from the previous request or copy and paste the URL in a browser to download each file. After you’ve downloaded the files, ingest them into your preferred analytics platform for analysis.
Event logs are in JSON format. You can:
Entity snapshots are in Parquet format. You can:
You can ingest Platform Data into various analytics and monitoring platforms:
For advanced use cases involving the integration of event logs with entity snapshots, see Integrate event logs and entity snapshots.
Event logs - tenant
For example, an event log download URL might produce the following JSON data when opened in a text editor.
{"eventId":"bbce137f-12ce-4eaf-b4eb-fd0d42e521a0","tenantId":"9cde722f-1edc-4cdd-b76f-42d87b51c785","eventType":"tcm_activity_log_access","eventVersion":"0.1","eventProcessedTime":"2026-01-04T21:08:46.819Z","initiatingUserIPAddress":"155.000.00.00","eventProcessedTimeEnd":"2026-11-04T21:08:43.022551Z","siteName":null,"initiatingUserAgent":"PostmanRuntime/7.42.0","initiatingSessionId":"166a62f4-8bbc-4020-918e-a8b15dc36ff3","siteUri":null,"podUri":null,"eventProcessedTimeStart":"2026-01-13T21:08:43.022Z","initiatingUrl":"https://mytenant.manage.online.tableau.com/api/v1/tenants/9cde722f-1edc-4cdd-b76f-42d87b51c785/activitylog","tenantUri":"mytenant","initiatingUserEmail":"snguyen@example.com","tenantName":"mytenant","eventOutcome":"success","eventTime":"2026-01-14T21:08:43.028Z","siteId":null,"initiatingUserRole":"TCM_ADMIN","initiatingUserDisplayName":". snguyen@yourcompany.com","eventTypeAccessed":null,"eventOutcomeReason":null,"initiatingUserId":"33d345e6-a011-4992-8db0-94768451e54e"}
{"eventId":"bbce137f-12ce-4eaf-b4eb-fd0d42e521a1","tenantId":"9cde722f-1edc-4cdd-b76f-42d87b51c785","eventType":"tcm_activity_log_access","eventVersion":"0.1","eventProcessedTime":"2026-11-04T21:10:37.123Z","initiatingUserIPAddress":"155.000.00.00","eventProcessedTimeEnd":"2026-01-04T21:08:43.022551Z","siteName":null,"initiatingUserAgent":"PostmanRuntime/7.42.0","initiatingSessionId":"166a62f4-8bbc-4020-918e-a8b15dc36ff3","siteUri":null,"podUri":null,"eventProcessedTimeStart":"2026-01-14T21:10:34.331Z","initiatingUrl":"https://mytenant.manage.online.tableau.com/api/v1/tenants/9cde722f-1edc-4cdd-b76f-42d87b51c785/activitylog","tenantUri":"mytenant","initiatingUserEmail":"snguyen@example.com","tenantName":"mytenant","eventOutcome":"success","eventTime":"2026-01-14T21:10:27.001Z","siteId":null,"initiatingUserRole":"TCM_ADMIN","initiatingUserDisplayName":". snguyen@example.com","eventTypeAccessed":null,"eventOutcomeReason":null,"initiatingUserId":"33d345e6-a011-4992-8db0-94768451e54e"}
Event logs - site
For example, an event log download URL might produce the following JSON data when opened in a text editor.
{"eventId":"8102722e-3033-4112-8a48-8f5ce8e2411d","siteLuid":"33d345e6-36bd-4411-91e2-1c9fc849564e","eventType":"hist_redeem_refresh_token","eventVersion":"0.2","eventCategory":"security","eventTime":"2026-01-04T22:02:33.798536347Z","eventProcessedTime":"2026-01-04T22:02:45.38829Z","siteRoleId":11,"actorUserId":221648,"systemAdminLevel":0,"licensingRoleName":"Tier_Author","eventOutcome":null,"refreshTokenGuid":"76113549-ea79-4c74-8220-751af05af6da","siteName":"mysite","actorUserLuid":"2fe6101f-99d1-434c-8ce2-6cebe5a73d44","deviceName":"ws1-ltmjqxm","initiatingUserLuid":"2fe6101f-99d1-434c-8ce2-6cebe5a73d44","eventOutcomeReason":null,"initiatingUserId":221648}
{"eventId":"6254977f-3033-4112-8a48-8f5ce8e2411d","siteLuid":"33d345e6-36bd-4411-91e2-1c9fc849564e","eventType":"hist_redeem_refresh_token","eventVersion":"0.2","eventCategory":"security","eventTime":"2026-01-010T11:05:35.51477Z","eventProcessedTime":"2026-01-010T11:05:59.352Z","siteRoleId":11,"actorUserId":224144,"systemAdminLevel":0,"licensingRoleName":"Tier_Author","eventOutcome":null,"refreshTokenGuid":"76164888-ea79-4c74-8220-751af05af6da","siteName":"mysite","actorUserLuid":"2ef2495f-99d1-434c-8ce2-6cebe5a73d44","deviceName":"ws2-qxltmmj","initiatingUserLuid":"2ef2495f-99d1-434c-8ce2-6cebe5a73d44","eventOutcomeReason":null,"initiatingUserId":224144}
Entity snapshots
{"view_id":"3a0c97cb-1fca-4c32-94a5-3849dc14cfa8","name":"Sales Performance Dashboard – Overview","content_url":"sales-performance-dashboard/overview","created_at":"2025-11-15T18:22:46.000","updated_at":"2026-01-03T18:22:46.000","workbook_id":"f5dc784b-56c0-42c0-a67e-a025e4a7c251","workbook_name":"Sales Performance Dashboard","project_id":"a1b2c3d4-0001-0001-0001-000000000001","project_name":"Sales","owner_id":"2fe6101f-99d1-434c-8ce2-6cebe5a73d44","owner_name":"jsmith","total_views":595,"site_id":"33d345e6-36bd-4411-91e2-1c9fc849564e","site_name":"mysite","snapshot_time":"2026-01-14T21:00:00.000"}
{"view_id":"4dd18aa6-915e-4fe2-a5d8-9a26e09d3a87","name":"Marketing KPIs – Overview","content_url":"marketing-kpis/overview","created_at":"2025-09-02T01:09:54.000","updated_at":"2025-09-21T01:09:54.000","workbook_id":"fd71654b-7402-4bb2-9553-f847f89ebdc8","workbook_name":"Marketing KPIs","project_id":"a1b2c3d4-0003-0001-0001-000000000003","project_name":"Finance","owner_id":"33d345e6-a011-4992-8db0-94768451e54e","owner_name":"snguyen","total_views":635,"site_id":"33d345e6-36bd-4411-91e2-1c9fc849564e","site_name":"mysite","snapshot_time":"2026-01-14T21:00:00.000"}
{"view_id":"57912241-bd8b-426a-8829-5475d9c3e224","name":"Marketing KPIs – Detail","content_url":"marketing-kpis/detail","created_at":"2025-09-02T01:09:54.000","updated_at":"2025-09-21T01:09:54.000","workbook_id":"fd71654b-7402-4bb2-9553-f847f89ebdc8","workbook_name":"Marketing KPIs","project_id":"a1b2c3d4-0003-0001-0001-000000000003","project_name":"Finance","owner_id":"33d345e6-a011-4992-8db0-94768451e54e","owner_name":"snguyen","total_views":696,"site_id":"33d345e6-36bd-4411-91e2-1c9fc849564e","site_name":"mysite","snapshot_time":"2026-01-14T21:00:00.000"}
{"view_id":"f74f8247-12b3-445e-a4c4-be5bcf367f32","name":"Marketing KPIs – Trend","content_url":"marketing-kpis/trend","created_at":"2025-09-02T01:09:54.000","updated_at":"2025-09-21T01:09:54.000","workbook_id":"fd71654b-7402-4bb2-9553-f847f89ebdc8","workbook_name":"Marketing KPIs","project_id":"a1b2c3d4-0003-0001-0001-000000000003","project_name":"Finance","owner_id":"33d345e6-a011-4992-8db0-94768451e54e","owner_name":"snguyen","total_views":103,"site_id":"33d345e6-36bd-4411-91e2-1c9fc849564e","site_name":"mysite","snapshot_time":"2026-01-14T21:00:00.000"}
{"view_id":"070f981d-0f9f-4058-892f-9d573162fab0","name":"Ops Efficiency Report – Overview","content_url":"ops-efficiency-report/overview","created_at":"2025-08-29T22:38:34.000","updated_at":"2025-10-08T22:38:34.000","workbook_id":"aaaf29f2-2790-4fed-a376-5b9535f8b9bd","workbook_name":"Ops Efficiency Report","project_id":"a1b2c3d4-0001-0001-0001-000000000001","project_name":"Sales","owner_id":"2fe6101f-99d1-434c-8ce2-6cebe5a73d44","owner_name":"jsmith","total_views":693,"site_id":"33d345e6-36bd-4411-91e2-1c9fc849564e","site_name":"mysite","snapshot_time":"2026-01-14T21:00:00.000"}
{"view_id":"708ec15b-09d8-4c25-891b-7deaa5e4e8d6","name":"Pipeline Funnel – Overview","content_url":"pipeline-funnel/overview","created_at":"2025-09-26T06:51:51.000","updated_at":"2025-11-12T06:51:51.000","workbook_id":"71acab53-58ea-4299-b322-293a621e0240","workbook_name":"Pipeline Funnel","project_id":"a1b2c3d4-0003-0001-0001-000000000003","project_name":"Finance","owner_id":"33d345e6-a011-4992-8db0-94768451e54e","owner_name":"snguyen","total_views":653,"site_id":"33d345e6-36bd-4411-91e2-1c9fc849564e","site_name":"mysite","snapshot_time":"2026-01-14T21:00:00.000"}
{"view_id":"cd9cd828-531d-4ee6-906b-759e78b09ed6","name":"Pipeline Funnel – Detail","content_url":"pipeline-funnel/detail","created_at":"2025-09-26T06:51:51.000","updated_at":"2025-11-12T06:51:51.000","workbook_id":"71acab53-58ea-4299-b322-293a621e0240","workbook_name":"Pipeline Funnel","project_id":"a1b2c3d4-0003-0001-0001-000000000003","project_name":"Finance","owner_id":"33d345e6-a011-4992-8db0-94768451e54e","owner_name":"snguyen","total_views":984,"site_id":"33d345e6-36bd-4411-91e2-1c9fc849564e","site_name":"mysite","snapshot_time":"2026-01-14T21:00:00.000"}
Event logs and entity snapshots are complementary data that, when combined, provide comprehensive observability of your Tableau Cloud deployment. Event logs capture historical events (what happened), while entity snapshots capture the current state of content and components (what exists). We recommend getting the latest entity snapshot of your site and collate various event logs created over time to create a single set of data that can be queried for your analysis. By pairing these data together, you can perform advanced analytics that relate events to their entities.
Integrating event logs and entity snapshots enables you to:
To pair event logs and entity snapshots in your analytics platform:
workbook_id, workbookId)datasource_id, datasourceId)user_id, userId)site_id, siteId)
By joining on these fields, you can answer questions like: