Skip to main content
curl --request POST \
  --url https://api.usedatabrain.com/api/v2/guest-token/create \
  --header 'Authorization: Bearer dbn_live_abc123...' \
  --header 'Content-Type: application/json' \
  --data '{
    "clientId": "user-456",
    "dataAppName": "sales-dashboard"
  }'
{
  "token": "3affda8b-7bd4-4a88-9687-105a94cfffab"
}
POST
/
api
/
v2
/
guest-token
/
create
curl --request POST \
  --url https://api.usedatabrain.com/api/v2/guest-token/create \
  --header 'Authorization: Bearer dbn_live_abc123...' \
  --header 'Content-Type: application/json' \
  --data '{
    "clientId": "user-456",
    "dataAppName": "sales-dashboard"
  }'
{
  "token": "3affda8b-7bd4-4a88-9687-105a94cfffab"
}
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 (permissions object)
  • 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

Authorization
string
required
Bearer token for API authentication. Use your API key from the data app.
Authorization: Bearer dbn_live_abc123...
Content-Type
string
required
Must be set to application/json for all requests.
Content-Type: application/json

Request Body

clientId
string
required
Unique identifier for the end user. This should be your user’s ID from your system. Used for row-level security and access control.
dataAppName
string
required
The name of your data application. Must match an existing data app in your workspace and be alphanumeric.
params
object
Additional parameters for token customization and filtering.
params.appFilters
array
Application-level filters for controlling access to individual metrics. Unlike RLS settings, app filters restrict access without requiring end user input.
App filters are ideal for implementing metric-level access control that is invisible to end users.
params.appFilters.metricId
string
The metric ID to apply filters to. Required if appFilters is provided.
params.appFilters.values
object
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" }
params.dashboardAppFilters
array
Dashboard-level filters that apply to all metrics on a dashboard. Supports multiple filter types for flexible data filtering.
params.dashboardAppFilters.dashboardId
string
The dashboard ID to apply filters to. Required if dashboardAppFilters is provided.
params.dashboardAppFilters.values
object
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" }
params.dashboardAppFilters.isShowOnUrl
boolean
default:"true"
Controls visibility of filter values in URL search parameters. When false, filters are applied but not visible to end users in the URL.
Set to false to hide sensitive filter criteria from end users while still applying the filtering logic.
params.hideDashboardFilters
array
Array of filter names to hide from the dashboard interface. Use this to conditionally hide specific filters based on user permissions or context.
params.userIdentifier
string
Unique identifier for the end user in your system. Enables features like creating private metrics and publishing metrics directly from the embed view.
The isAllowPrivateMetricsByDefault setting must be enabled when creating the dashboard for this feature to work.
permissions
object
Permission settings for the embedded interface.
permissions.isEnableArchiveMetrics
boolean
Allow archiving metrics.
permissions.isEnableManageMetrics
boolean
Allow managing metrics (view, edit, organize).
permissions.isEnableCreateDashboardView
boolean
Allow creating custom dashboard views.
permissions.isEnableMetricUpdation
boolean
Allow updating metric configurations.
permissions.isEnableCustomizeLayout
boolean
Allow customizing dashboard layout.
permissions.isEnableUnderlyingData
boolean
Allow viewing underlying data behind charts.
permissions.isEnableDownloadMetrics
boolean
Allow downloading metric data.
permissions.isShowSideBar
boolean
Show the sidebar navigation.
permissions.isShowDashboardName
boolean
Show the dashboard name in the interface.
permissions.isDisableMetricCreation
boolean
Disable metric creation in embedded dashboards. When set to true, end users cannot create new metrics.
expiryTime
number
Optional. Token expiration time in milliseconds from now. If not provided, token never expires.
datasourceName
string
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

token
string
UUID token for authentication. Pass this to your frontend component for embedding.
error
null | object
Error object if the request failed, otherwise null for successful requests.

HTTP Status Code Summary

Status CodeDescription
200OK - Request succeeded
400Bad Request - Invalid request parameters
401Unauthorized - Invalid or missing API key
403Forbidden - Access denied to resource
404Not Found - Resource not found
429Too Many Requests - Rate limit exceeded
500Internal Server Error - Server error occurred

Error Codes

Error CodeHTTP StatusDescription
AUTHENTICATION_ERROR401Invalid or missing API key
INVALID_REQUEST_BODY400Missing or invalid parameters
CLIENT_ID_ERROR400Invalid clientId format or value
DATA_APP_ID_ERROR404Data app not found
WORKSPACE_ID_ERROR404Workspace not found or inaccessible
DASHBOARD_PARAM_ERROR400Invalid dashboard filter parameters
APP_FILTER_PARAM_ERROR400Invalid app filter configuration
RLS_SETTINGS_PARAM_ERROR400Invalid RLS settings
RATE_LIMIT_EXCEEDED429Too many requests
INTERNAL_SERVER_ERROR500Server error
INVALID_PERMISSIONS403Invalid permission settings
EXPIRED_TOKEN401Token has expired

Quick Start Guide

Getting Started

Rate Limiting: API requests are limited to prevent abuse. Implement exponential backoff for rate limited requests (429 status).

Next Steps