Error reference
Updated 2026-11-13
Every error a call to a service can answer: the HTTP status, the text in "error", what it means and what to do. Use it to find the article that fixes your case.
How an error answer looks
A call that does not succeed answers with JSON. The reason is the text in "error"; "message" and "details" say more when there is more to say.
{
"error": "Parameter validation failed",
"message": "1 parameter(s) failed validation",
"details": { "errors": [ { "name": "discount", "error": "Value 4 is above maximum 0.5" } ] }
}Read the text in "error", not only the status. Problems with inputs, tokens and the calculation all answer HTTP 400; the text tells them apart.
The same table is in the app on every published service: API → Reference → Errors (API → Referenz → Fehler).
All errors of the API
| HTTP | "error" | Means | What to do |
|---|---|---|---|
| 400 | Missing required parameters | A required input was not sent. | details.required lists the missing inputs. See Input errors. |
| 400 | Parameter validation failed | A value has the wrong type, is out of range or is not one of the allowed values. | details.errors names each input and the reason. See Input errors. |
| 400 | Authentication required. …, Invalid token, Token expired, Token does not belong to this service | The service is protected and the token is missing, wrong, expired or from another service. | Send a valid token of this service. See Token errors. |
| 400 | Live data could not be loaded | A data source of the workbook could not be read; message names it and the reason. | Check that the address of the data source answers. See Live data from a data source. |
| 400 | calculation failed: … | The workbook could not be calculated. | Test the service in the editor; the text after the colon says where it failed. |
| 400 | INVALID_REQUEST | The POST body is not JSON of the form {"inputs": {…}}. | Send Content-Type: application/json and an "inputs" object. |
| 404 | Not found | No published service with this id. | Check the id; a draft cannot be called. See 404: not found or not published. |
| 429 | RATE_LIMIT_EXCEEDED | More than 1,000 calls per minute for this service, all callers together. | Wait for the seconds in the Retry-After header. See Limit errors. |
| 429 | Monthly call limit reached | The account of the service has used the calls its plan includes for this month. | Calls work again on the 1st (UTC), or right away after the owner upgrades. See Limit errors. |
| 500 | Internal server error | An error on our side. | Try again; contact support if it stays. |
Which article for which symptom
- A call is refused although it looks right: start with the text in
"error"and the table above. - A call succeeds but the numbers are not what you expect: Wrong or old results.
- A message appears in the editor while importing: Import problems.
- A message appears in the editor while saving or publishing: Publish problems.
- An AI assistant cannot use the service: AI troubleshooting.
- An agent that builds services gets an error code: Agent errors.
See what failed afterwards
The owner of a service sees refused calls under Usage → Log (Nutzung → Protokoll): the time, who called, and the error text in the Result (Ergebnis) column. See The call log.
For developers and agents
Fields of an error answer (API, `/api/v1/services/{id}/execute`)
- HTTP 400 from the calculation:
error,message,serviceId,inputs(what you sent),details(an object ornull). INVALID_REQUESTandRATE_LIMIT_EXCEEDED:error(the code),message,timestamp; the rate limit addsdetails.limitanddetails.reset.- 404:
{"error": "Not found", "message": "Service not found or not published"}. - Monthly limit:
{"error": "Monthly call limit reached", "code": "CALL_LIMIT_REACHED", "message": "…"}. - 500:
{"error": "Internal server error", "message": "…"}.
Exact texts
INVALID_REQUESTmessage:Request body must contain "inputs" object.- No token on a protected service:
Authentication required. Please provide a valid token using the 'token' parameter. - Rate limit message:
Rate limit exceeded. Maximum 1000 requests per minute. - A workbook cell that holds a formula error is not a failed call: the call answers 200 and the output value is the error text, for example
#VALUE!or#DIV/0!.
The same problems over the other addresses
| Problem | API | Discovery address | Service MCP address |
|---|---|---|---|
| Token missing or wrong | 400, reason in error | 401, {"success": false, "error": "…"} | 401, JSON-RPC error with the reason in error.message |
| Missing or invalid input | 400, details | 400, {"success": false, "error": "…"} with the input names and reasons in one sentence | Tool result with isError: true and the same sentence |
| Not published | 404 | 404, {"success": false, "error": "Service not found or not published"} | 404 |
| Month's calls used up | 429, code: "CALL_LIMIT_REACHED" | 429, the same fields plus "success": false | Tool result with isError: true; the text ends with "Tell the user; do not retry." |
What an agent should do
- Read
error. Ifdetails.requiredordetails.errorsis present, fix the named inputs and call once more. - On a token text, stop and ask the user for a valid token; do not guess.
- On 429 with
Retry-After, wait that many seconds. OnCALL_LIMIT_REACHED, tell the user and do not retry. - On 404, check the service id and ask the owner whether the service is published.
- On 500, retry once after a short pause, then report the time and the answer to the user.
FAQ
Where do I find the list of errors in the app?
Open the published service and go to API → Reference → Errors (API → Referenz → Fehler). The table there shows every status, the text in "error", what it means and what to do.
Why does my call answer 400 and not 401 when the token is wrong?
The API answers token problems with HTTP 400 and puts the reason in "error", for example Invalid token. Check the text, not only the status. The discovery address and the MCP address answer the same problem with 401.
What does "INVALID_REQUEST" mean?
The POST body is not JSON of the form {"inputs": {…}}. Send the header Content-Type: application/json and put all input values inside an "inputs" object.
What does "calculation failed" mean?
The workbook could not be calculated for this call; the text after the colon says where it failed. Open the service, run the same values with the test button and correct the workbook, then save and republish.
What does "Internal server error" mean?
It is an error on our side, answered with HTTP 500. Check that a POST body is valid JSON, try again, and contact support with the time and the full answer if it stays.
My output shows #VALUE! or #DIV/0! — is that an error of the API?
No. The call succeeded and the output cell holds a formula error in the workbook for these inputs, so the value is the error text. Try the same inputs in the workbook, fix the formula or limit the inputs with validation, then save and republish.
Which fields does an error answer have?
Always error, usually message. Input problems add details (required or errors), the rate limit adds details.limit and details.reset, and the monthly limit adds code: "CALL_LIMIT_REACHED".
Does a successful call ever contain "error"?
No. A successful API call answers HTTP 200 with service, inputs, outputs and metadata and has no error field. See The API response.
Are errors the same over MCP and the discovery address?
The causes are the same, the shape differs. The discovery address answers {"success": false, "error": "…"}, and an AI calling over MCP gets a tool result marked as an error with the reason as text.