Versioning
The API is versioned in the URL path:/api/v1/… and /api/v2/…. The version prefix is part of the contract — endpoints documented on this site are stable within their major version:
- No breaking changes within a version. Fields may be added to responses; existing fields keep their names and types. Treat unknown response fields as forward-compatible additions.
- Breaking changes ship as a new path version. The old version keeps working through its deprecation window.
- Undocumented
/api/*endpoints belong to the Dexi app’s own session-authenticated API and carry no stability promise — build only against what’s documented here and in the OpenAPI spec.
Deprecation policy
When a documented endpoint is scheduled for removal:- Its responses gain a
Deprecationheader, and aSunsetheader (RFC 8594) with the removal date — at least 6 months out. - This page lists the deprecation, its replacement, and a migration note.
- After the sunset date the endpoint returns
410 Gonewith a JSONdetailpointing at the replacement.
Rate limits
Rate-limited endpoints return the draft-RFC rate-limit headers (draft-ietf-httpapi-ratelimit-headers) on every response, so clients can self-throttle instead of discovering limits by hitting them:
Exceeding a limit returns
429 with a Retry-After header (seconds) and a JSON body:
Retry-After seconds before retrying; don’t retry in a tight loop.
Errors
All errors are JSON with a top-leveldetail — a plain string on simple errors, or a structured object with a machine-readable code, human-readable message, and context fields:
not_found, rate_limited, and note_limit (see Save a bookmark for the note_limit shape). Validation failures return 422 with FastAPI’s standard detail array. The full error model is typed in the OpenAPI spec.