A clean, REST-ful API for marketplace listings, bookings, and payouts. All endpoints return JSON and use bearer-token authentication.
https://api.asana.appAuth: Authorization: Bearer …Rate limit: 600/min/v1/auth/sessionCreate a session for a role.
Request
{ "role": "student" }Response
{ "token": "sess_•••", "user": { "id": "u_…", "role": "student" } }/v1/auth/sessionSign out.
Response
{ "ok": true }/v1/classesList published classes with filters.
Response
{
"data": [{
"id": "c_1", "title": "Sunrise Vinyasa Flow",
"style": "Vinyasa", "price": 22, "rating": 4.9
}],
"pagination": { "page": 1, "total": 6 }
}/v1/classes/:idFetch a single class.
Response
{ "id": "c_1", "teacher": { "id":"u_t", "name":"Elena Rivers" }, "schedule": "Mon, Wed · 7:30 AM" }/v1/classesCreate a class (teacher).
Request
{ "title": "...", "style": "Yin", "price": 28, "capacity": 20 }Response
{ "id": "c_•••", "status": "published" }/v1/classes/:idUpdate a class (teacher/admin).
Request
{ "price": 32, "status": "draft" }Response
{ "id": "c_1", "updated": true }/v1/classes/:idRemove a class.
Response
{ "ok": true }/v1/bookingsBook a class.
Request
{ "classId": "c_1", "date": "2026-05-04T07:30:00Z" }Response
{ "id":"b_•••", "status":"confirmed", "amount": 22 }/v1/bookingsList my bookings.
Response
{ "data": [{ "id":"b_1", "status":"confirmed", "classId":"c_1" }] }/v1/bookings/:idCancel a booking.
Request
{ "status": "cancelled" }Response
{ "ok": true }/v1/payments/intentsCreate a Stripe payment intent.
Request
{ "bookingId": "b_•••" }Response
{ "clientSecret": "pi_•••_secret_•••" }/v1/payoutsTrigger teacher payout.
Request
{ "teacherId": "u_t", "amount": 480 }Response
{ "id":"po_•••", "status":"pending" }/v1/admin/usersList all users.
Response
{ "data": [...] }/v1/admin/users/:idChange role.
Request
{ "role": "teacher" }Response
{ "ok": true }