---
title: Redash API Integration on Truto
slug: redash
category: Analytics
canonical: "https://truto.one/integrations/detail/redash/"
---

# Redash API Integration on Truto



**Category:** Analytics  
**Status:** Beta

## MCP-ready AI tools

Truto exposes 109 tools for Redash that AI agents can call directly.

- **get_single_redash_acl_by_id** — Get the access control list for a Redash object. Required: id, object_type.
- **create_a_redash_acl** — Grant a Redash user access to an object. Required: object_type, object_id.
- **list_all_redash_acls** — List users with a given access level on a Redash object. Required: object_type, object_id, access_type.
- **redash_acls_bulk_delete** — Revoke a Redash user's access to an object. Required: object_type, object_id.
- **list_all_redash_alerts** — List Redash alerts. Returns the alert records in the collection: id, created_at, updated_at.
- **create_a_redash_alert** — Create a Redash alert bound to a query. Returns the created alert object: id, created_at, updated_at.
- **get_single_redash_alert_by_id** — Get a Redash alert by id. Returns the alert object: id, created_at, updated_at. Required: id.
- **update_a_redash_alert_by_id** — Update an existing Redash alert by id. Returns the updated alert object: id, created_at, updated_at. Required: id.
- **delete_a_redash_alert_by_id** — Delete a Redash alert by id. Returns a 200 OK response on success; the response body shape is not documented in the upstream OpenAPI spec. Required: id.
- **list_all_redash_alert_subscriptions** — List alert subscriptions attached to an alert in Redash. Returns an array of subscription records; the response body is not enumerated in the discovered source, so each record is documented generically as id plus content-type-specific attributes. Required: alert_id.
- **create_a_redash_alert_subscription** — Attach a destination as a subscription to an alert in Redash. Returns an empty 200 response on success. Required: alert_id.
- **delete_a_redash_alert_subscription_by_id** — Detach a subscription from an alert in Redash. Returns an empty 200 response on success. Required: alert_id and id.
- **create_a_redash_alert_eval** — Trigger evaluation of a Redash alert by id. Returns a 200 OK response with no documented body on success. Required: alert_id. Takes no request body.
- **create_a_redash_alert_mute** — Mute a Redash alert by id. Returns an empty 200 response on success. Required: alert_id. Takes no request body.
- **redash_alert_mutes_bulk_delete** — Unmute a Redash alert by id (DELETE on the mute endpoint). Returns an empty 200 response on success. Required: alert_id.
- **list_all_redash_dashboards** — List Redash dashboards. Returns dashboard records including id, name, slug, user_id, version, layout, widgets, and options. Max 250 per page.
- **create_a_redash_dashboard** — Create a new Redash dashboard. Returns the created dashboard object including id, name, slug, version, layout, widgets, and options.
- **get_single_redash_dashboard_by_id** — Get a single Redash dashboard by id. Returns the full dashboard object including widget structure (id, name, slug, layout, widgets, options, version). Required: id.
- **update_a_redash_dashboard_by_id** — Modify a Redash dashboard. Returns the updated dashboard object including id, name, slug, version, layout, widgets, and options. Required: id.
- **delete_a_redash_dashboard_by_id** — Archive a Redash dashboard. Returns the archived dashboard object including id, name, slug, is_archived, and updated_at. Required: id. Redash archives the record (is_archived=true) rather than removing it.
- **list_all_redash_dashboards_favorites** — List Redash dashboards marked as favorites by the current user. Returns an array of favorited dashboard objects via the `results` envelope.
- **list_all_redash_dashboards_tags** — List all dashboard tags in Redash. Returns a list of tag name strings.
- **create_a_redash_dashboard_fork** — Fork a Redash dashboard into a new dashboard owned by the caller. Returns a 200 OK response on success; the OpenAPI does not enumerate response fields. Required: dashboard_id. Takes no request body.
- **create_a_redash_dashboard_share** — Enable anonymous access to a redash dashboard. Returns: public_url, api_key. Required: dashboard_id. Takes no request body.
- **redash_dashboard_shares_bulk_delete** — Disable anonymous access to a redash dashboard. Returns an empty 200 response on success. Required: dashboard_id.
- **create_a_redash_dashboard_favorite** — Mark a Redash dashboard as a favorite. Returns a 200 OK response on success with no documented body. Required: object_id. Takes no request body.
- **redash_dashboard_favorites_bulk_delete** — Remove a Redash dashboard from the user's favorites. Returns a 200 OK response on success with no documented body. Required: object_id.
- **list_all_redash_my_dashboards** — List dashboards created by the authenticated Redash user. Returns an array of dashboard objects including their id, name, layout, options, and tags. Max page_size: 250.
- **list_all_redash_data_sources** — List Redash data sources. Returns each data source record including its id, name, type, and options.
- **create_a_redash_data_source** — Create a new Redash data source. Returns: id.
- **get_single_redash_data_source_by_id** — Get a single Redash data source by id. Returns: id, name, type, options. Required: id.
- **update_a_redash_data_source_by_id** — Update a Redash data source by id. Returns: id, name, type, options. Required: id.
- **delete_a_redash_data_source_by_id** — Delete a Redash data source by id. Returns an empty 204 response on success. Required: id.
- **redash_data_sources_pause** — Pause a Redash data source. Returns a 200 OK response on success. Required: data_source_id.
- **redash_data_sources_resume** — Resume a paused Redash data source. Returns a 200 OK response on success. Required: data_source_id.
- **list_all_redash_data_sources_types** — List the Redash data source type descriptors (e.g. PostgreSQL, MySQL, BigQuery) available for creating data sources in the configured Redash instance. Returns: a collection of type entries (each with a type identifier and configuration metadata) as defined by the upstream Redash instance. No parameters required.
- **get_single_redash_data_source_schema_by_id** — Get a data source's schema listing in Redash. Returns the schema document including its id and content-type-specific attributes structure. Required: id.
- **create_a_redash_data_source_test** — Test a Redash data source connection. Returns 200 OK on success. Required: data_source_id. Takes no request body.
- **get_single_redash_databricks_database_by_id** — List the databases of a Databricks data source (id = data source id). Returns the cached list when Redash has one; otherwise returns {job}: poll jobs.get until status 3 and read job.result. Fails with 400 for non-Databricks data sources.
- **list_all_redash_destinations** — List Redash destinations. Returns: id, name, options, type.
- **create_a_redash_destination** — Create a Redash destination. Returns the created destination object including its id.
- **get_single_redash_destination_by_id** — Get a Redash destination by id. Returns the destination object including its id. Required: id.
- **update_a_redash_destination_by_id** — Update a Redash destination by id. Returns the updated destination with id, name, options, and type. Requires name, options, and type. Required: id.
- **delete_a_redash_destination_by_id** — Delete a Redash destination by id. Returns the deleted destination object including its id. Required: id.
- **list_all_redash_destinations_types** — List Redash destination type definitions (PostgreSQL, MySQL, BigQuery, etc.). Returns a mapping of destination type short names to per-type configuration metadata describing the configuration shape of each supported destination type. The per-type entry shape is type-specific — consult the upstream Redash docs for the field-level breakdown per…
- **list_all_redash_events** — List events recorded in redash. Returns event records with content-type-specific fields including id and an attributes object. Pagination is handled by Truto.
- **create_a_redash_event** — Create a new event in redash. Returns the created event record with content-type-specific fields including id and an attributes object. The upstream spec does not enumerate request body fields.
- **list_all_redash_groups** — List groups in Redash. Returns each group's id and attributes.
- **create_a_redash_group** — Create a new group in Redash. Returns the created group object with its id and attributes.
- **get_single_redash_group_by_id** — Get a single group in Redash by id. The Redash API does not document return fields for this endpoint; consult upstream docs for the response shape. Required: id.
- **update_a_redash_group_by_id** — Update a group in Redash by id. Returns the updated group object with its id and attributes. Required: id.
- **delete_a_redash_group_by_id** — Delete a group from Redash by id. Required: id.
- **list_all_redash_group_members** — List the members of a Redash group. Returns the group's member list. Required: group_id.
- **delete_a_redash_group_member_by_id** — Remove a member from a Redash group by id. Returns an empty 200 response on success. Required: id, group_id.
- **create_a_redash_group_member** — Add a user to a Redash group. Returns an empty 200 response on success. Required: group_id.
- **list_all_redash_group_data_sources** — List data sources attached to a Redash group. The response body shape is not documented in the discovered source. Required: group_id.
- **create_a_redash_group_data_source** — Attach a data source to a Redash group. The request body shape is not documented in the discovered source. Required: group_id.
- **delete_a_redash_group_data_source_by_id** — Detach a data source from a Redash group. The response body shape is not documented in the discovered source. Required: id, group_id.
- **update_a_redash_group_data_source_by_id** — Attach an existing data source to a Redash group. The request body shape is not documented in the discovered source. Required: group_id, data_source_id.
- **get_single_redash_job_by_id** — Retrieve info about a running query job in Redash. Returns the job object. Required: id.
- **delete_a_redash_job_by_id** — Cancel a query job in progress in Redash. Returns a 200 OK response on success. Required: id.
- **list_all_redash_queries** — List Redash queries ordered by the given column. Returns an array of query objects including id, name, query, data_source_id, schedule, is_archived, is_draft, and timestamps. Pass `q` to filter, `order` to choose the sort column. Max 250 per page.
- **create_a_redash_query** — Create a new Redash query. Returns the created query object including id, name, query, data_source_id, schedule, api_key, version, is_archived, is_draft, and timestamps. Requires data_source_id and query text.
- **redash_queries_search** — Search query text, names, and descriptions.
- **get_single_redash_query_by_id** — Retrieve a query. Required: id.
- **update_a_redash_query_by_id** — Modify a query. Required: id.
- **delete_a_redash_query_by_id** — Archive a query in Redash. Returns an empty 204 response on success. Required: id. Redash archives the record (is_archived=true) rather than removing it.
- **list_all_redash_queries_archives** — List archived queries in Redash. Returns an array of query records with content-type-specific fields.
- **list_all_redash_queries_favorites** — List Redash queries the current user has marked as favorite. Returns an array of query objects (each with at minimum an id plus schema-specific attributes). Page-based pagination applies (max 250 per page).
- **list_all_redash_queries_recents** — List the queries recently modified by the current user in Redash. Returns up to 10 query objects whose field shape comes from the upstream API and cannot be enumerated statically.
- **list_all_redash_queries_tags** — List all Redash query tags, including tags associated with draft queries. Returns an array of tag name strings.
- **list_all_redash_my_queries** — List queries in Redash created by the current user. Returns an array of Query objects under `results` including each query's id, name, query text, description, data_source_id, schedule, options, tags, version, and timestamps. Max 250 per page.
- **create_a_redash_query_result** — Execute a query in Redash and return its result (or return cached results when recent). Returns the query result object with content-type-specific fields that depend on the executed query; the upstream OpenAPI spec does not enumerate the response shape. Use max_age (omitted or -1 returns cached when available,…
- **get_single_redash_query_result_by_id** — Retrieve a previously executed Redash query result by its query result id. Returns the query result object with content-type-specific fields that depend on what the original query produced; the upstream OpenAPI spec does not enumerate the response shape. Required: id.
- **list_all_redash_query_results_resource** — Retrieve query results in Redash for a saved query. Returns the query result object with cached or freshly executed data along with runtime and metadata. Required: query_id.
- **create_a_redash_query_results_resource** — Execute a saved query in Redash and retrieve its results, optionally honoring a cache age. Returns the query result object with cached or freshly executed data, runtime, and metadata. Required: query_id.
- **get_single_redash_query_dropdown_by_id** — Get the dropdown values for a Redash query by id. The upstream response body shape is undocumented; Truto returns the raw 200 OK response from the Redash API. Required: id. The dropdown's source query must have a cached result: run it first (query_results_resource.create), otherwise Redash returns 500.
- **create_a_redash_query_favorite** — Mark a Redash query as a favorite. Required: query_id. Takes no request body.
- **redash_query_favorites_bulk_delete** — Unmark a Redash query as a favorite. Required: query_id.
- **create_a_redash_query_fork** — Fork a Redash query by id, creating a new query that copies the source query's text. Required: query_id. Takes no request body.
- **get_single_redash_query_job_by_id** — Retrieve info about a running Redash query job scoped to a specific query. Returns the job status object including job id and job-state-specific fields. Required: query_id, id.
- **create_a_redash_query_refresh** — Trigger a refresh of a saved query in Redash, updating the query object with the latest results. Returns query task details describing the refresh. Required: query_id. Takes no request body.
- **create_a_redash_query_regenerate_api_key** — Regenerate the API key attached to a saved Redash query by query id. The endpoint rotates the query's existing API key and returns a 200 OK on success. Required: query_id. Takes no request body.
- **list_all_redash_query_snippets** — List query snippets in Redash. Returns a collection of snippet records, each with an id and content-type-specific fields.
- **create_a_redash_query_snippet** — Create a query snippet in Redash. Returns the created snippet record including its id and content-type-specific fields.
- **get_single_redash_query_snippet_by_id** — Get a single query snippet by id in Redash. Returns the snippet record including its id and content-type-specific fields. Required: id.
- **update_a_redash_query_snippet_by_id** — Update a query snippet by id in Redash. Returns the updated snippet record including its id and content-type-specific fields. Required: id.
- **delete_a_redash_query_snippet_by_id** — Delete a query snippet by id in Redash. Returns an empty 204 response on success. Required: id.
- **list_all_redash_settings_organizations** — Get the Redash organization's settings object. Returns the organization settings including its id and an attributes object containing content-type-specific organization fields. Returns a one-item array whose element holds the organization's settings object.
- **create_a_redash_settings_organization** — Update Redash organization settings. Returns the updated settings object including its id and an attributes object containing content-type-specific organization fields.
- **list_all_redash_users** — List Redash users. Returns user records under the `results` envelope, each item including id and upstream-defined attributes.
- **create_a_redash_user** — Create a Redash user. Returns the created user object including its id and upstream-defined attributes.
- **get_single_redash_user_by_id** — Get a Redash user by id. Returns the user object including its id and upstream-defined attributes. Required: id.
- **update_a_redash_user_by_id** — Update a Redash user by id. Returns the updated user object including its id and upstream-defined attributes. Required: id.
- **delete_a_redash_user_by_id** — Delete a Redash user by id. Returns an empty 200 response on success; the discovered source does not document a response body. Required: id.
- **redash_users_disable** — Disable a user in Redash. Returns an empty response on success. Required: user_id. Takes no request body.
- **redash_users_enable** — Enable a user in Redash. Returns an empty response on success. Required: user_id.
- **redash_users_invite** — Invite a user in Redash. Returns an empty response on success. Required: user_id. Takes no request body.
- **create_a_redash_user_regenerate_api_key** — Regenerate the API key for a Redash user. Returns a 200 OK response on success. Required: user_id. Takes no request body.
- **create_a_redash_user_reset_password** — Reset a user's password in Redash. Required: user_id. Takes no request body.
- **create_a_redash_visualization** — Create a Redash visualization. Returns a 200 OK confirmation.
- **update_a_redash_visualization_by_id** — Update a Redash visualization by id. Returns a 200 OK confirmation. Required: id.
- **delete_a_redash_visualization_by_id** — Delete a Redash visualization by id. Returns a 200 OK confirmation with no body. Required: id.
- **create_a_redash_widget** — Create a widget on a Redash dashboard with a visualization reference, custom options, and a display width. Returns the created widget object. Always send visualization_id (null for a text widget); Redash fails with 500 if it is missing.
- **update_a_redash_widget_by_id** — Update a Redash dashboard widget. Returns the updated widget object. Required: id.
- **delete_a_redash_widget_by_id** — Remove a widget from a Redash dashboard. Returns an empty 200 response on success. Required: id.
- **get_single_redash_query_dropdown_option_by_id** — Get a single dropdown's values from a Redash query by query id and dropdown id. The upstream response body shape is undocumented; Truto returns the raw 200 OK response from the Redash API. Required: query_id, dropdown_id. The dropdown's source query must have a cached result: run it first (query_results_resource.create), otherwise Redash returns 500.
- **list_all_redash_databricks_tables** — List the tables of a database in a Databricks data source. Returns {schema, has_columns} when cached; otherwise {job}: poll jobs.get and read job.result. Pass refresh to also load each table's columns. Fails with 400 for non-Databricks data sources.
- **list_all_redash_databricks_columns** — List the columns of a Databricks table. Always returns {job}: poll jobs.get until status 3 and read job.result. Fails with 400 for non-Databricks data sources.

## How it works

1. **Link your customer's Redash account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach Redash.** The Proxy API is a 1-to-1 mapping of the Redash API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Power Reverse ETL from customer data warehouses** — Marketing, sales, or CRM platforms can let users point to a saved Redash query and sync its results into their product — turning Redash into a universal connector for whatever database the customer runs behind it.
- **Automate access reviews and user offboarding** — IAM, HRIS, and compliance platforms can provision, disable, or delete Redash users and manage group membership automatically when employees change roles or leave, enforcing least-privilege access to business data.
- **Route Redash alerts into incident and ChatOps workflows** — Incident management and notification platforms can discover configured Redash alerts and register themselves as subscribers, so metric breaches flow directly into on-call rotations and Slack channels.
- **Build data lineage and governance across BI assets** — Data catalog and governance tools can ingest every Redash query, dashboard, widget, and data source schema to map lineage from the warehouse to the dashboard, warning teams before upstream changes break reports.
- **Programmatically publish dashboards from a semantic layer** — Metric stores and analytics tools can push queries, visualizations, and dashboards into a customer's Redash workspace so teams get pre-built BI assets without manual setup.

## What you can build

- **Saved-query audience sync** — Let users pick a Redash query, refresh it on a schedule, and pull the latest result set into your app as a live audience or dataset.
- **Automated user lifecycle management** — Create, invite, disable, enable, or delete Redash users and manage group membership in response to HRIS or SSO events.
- **Alert subscription webhooks** — Discover existing Redash alerts and attach your product as an alert subscription destination to receive real-time threshold breaches.
- **Dashboard and widget provisioning** — Programmatically create dashboards, add widgets, and publish visualizations into a customer's Redash instance from templates in your product.
- **BI asset inventory and lineage graph** — Pull every query, dashboard, data source, and (for Databricks users) table and column list to build a searchable catalog and lineage map.
- **Data source and ACL management console** — Expose a UI inside your product that lets admins add data sources, test connections, pause/resume them, and manage ACLs on Redash objects.

## FAQs

### How do end users authenticate their Redash account?

Redash uses per-user API keys (and per-query API keys) against a self-hosted or managed Redash host. Through Truto, your users supply their Redash base URL and API key during connection, and Truto handles storing and injecting the credential on every call.

### Does this work with self-hosted Redash instances?

Yes. Most Redash deployments are self-hosted, so the integration is designed around a customer-provided host URL plus API key. Any reachable Redash instance running a standard API version is supported.

### Can we fetch live query results, or only cached ones?

Both. You can read the latest cached result via the query results endpoints, or trigger a fresh execution using the query refresh and query results resource endpoints and then poll the job endpoint until the new result is ready.

### Are Databricks-specific metadata endpoints supported?

Yes. For Redash instances connected to Databricks, you can list databases, tables, and columns, which is useful for building schema pickers or lineage tools on top of the Databricks + Redash stack.

### What alerting operations are available?

You can list, create, update, and delete alerts, manage alert subscriptions (to register your app as a destination), evaluate alerts on demand, and create or bulk-delete alert mutes.

### How does Truto handle rate limits and pagination?

Truto normalizes Redash's list endpoints with consistent pagination parameters and transparently manages retries and backoff when Redash returns rate-limit responses, so you can iterate large sets of queries, dashboards, or users without writing that logic yourself.
