.error field:
HTTP status codes
400 Bad Request
400 Bad Request
What it means: the server understood the route but your request body or path params were invalid.Common causes:
- Missing
taskorendUserIdonPOST /v1/tasks - Blank
taskstring (empty or whitespace-only) endUserIdlonger than 256 characters- Malformed JSON body
- Invalid
fieldslist onDELETE credentials
error message, fix your request, retry.403 Forbidden
403 Forbidden
What it means: the token was recognized but denied.Common causes:
- API key has been revoked
- Attempting to read/write resources belonging to another business
- Attempting to submit a follow-up into a
sessionIdthat isn’t yours
404 Not Found
404 Not Found
What it means: the resource doesn’t exist, or it does but you don’t own it (we deliberately don’t distinguish the two).Common causes:
- Unknown
taskIdonGET /v1/tasks/{taskId} - Unknown
sessionIdonGET /v1/sessions/{sessionId} - API-key
prefixthat was never issued, or belongs to another business
405 Method Not Allowed
405 Method Not Allowed
What it means: wrong HTTP verb for the endpoint.What to do: check the endpoint doc for the allowed verbs.
429 Too Many Requests
429 Too Many Requests
What it means: the business has hit its monthly task quota (15 on the free tier, higher if you’ve arranged it).The response body tells you how many you’ve used and the current cap:What to do:
- Wait until the start of next month — the counter resets automatically.
- Or email team@stablebrowse.ai to have your limit raised.
500 Internal Server Error
500 Internal Server Error
What it means: our bug.What to do: retry with exponential backoff (we often recover within seconds). If it persists, report to team@stablebrowse.ai with the timestamp and (ideally) the request ID from response headers.
Task-level errors
A task that reachesstatus: "failed" carries an error string explaining what went wrong. This is distinct from the HTTP error codes above — the API call itself succeeded (GET /v1/tasks/{id} returns 200), but the underlying agent run didn’t produce a useful answer. Common patterns:
SDK exceptions
The Python and TypeScript SDKs map HTTP errors into a typed exception hierarchy. See Python SDK → Exceptions and TypeScript SDK → Exceptions.StablebrowseError. TaskFailed and TaskTimeout both carry the underlying task on .task for inspection.
Retry guidance
For
tasks.run specifically, the SDKs’ built-in polling handles transient 5xx on GET /v1/tasks/{id}. You don’t need to implement retries for the polling loop itself.