Create Session
Create a SCHEDULED session.
Creates a tutor_sessions row with status=‘scheduled’ and a participant whose
per-hour rate snapshot is resolved server-side from the org rate matrix. No
charge is initiated — settlement flows through the existing Stripe PaymentIntent
- webhook, and the tutor-owed ledger row is written only on completion (see PUT
/v1/sessions//complete).
organization_id,creator_id,status, the rate snapshot, and timestamps are all server-set.tutor_id/student_idmust be org-scoped (404 otherwise). The money-moving write runs inside a single transactional RPC. Requires thesessions:writescope. HonoursIdempotency-Key.
Authorizations
Org API key as Token token=ei_live_...
Headers
Body
POST /v1/sessions → tutor_sessions. Creates a SCHEDULED session only.
No charge is initiated here (see public_writes_batch2.py — real charging stays
in the existing Stripe PaymentIntent + webhook flow). organization_id,
creator_id, status ('scheduled'), the per-hour rate snapshot (resolved from
the org rate matrix onto the session's participant), and timestamps are ALL
server-set. tutor_id / student_id must be org-scoped. math_level_id is the
subject identifier (text, e.g. 'methods_34').
Subject identifier, e.g. 'methods_34'
ISO 8601 timestamp
ISO 8601 timestamp; must be after starts_at
One of 30, 45, 60 (tutor_sessions CHECK)
online | in_person
Optional; defaults server-side if omitted
Response
Successful Response