API errors
OneAnalytics returns errors as application/problem+json per RFC 7807. Every error body is a Problem object with stable fields you can branch on.
Shape
{
"type": "https://docs.analytics.rstglobal.in/api/errors#share-expired",
"title": "Sharing grant expired",
"status": 403,
"detail": "The share link expired on 2026-04-01 and has been tombstoned.",
"instance": "/v1/sharing/grants/grt_01H...",
"code": "share/expired",
"trace_id": "4f8a2c...",
"doc_url": "https://docs.analytics.rstglobal.in/api/errors#share-expired"
}
code— stable, dotted, kebab — branch on this, never ontitleordetail.trace_id— attach to support tickets; we can look up the full request trace.doc_url— deep-links into this page.
Stable codes
Authentication & authorisation
auth/missing-token(401) — NoAuthorizationheader.auth/invalid-token(401) — Token signature/format invalid.auth/expired-token(401) — Token was valid but is pastexp.auth/scope-denied(403) — Token lacks the required OAuth scope.auth/tenant-mismatch(403) — Token is for a different tenant.
Resource
resource/not-found(404) — ID doesn't resolve in your tenant.resource/gone(410) — Resource existed but was deleted; seetombstoned_at.resource/conflict(409) — Unique constraint, e.g., workspace name taken.resource/precondition-failed(412) —If-MatchETag didn't match.
Sharing
share/expired(403) — Grant exists butexpires_atis in the past.share/password-required(401) — Link has a password; includeX-Share-Password.share/password-incorrect(401) — Wrong password.share/principal-mismatch(403) — Grant is for a user/team you aren't in.
Query & dataset
dataset/not-refreshed(409) — Never completed a refresh; no data to query.dataset/refresh-in-progress(503) — A refresh is running; retry with backoff.query/invalid-semantic(400) — Referenced dimension/measure doesn't exist.query/timeout(504) — Query exceeded the dataset's timeout.query/too-many-rows(413) — Result set exceedslimit; use pagination.
Rate limiting
rate-limit/burst(429) — Short-window (1 min) bucket exhausted;Retry-After: <seconds>.rate-limit/sustained(429) — Sliding-window (1 hour) budget exhausted.
Billing
billing/plan-required(402) — Feature requires Growth or higher.billing/quota-exceeded(402) — Storage, refresh, or user quota hit.
Retry guidance
- 5xx — Retry with exponential backoff (jitter). All our 5xx responses are safe to retry with the same
Idempotency-Key. - 429 — Respect
Retry-After. - 4xx — Do not retry; fix the request.
Problem type URIs
The type field is a URL pointing to this page with a hash fragment equal to the code. Following it takes the reader to the relevant section.