No rate limits, no dataset caps, enterprise SLAs.
All numerical limits are enforced server-side.
| Limit | Value | Notes |
|---|---|---|
| Max file size | 5 MB | Browser sessionStorage also caps at ~5 MB |
| Max rows | 2,048 | Client-side display cap |
| Max columns | 100 | Across all rows in the file |
| File format | .csv only | Must be valid CSV with headers |
Applies to POST /api/predict regardless of input mode (inline or remote data source). The underlying model is SAP-RPT-1.6.
| Limit | Value |
|---|---|
| Min query rows | 1 |
| Max query rows | 512 |
| Min context rows | 2 |
| Max context rows | 100,000 |
[PREDICT] placeholder.[PREDICT] — used as examples for the model.| Limit | Value | Notes |
|---|---|---|
| Max columns total | 100 | Applies to sap-rpt-1.6; exceeding requires sap-rpt-1.6-large (256 columns) |
| Max target columns | 10 | |
| Max cell string length | 1,000 characters | Values exceeding ~500 subword tokens are compressed or truncated by the model |
| Max column name length | 100 characters | |
| Max target classes (recommendation) | 256 |
Additional limits when using dataSource.type: "url" to reference an external CSV file. Standard API row/column limits above still apply.
| Limit | Value |
|---|---|
| Max file size | 100 MB |
| Fetch timeout | 30 seconds |
| Protocol | HTTPS only |
| URL length | 8,192 characters |
Rate limiting is per-user. Exceeding the limit returns HTTP 429 with headers:
X-RateLimit-Limit — total allowed requestsX-RateLimit-Remaining — remaining requests in windowX-RateLimit-Reset — Unix timestamp when window resetsRetry-After — seconds until next request is allowedA 429 has two causes: the burst limit (requests sent too quickly — wait a few
seconds) or the hourly budget (window exhausted — resets within the hour). The
Retry-After header tells you how long to wait in either case.
| Limit | Value |
|---|---|
| Requests per window | 1000 |
| Window duration | 3,600 seconds (1 hour) |
| Burst allowance | 5 requests per 18s window |
| Average pace | ~1 request every 3.6 seconds |
You can send up to 5 requests in any 18-second window. All burst tokens reset together at the end of each window. This caps instantaneous load while still allowing short bursts for batch workflows (e.g. notebooks). The burst limit is checked first; if it rejects, your hourly budget is preserved.
Planning sustained load: to avoid burst rejections, keep continuous requests at roughly 1 every 3.6 seconds (5 per 18s). Batches larger than 5 should be spread across multiple windows.
| Limit | Value |
|---|---|
| Requests per window | 20 |
| Window duration | 60 seconds |
| Limit | Value |
|---|---|
| Requests per window | 40 |
| Window duration | 60 seconds |
| Parameter | Range | Default |
|---|---|---|
top_column_scores | 1–20 | 4 |
top_relevant_context_rows | 1–20 | 3 |
Requests with more than 2,048 context rows are randomly downsampled (Fisher-Yates) to 2,048 rows before being sent to RPT-1. Query rows (rows containing [PREDICT]) are never downsampled. The response's samplingMetadata reports what happened.
Reproducibility: Pass sampler_options.seed to make the random selection deterministic. Repeated requests with the same context rows and seed produce the same downsampled subset.
What's not affected: UI uploads remain capped at 2,048 rows and never trigger downsampling. The downsampler only kicks in for direct API consumers calling /api/predict with more than 2,048 context rows.
| Limit | Value |
|---|---|
| Max context rows accepted (input) | 100,000 |
| Max context rows forwarded to model | 2,048 |
| Strategy | random (Fisher-Yates) |