# API surface

Base URL: **`/api/v1`** (`backend/src/routes/index.ts`). Frontend default: `NEXT_PUBLIC_API_URL=http://localhost:4000/api/v1`.

## Auth & users

| Mount | Domain |
|-------|--------|
| `/auth` | Login, register, register-instructor, register-employer, verify, reset |
| `/users` | Profiles / account |

## LMS & commerce

| Mount | Domain |
|-------|--------|
| `/courses`, `/modules`, `/lessons` | Catalog |
| `/enrollments`, `/progress` | Enrollment |
| `/categories`, `/tags`, `/media` | Taxonomy & media |
| `/assessments`, `/question-bank` | Assessments |
| `/certificates` | Course certificates |
| `/mentorships` | Mentorship |
| `/coachings`, `/coaching-sessions` | Coaching SKUs & bookings |
| `/live-sessions`, `/recordings` | Live + recordings |
| `/reviews` | Reviews |
| `/teams`, `/team-course-assignments` | Corporate teams |
| `/plan-quotes` | Plan quotes |
| `/payments` | Checkouts |
| `/payouts`, `/instructor-earnings` | Instructor money |
| `/promo-codes` | Promos |
| `/instructors` | Instructor APIs |

## Career loop (CMH)

| Mount | Domain |
|-------|--------|
| `/career` | Tracks, intake, match, evidence, credentials, practice, employer talent/jobs/intros/invoices, coach hub, admin tracks/match-override |

Detail: [Career loop architecture](/architecture/career-loop) · [Routes & APIs (CMH)](/product/routes-and-apis).

## Admin & platform

| Mount | Domain |
|-------|--------|
| `/admin` | Core admin |
| `/admin/rbac` | Roles & permissions |
| `/admin/teams` | Admin teams |
| `/admin/blog`, `/admin/pricing`, `/admin/site-settings` | Content CMS |
| `/admin/newsletter`, `/admin/plan-quotes` | Growth / quotes |
| `/analytics`, `/dashboard`, `/reports` | Aggregates |
| `/requests` | User/admin requests |
| `/inbox`, `/notifications` | Messaging |
| `/send-email` | Email send |
| `/contact` | Contact form |
| `/blog`, `/pricing`, `/site-settings`, `/newsletter` | Public content |
| `/geo`, `/storage` | Helpers / files |
