Import the API collection into Bruno, Postman, or Insomnia to try all examples locally.
Download CollectionAll error responses share a consistent JSON structure:
{
"code": "RATE_LIMIT",
"what": "Rate limit exceeded",
"why": "You've exceeded the free playground request limit",
"action": "Wait for reset, or upgrade to SAP Generative AI Hub for unlimited requests"
}
| Field | Description |
|---|---|
code | Machine-readable error code (see tables below) |
what | Short human-readable title |
why | Explanation of what went wrong |
action | Suggested next step |
| Code | Meaning | Description |
|---|---|---|
| 400 | Bad Request | Invalid data format or validation error |
| 401 | Unauthorized | Invalid or missing API token |
| 429 | Too Many Requests | Rate or burst limit exceeded (includes Retry-After) — see Limits & Quotas |
| 500 | Internal Server Error | Contact support |
| 502 | Bad Gateway | Remote URL fetch failed (see DS_FETCH_FAILED) |
| 503 | Service Unavailable | Server under high load. Retry after Retry-After header |
| 504 | Gateway Timeout | Remote fetch timeout (see DS_FETCH_TIMEOUT) |
| Code | HTTP | Description |
|---|---|---|
PRED_QUERY_ROWS_MIN | 400 | No query rows — add at least one [PREDICT] marker |
PRED_CONTEXT_MIN | 400 | Too few context rows (minimum 2) |
PRED_DATE_FORMAT | 400 | Date column values not parseable — see Date Formats |
PRED_EXPLANATIONS_INVALID | 400 | Invalid explanations value — field path and reason included in message |
DS_FETCH_FAILED | 502 | Remote URL returned error (404, 403, etc.) or response not parseable as CSV |
DS_FETCH_TIMEOUT | 504 | Remote fetch exceeded 30-second timeout |
DS_URL_BLOCKED | 400 | URL blocked (private IP, redirect, or non-HTTPS) |
These errors apply only to the free playground. They do not exist in SAP Generative AI Hub.
| Code | HTTP | Description |
|---|---|---|
PRED_CONTEXT_MAX | 400 | Too many context rows for the free playground (maximum 100,000) |
PRED_QUERY_ROWS_MAX | 400 | Too many [PREDICT] rows for the free playground (maximum 512) |
PRED_COLS_MAX | 400 | Too many target columns for the free playground (maximum 10) |
DS_FILE_TOO_LARGE | 400 | Remote file exceeds the free playground size limit (maximum 100 MB) |
DS_TOO_MANY_ROWS | 400 | Remote dataset exceeds the free playground row limit (maximum 100,000) |
RATE_LIMIT | 429 | Free playground hourly request budget exceeded |
RATE_LIMIT_BURST | 429 | Requests sent too quickly — burst limit hit (retry after a few seconds) |
No rate limits, no dataset caps, enterprise SLAs.
When rate-limited (429), the response includes additional 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 is returned as either RATE_LIMIT_BURST (requests sent too quickly) or
RATE_LIMIT (hourly budget exhausted) — see the table above. Wait for the Retry-After
duration before retrying. For exact burst and hourly values, see Limits & Quotas.