) before the closing tag on any HTML, WordPress, Shopify, or React website."}},{"@type":"Question","name":"Is ToolsWallet RAG free to use?","acceptedAnswer":{"@type":"Answer","text":"Yes! Every developer account gets 2 permanently free Knowledge Bases (RAGs) with up to 25 records each, real-time streaming SSE API, and 1-line embeddable widgets with zero credit card required."}}]}]}
ToolsWallet RAG documentation v1.0. Learn how to build custom knowledge assistants with zero cost. ToolsWallet Platform
DocumentationError Codes
4 min readAugust 2026
Reference

Error Codes & Exception Handling

Try in Console

ToolsWallet RAG uses conventional HTTP response codes to indicate the success or failure of an API request. In general: 2xx codes indicate success, 4xx codes indicate an issue with the provided parameters, and 5xx codes indicate a server error.

1. Standard Error Response Schema

All error responses return a standardized JSON structure:

JSON
{
  "success": false,
  "message": "Rate limit exceeded. Maximum 10 requests per minute.",
  "error": "ERR_RATE_LIMIT"
}

2. HTTP Status Codes Table

Here is the complete reference of status codes returned by the API:

Status CodeError TypeDescription & Resolution
200 OKSuccessRequest succeeded and grounded response generated.
400 Bad RequestValidation ErrorMissing required parameters (`ragId` or `query`).
401 UnauthorizedAuthentication ErrorMissing or invalid `X-API-Key` or Bearer JWT token.
403 ForbiddenDomain Origin BlockRequest Origin is not included in the API Key's domain whitelist.
404 Not FoundResource MissingKnowledge Base (RAG ID) does not exist or is inactive.
429 Too Many RequestsRate Limit ExceededExceeded 10 requests per minute or 100 requests per day.
500 Server ErrorInternal FailureTemporary upstream inference error. Retry with backoff.

3. Handling Rate Limits (429)

When building client applications, implement exponential backoff retry logic when encountering 429 Too Many Requests status codes:

JAVASCRIPT
async function queryWithRetry(url, options, retries = 3, delay = 1000) {
  for (let i = 0; i < retries; i++) {
    const res = await fetch(url, options);
    if (res.status !== 429) return res;
    // Wait before retrying
    await new Promise((resolve) => setTimeout(resolve, delay * Math.pow(2, i)));
  }
  throw new Error("Rate limit exceeded after max retries.");
}

4. Handling CORS & Origin Errors (403)

If your browser console displays 403 Forbidden: Origin not allowed, go to Dashboard > API Keys tab. Edit your active API Key and add your domain (e.g. https://mywebsite.com or http://localhost:3000) to the Allowed Origins list.

Ready to build your Custom RAG?
Deploy in under 3 minutes with 2 free RAG knowledge bases.
Create Free RAG