> Documentation index: https://docs.beetl.io/llms.txt

# Query results

> Saved results with their own URL, who can open them, and the 7-day clock on them.

Source: https://docs.beetl.io/concepts/query-results/
Last updated: 2026-10-03

Beetl saves the result of every query it runs for you, whether you ran it in Query, previewed a
pipeline stage, or the assistant ran it. Each result has its own page:

```text
/web/query-results/{result_id}
```

From there you can page through the rows, chart them, click a cell to see where a value came from,
and download a CSV.

## Limits

| Limit                  | Value                                                  |
| ---------------------- | ------------------------------------------------------ |
| Rows stored per result | 1,000                                                  |
| Result size            | 64 MiB                                                 |
| Query run time         | 30 minutes (60 seconds for a query an automation runs) |

When a query returns more than 1,000 rows, Beetl keeps the first 1,000 and labels the result as a
preview with the total count. Scrolling, charts and the CSV download stop at the stored rows. To
work with all the rows, write them to a dataset with a [pipeline](https://docs.beetl.io/concepts/pipelines).

## Where results come from

A result can come from the Query editor, a pipeline stage preview, the assistant in chat, an MCP
client, a drill-down, or an automation run. All of them can be opened and checked, so a
number the assistant quotes or an automation reports comes with a result behind it.

## Who can open a result

A result belongs to the person whose query produced it, and nobody else can open it, admins
included. There is no shareable link; to give someone the data, download the CSV or write it to a
dataset. Automation evidence is the exception: anyone in the tenant can open it from the run's
page.

## Retention

A result expires 7 days after it was created, and you cannot pin or extend it. A drill-down
expires no later than the result it came from. An expired result no longer opens: the Query page
returns to the editor, and chat shows "Result expired". Recent results in the Query page header
lists your 10 latest successful, unexpired queries from the Query editor.

Results are kept in Beetl's own storage, not in your bucket. See [Retention and deletion](https://docs.beetl.io/security/retention-and-deletion).
Chart settings are not saved with a result; saved charts live in [Dashboards](https://docs.beetl.io/dashboards).

## Lineage and drill-down

Click a cell to see the column's role (for example grouping field or measure), the SQL expression
behind it and the tables it reads. Where Beetl can trace a value back to its rows, **Show source
rows** (or **Show contributing records** for grouped results, or a double-click) runs a drill-down and opens the rows as a new result. Drill-down is not
available for registered or external datasets, because Beetl keeps no copy of data it does not
write. See [Lineage](https://docs.beetl.io/query/lineage).

## Automation evidence

Each automation report links every query it ran to its result. Reports are kept with no time limit
but the results expire after 7 days, so re-run the automation or the query before relying on an
older number. Test runs from the automation editor do not keep their results.

Datasets do not expire. If you need a number for longer than a week, write it to a dataset.

## Related

- [Export](https://docs.beetl.io/query/export): The CSV download and its row limit.

- [Runs](https://docs.beetl.io/concepts/runs-and-jobs): Where run history lives and how long it is kept.
