Limits
These are the limits you’re most likely to run into. They’re the platform’s compiled defaults —
not marketing round numbers — and where an organization admin can override one, that’s noted.
Query execution
| What |
Limit |
| Rows kept from a single query |
10,000 |
| How long one query may run |
300 seconds |
A query returning more than the row cap is truncated to it, and the stored result is flagged
as truncated rather than failing. Two connectors opt out of the cap and return however many rows
the query produced: SQL Server and Query Results.
Exceeding the time limit stops the query and fails the run. Narrow the time range or aggregate in
SQL rather than pulling rows and filtering afterward.
Rate limits
| Endpoint |
Limit |
| Query execute |
60/min per user |
| Data source test |
10/min per user |
| Public dashboard |
30/min per IP |
| Public embed |
30/min per IP |
| Digest unsubscribe |
30/min per IP |
| Sign-in |
10/min per IP |
| Session exchange and organization select |
10/min per IP |
| Invitation status lookup |
10/min per IP |
| Signup |
5/min per IP |
| Invite accept |
5/min per IP |
| AI SQL generation |
10/min per user (org-configurable in AI Settings) |
See Conventions for the status code and behavior when a limit is hit.
Retention and pagination caps
| What |
Limit |
| Query Results meta-source: distinct cached results loaded per run |
500 |
| Monitor delivery history returned per request |
50 rows, newest first |
| Audit log page size |
250 max, 25 default |
Scheduling and dashboards
| What |
Limit |
| Consecutive scheduled-run failures before auto-pause |
10 |
| Advanced (cron) schedule expression |
6 fields (seconds required); a 5-field crontab is rejected |
| Daily/weekly schedule time |
UTC in the schedule editor (no timezone picker); the API accepts a timezone |
| Dashboard grid |
6 columns |
Sharing
| What |
Limit |
Embed / public link default expiry (no expires_at set) |
90 days |
Where to go next