# Cross Events — API Documentation Since 2.0 the API is `/api/v2` only, described by **OpenAPI 3.1** generated from the route declarations (`backend/src/v2/`), so it is never out of date: - **Reference:** `/docs/v2` on the running backend (admin token). - **Document:** `GET /api/v2/openapi.json` (admin); the frontend's copy is `frontend/src/lib/api-v2/openapi.json` (regenerate with `npm run api:types` in the repo root). Every answer is `{ "data": … }`; lists add `meta: { page, limit, total, pages }` (`?page=&limit=`); errors are `{ "error": { "code", "message", "reason"?, "fields"? } }`. Send the sign-in token as `Authorization: Bearer ` (`POST /api/v2/auth/login`). Version 1 (`/api/…`) was removed in 2.0 and answers `410 Gone`, except the incoming webhooks and the links in messages already sent. What changed and the full v1 → v2 table are in [MIGRATING-TO-2.md](../MIGRATING-TO-2.md). The old v1 reference is in git history (tag `v1.52.3`).