Operators
REST API & webhooks
JSON API for Campus and Studio. Mint a Bearer token in Account. Paid enrollments are Stripe Checkout only — this API will not fake a charge.
Authentication
Header: Authorization: Bearer ch_live_…
Endpoints
GET /api/v1/courses— published catalogGET /api/v1/courses/:slug— syllabusGET /api/v1/me— profile + enrollments (token)POST /api/v1/enrollments— free courses only. Paid courses return 402.POST /api/webhooks/stripe— verified Stripe webhook; enrolls oncheckout.session.completed
Enrollment workflow
- Student clicks Enroll
- Free course enrolls immediately
- Paid course redirects to Stripe Checkout when keys are set
- Stripe webhook (or success page) confirms
payment_status=paid - Enrollment row + DRM token stub + drip + welcome outbox
- If Stripe keys are missing, the UI says payments are not configured
