Workflow Data App Tiles
Render Bobsled workflow outputs directly inside Data Apps. Workflow-backed tiles let API consumers attach a LangGraph workflow to a dashboard tile, pass typed scalar inputs, and display the selected workflow step output as a chart or table without rebuilding the workflow in SQL.
What's New
- New
workflowtile data-source variant alongsidequery,static, andagent-replay - New public endpoint to execute the workflow behind a Data App tile and return chart-ready output
- Optional
inputsobject for workflow parameters andoutputStepIdfor selecting a specific terminal or intermediate step - Typed failure envelopes for workflow timeouts, failed steps, workflow errors, and outputs that cannot be rendered as chart data
- Account-level
workflow-tilesfeature flag gate for creating, updating, and running workflow tiles
New Endpoint
POST /api/v1/accounts/{accountId}/data-products/{dataProductId}/data-apps/{dataAppId}/tiles/{tileId}/run-workflow
The endpoint invokes the workflow referenced by a workflow tile and returns either parsed rows/markdown output or a typed failure. Tile execution is read-only at the persistence layer and uses viewer-level workspace read authorization.
Modified Endpoints
The public Data Apps create, update, and tile-management endpoints now accept workflow in tile dataSource payloads when the workflow-tiles feature flag is enabled for the account:
POST /api/v1/accounts/{accountId}/data-products/{dataProductId}/data-appsPATCH /api/v1/accounts/{accountId}/data-products/{dataProductId}/data-apps/{dataAppId}POST /api/v1/accounts/{accountId}/data-products/{dataProductId}/data-apps/{dataAppId}/tilesPUT /api/v1/accounts/{accountId}/data-products/{dataProductId}/data-apps/{dataAppId}/tilesPATCH /api/v1/accounts/{accountId}/data-products/{dataProductId}/data-apps/{dataAppId}/tiles/{tileId}
Tile Data-Source Schema
The public payload uses the Data Product ID from the URL as the workflow workspace identity, so workspaceId is not included in the tile body.
{
"type": "workflow",
"workflowId": "018f4b87-5a22-77bd-98df-8d8ca2e0cb91",
"inputs": {
"region": "north-america",
"limit": 25,
"includeInactive": false
},
"outputStepId": "summarize_revenue"
}inputs values may be strings, numbers, booleans, or null. outputStepId is optional; if omitted, the system uses the workflow's terminal output.
Request Format
The run endpoint accepts an empty body and an optional cache-bust query parameter reserved for future cache support:
POST .../run-workflow
POST .../run-workflow?bust=1Response Format - Success
Tabular workflow output returns chart-ready rows and display metadata:
{
"ok": true,
"headers": ["month", "revenue"],
"rows": [
{ "month": "Jan", "revenue": 100 },
{ "month": "Feb", "revenue": 120 }
],
"display": {
"chartType": "line",
"dimension": "month",
"metrics": ["revenue"]
},
"stepId": "summarize_revenue",
"workflowStatus": "success",
"durationMs": 18234,
"fromCache": false
}Markdown workflow output is returned in a markdown-specific success envelope:
{
"ok": true,
"format": "markdown",
"markdown": "## Revenue summary\n\nRevenue increased 20% month over month.",
"stepId": "summarize_revenue",
"workflowStatus": "success",
"durationMs": 18234,
"fromCache": false
}Response Format - Typed Failure
Workflow execution failures return a 200 response with ok: false so clients can render targeted tile error states:
{
"ok": false,
"reason": "step-failed",
"message": "Workflow step failed before producing chartable output.",
"durationMs": 120000,
"fromCache": false
}Possible reasons: timeout, no-chartable-output, workflow-error, step-failed.
Error Responses
The endpoint also returns standard HTTP errors for operational failures:
400- tile is not typeworkflowor the stored workflow workspace does not match the Data Product path403- viewer lacks read access to the workspace404- data app or tile not found, or theworkflow-tilesfeature flag is off for this account500- unexpected internal error
Getting Started
- Enable the
workflow-tilesfeature flag for the target account. - Create or update a Data App tile with
dataSource.typeset toworkflow. - Provide the workflow ID, any scalar inputs required by the workflow, and optionally the output step ID to render.
- Load the dashboard or call the run endpoint directly to execute the workflow and render the returned rows or markdown.