Conventions
Base URL
The base URL is your organization’s arcodash Cloud origin plus /api:
https://<your-org>.arcodash.com/api
Every path in this reference is written relative to that base, e.g. GET /api/queries means
GET https://<your-org>.arcodash.com/api/queries.
Request and response format
All request bodies and response bodies are JSON. Send Content-Type: application/json on any
request with a body.
Errors
Errors use standard HTTP status codes:
| Status | Meaning |
|---|---|
401 |
Missing or invalid API key. |
403 |
Authenticated, but not allowed to perform this action on this object. |
404 |
The object doesn’t exist, or you don’t have access to it. |
204 |
The action succeeded and returns no body (e.g. logging out). |
409 |
The request conflicts with the object’s current state (e.g. acknowledging a monitor |
| that isn’t currently triggered, or that’s already acknowledged). | |
422 |
The request body failed validation. |
429 |
Rate limit exceeded, see below. |
Rate limits
Several endpoints are rate-limited. Each limit is enforced independently, hitting one doesn’t affect your budget on another.
| Endpoint | Limit |
|---|---|
| Query execute | 60/min per user |
| Connector test | 10/min per user |
| Public dashboard | 30/min per IP |
| Public embed | 30/min per IP |
| Digest unsubscribe | 30/min per IP |
| Sign-in | 10/min per IP |
| Session exchange and organization select | 10/min per IP |
| Invitation status lookup | 10/min per IP |
| Signup | 5/min per IP |
| Invite accept | 5/min per IP |
| AI features (Ask with AI, Fix with AI, Auto Visualize, Suggest checks) | 10/min per user (an organization admin can raise or lower this in AI Settings) |
Going over a limit returns 429 with the same JSON error shape as any other failure
({"message": "..."}, Content-Type: application/json). No Retry-After header is set, back
off and retry after a short delay rather than parsing one from the response.
[!NOTE] The AI features rate limit is enforced inside each endpoint’s own response body rather than as an HTTP
429, a request over the limit still gets200with a JSON body reporting arate_limitedstatus and aretry_after_secsvalue. For Ask with AI, which streams, the same payload arrives as a singlefailedevent in a200event stream. Every other limit in the table above returns a genuine429.