Guest tokens are designed for frontend embedding. Never expose your API key in frontend code - always generate tokens from your backend.
Simple Usage: Only
clientId and dataAppName are required. All other parameters (params, permissions, expiryTime, datasourceName) are optional for advanced use cases.Advanced Features Available:
- Dashboard & metric-level filtering (
dashboardAppFilters,appFilters) - Fine-grained permissions control (
permissionsobject) - Private metrics for end users (
userIdentifier) - Multi-datasource support (
datasourceName) - Conditional filter visibility (
hideDashboardFilters,isShowOnUrl) - Token expiration management (
expiryTime)
Authentication
All API requests must include your API key in the Authorization header. Get your API token when creating a data app - see our data app creation guide for details. Finding your API token: For detailed instructions, see the API Token guide.Headers
Bearer token for API authentication. Use your API key from the data app.
Must be set to
application/json for all requests.Request Body
Unique identifier for the end user. This should be your user’s ID from your system. Used for row-level security and access control.
The name of your data application. Must match an existing data app in your workspace and be alphanumeric.
Additional parameters for token customization and filtering.
Application-level filters for controlling access to individual metrics. Unlike RLS settings, app filters restrict access without requiring end user input.
Metric App Filter
Metric App Filter
The metric ID to apply filters to. Required if appFilters is provided.
Filter values to apply to the metric. Supports multiple data types:
- Boolean:
"paid_orders": true - Number:
"amount": 500 - String:
"country": "USA" - Array (multi-select):
"countries": ["USA", "CANADA"] - SQL Query:
{ "sql": "SELECT...", "columnName": "name" }
Dashboard-level filters that apply to all metrics on a dashboard. Supports multiple filter types for flexible data filtering.
Dashboard AppFilters
Dashboard AppFilters
The dashboard ID to apply filters to. Required if dashboardAppFilters is provided.
Filter values to apply to the dashboard. Supports various filter formats:
- Single string:
"name": "Eric" - Multi-select:
"country": ["USA", "CANADA"] - Date range:
"timePeriod": { "startDate": "2024-01-01", "endDate": "2024-03-23" } - Number range:
"price": { "min": 1000, "max": 5000 } - SQL query:
{ "sql": "SELECT...", "columnName": "name" }
Controls visibility of filter values in URL search parameters. When
false, filters are applied but not visible to end users in the URL.Array of filter names to hide from the dashboard interface. Use this to conditionally hide specific filters based on user permissions or context.
Unique identifier for the end user in your system. Enables features like creating private metrics and publishing metrics directly from the embed view.
Permission settings for the embedded interface.
Permission Options
Permission Options
Allow archiving metrics.
Allow managing metrics (view, edit, organize).
Allow creating custom dashboard views.
Allow updating metric configurations.
Allow customizing dashboard layout.
Allow viewing underlying data behind charts.
Allow downloading metric data.
Show the sidebar navigation.
Show the dashboard name in the interface.
Disable metric creation in embedded dashboards. When set to
true, end users cannot create new metrics.Optional. Token expiration time in milliseconds from now. If not provided, token never expires.
Optional. Datasource name for multi-datasource connection setups. Required when your data app uses multiple datasources.
The datasource name is available in the Data Studio tab of your dashboard. This parameter is only necessary if you have configured multiple datasources for your data app.
Response
UUID token for authentication. Pass this to your frontend component for embedding.
Error object if the request failed, otherwise
null for successful requests.HTTP Status Code Summary
| Status Code | Description |
|---|---|
200 | OK - Request succeeded |
400 | Bad Request - Invalid request parameters |
401 | Unauthorized - Invalid or missing API key |
403 | Forbidden - Access denied to resource |
404 | Not Found - Resource not found |
429 | Too Many Requests - Rate limit exceeded |
500 | Internal Server Error - Server error occurred |
Error Codes
| Error Code | HTTP Status | Description |
|---|---|---|
AUTHENTICATION_ERROR | 401 | Invalid or missing API key |
INVALID_REQUEST_BODY | 400 | Missing or invalid parameters |
CLIENT_ID_ERROR | 400 | Invalid clientId format or value |
DATA_APP_ID_ERROR | 404 | Data app not found |
WORKSPACE_ID_ERROR | 404 | Workspace not found or inaccessible |
DASHBOARD_PARAM_ERROR | 400 | Invalid dashboard filter parameters |
APP_FILTER_PARAM_ERROR | 400 | Invalid app filter configuration |
RLS_SETTINGS_PARAM_ERROR | 400 | Invalid RLS settings |
RATE_LIMIT_EXCEEDED | 429 | Too many requests |
INTERNAL_SERVER_ERROR | 500 | Server error |
INVALID_PERMISSIONS | 403 | Invalid permission settings |
EXPIRED_TOKEN | 401 | Token has expired |

