# ClassQuill - [Help Center](https://docs.classquill.com/guides/overview.md): Everything you need to get your tutoring organisation up and running on ClassQuill. - [Setting up your organisation](https://docs.classquill.com/guides/org-setup.md): Configure your organisation's name, logo, subjects, and timezone before inviting anyone. - [Settings overview](https://docs.classquill.com/guides/settings-overview.md): Where everything lives under Settings, and who can see each section. - [Switch, leave, or delete an organisation](https://docs.classquill.com/guides/switch-leave-delete-org.md): Move between organisations you belong to, leave one you no longer need, or permanently delete an organisation you own. - [Inviting tutors](https://docs.classquill.com/guides/invite-tutors.md): Send email invites to your tutors and assign them the right role. - [Adding students](https://docs.classquill.com/guides/add-students.md): Enrol students into your organisation, a classroom, or a 1:1 arrangement with a tutor. - [Setting tutor availability](https://docs.classquill.com/guides/set-availability.md): Tutors set their weekly available hours so parents and students can find and book open slots. - [How parents book a session](https://docs.classquill.com/guides/how-parents-book.md): A step-by-step walkthrough of the parent portal booking flow. - [Reschedule or cancel a session](https://docs.classquill.com/guides/scheduling/reschedule-cancel.md): How tutors, admins, and parents can reschedule or cancel a booked session. - [How session reminders work](https://docs.classquill.com/guides/scheduling/session-reminders.md): ClassQuill automatically notifies tutors, parents, and students before every session. - [How invoices are generated](https://docs.classquill.com/guides/billing/invoices.md): ClassQuill automatically creates invoices when sessions are completed. Here's how the billing cycle works. - [Setting up online payments](https://docs.classquill.com/guides/billing/online-payments.md): Connect Stripe so parents can pay invoices by card directly through ClassQuill. - [Viewing transaction history](https://docs.classquill.com/guides/billing/transaction-history.md): Find, filter, and export all payments across your organisation. - [What parents and students can see](https://docs.classquill.com/guides/student-portal/what-parents-students-see.md): An overview of the parent and student portals — what each role has access to. - [Progress reports](https://docs.classquill.com/guides/student-portal/progress-reports.md): Write, publish and email a progress report to parents, and how parents read it. - [Mastery scales and progress levels](https://docs.classquill.com/guides/student-portal/mastery-scales.md): Set your organisation's mastery scale, set a student's level on a topic, and choose what parents see. - [Notes and reference sheets](https://docs.classquill.com/guides/study/notes-and-reference-sheets.md): Publish study notes and one-page reference sheets to your students, add extra material for one class, and control what they can open during an exam. - [Cue-card decks](https://docs.classquill.com/guides/study/cue-card-decks.md): Study short question cards on a spaced-repetition schedule, build your own decks, and see how reviewing feeds your topic mastery. - [Build a course: topics, materials and quizzes](https://docs.classquill.com/guides/courses/building-a-course.md): Choose which ClassQuill topics a class covers, add your own topics and materials, place quizzes, and share your organisation's course with classes, groups and 1:1 students. - [How AI auto-grading works](https://docs.classquill.com/guides/ai/auto-grading.md): ClassQuill's AutoMarker grades student work step-by-step, so tutors spend time teaching instead of marking. - [Assigning practice questions](https://docs.classquill.com/guides/ai/practice-questions.md): How to find questions in the Question Bank and assign them to students or classrooms. - [How the AI study assistant works](https://docs.classquill.com/guides/ai/ai-study-assistant.md): Ask AI is a 24/7 study tool built into the student portal — here's what it does and how it works. - [Publishing your blog](https://docs.classquill.com/guides/blog/publishing-your-blog.md): Write posts once in ClassQuill and choose how they reach readers — a hosted blog, your own domain, a widget on your existing site, or fully custom via the API. - [Adding the ClassQuill badge to your website](https://docs.classquill.com/guides/website/adding-the-badge.md): Add a "Powered by ClassQuill" badge to your website's footer, with paste-in steps for WordPress, Squarespace, Wix, and Elementor. - [Introduction](https://docs.classquill.com/introduction.md): The ClassQuill API gives you programmatic access to your tutoring organisation's data — sessions, invoices, payments, tutor earnings, and more. - [Authentication](https://docs.classquill.com/authentication.md): All API requests require an API key. Keys are scoped to your organisation and never expire unless you set an expiry date. - [Quickstart](https://docs.classquill.com/quickstart.md): Make your first ClassQuill API call in under 5 minutes. - [Pagination](https://docs.classquill.com/pagination.md): How list endpoints page and envelope their results. - [Rate limits](https://docs.classquill.com/rate-limits.md): Per-key request limits and how to handle them. - [Errors](https://docs.classquill.com/errors.md): HTTP status codes the API returns and what they mean. - [Webhooks](https://docs.classquill.com/webhooks.md): Get a signed HTTP POST the moment something happens in your organisation. - [MCP Server](https://docs.classquill.com/connect-ai-tools.md): Give AI tools access to your ClassQuill data using natural language. - [AI Connectors (Hosted MCP)](https://docs.classquill.com/connectors.md): Connect Claude, Codex, Composio and other AI tools to your ClassQuill data through the hosted MCP server — no install required. - [Ping](https://docs.classquill.com/api-reference/general/ping.md): Health check for the public API. - [Get Me](https://docs.classquill.com/api-reference/general/get-me.md): Return the identity of the authenticated org. - [List Registry Subjects](https://docs.classquill.com/api-reference/general/list-registry-subjects.md): The subject registry visible to your org: platform subjects plus any your org created. - [List Curriculum Items](https://docs.classquill.com/api-reference/general/list-curriculum-items.md): Browse a subject's curriculum tree to find the `curriculum_item_id` for a question part. - [Get Curriculum Item](https://docs.classquill.com/api-reference/general/get-curriculum-item.md): One curriculum item with its `children_count` and owning `subject_id`. - [List Session Feedback](https://docs.classquill.com/api-reference/general/list-session-feedback.md): Lesson feedback for the org's tutors, newest first (owner/admin view — attributed). `session_feedback.organization_id` is stamped at submit time, so rows scope directly to this org. Pass `anonymize=true` to return a first-name + initial instead of the full reviewer name when re-publishing externally… - [Create Group](https://docs.classquill.com/api-reference/general/create-group.md): Create a group linked to an existing org classroom. The org owner is the primary tutor. Groups must be linked to a classroom — the membership endpoints require it. Honours `Idempotency-Key`. - [Add Student To Group](https://docs.classquill.com/api-reference/general/add-student-to-group.md): Enrol an existing org member as a student in a group. Writes an accepted row on the group's parent classroom first if the student has none there. If their classroom place is still pending, the group place is held: status is "pending", and it becomes "accepted" automatically when the classroom place… - [Add Tutor To Group](https://docs.classquill.com/api-reference/general/add-tutor-to-group.md): Add an org tutor as a teacher on a group. Cascades to the parent classroom (a group instructor is always a classroom teacher). Idempotent. - [Create Invite](https://docs.classquill.com/api-reference/general/create-invite.md): Mint a join link or code for a chosen scope, org-scoped to the API key's org. - [Org Join Link](https://docs.classquill.com/api-reference/general/org-join-link.md): The org's reusable self-signup join links + codes (student + tutor). Share these via Facebook/Instagram/WhatsApp — anyone who opens one is added to your org when they sign up, no email needed from you. Returns the existing codes (a field is null if that code hasn't been minted yet — call POST /v1/in… - [List Conversations](https://docs.classquill.com/api-reference/general/list-conversations.md): List the org's message threads (most recently active first). - [List Conversation Messages](https://docs.classquill.com/api-reference/general/list-conversation-messages.md): List messages in a thread (most recent first). - [List Org Inbox](https://docs.classquill.com/api-reference/general/list-org-inbox.md): List inbound inquiries in the org's admin inbox (visitor messages to contact-only tutor cards + routed first-contact DMs). Distinct from the conversation threads. - [Create Message](https://docs.classquill.com/api-reference/general/create-message.md): Send an in-app message into a conversation. - [Coverage Tutors](https://docs.classquill.com/api-reference/general/coverage-tutors.md): The org's tutors with their service-area coverage of `postcode`, covering-first. - [Coverage Summary](https://docs.classquill.com/api-reference/general/coverage-summary.md): Supply headcount for a subject and (optionally) a postcode in one call. - [Coverage Gaps](https://docs.classquill.com/api-reference/general/coverage-gaps.md): Where the org is short on tutors: postcodes with booking demand but too few IN-PERSON tutors covering them, ranked worst-first. - [Refresh Isochrones](https://docs.classquill.com/api-reference/general/refresh-isochrones.md): (Re)compute the org's in-person tutors' drive-time isochrones from Mapbox, caching them for the accurate coverage overlay + the gate's ST_Contains leg. - [List Notes](https://docs.classquill.com/api-reference/general/list-notes.md): List topic notes (most recent first). - [Get Note](https://docs.classquill.com/api-reference/general/get-note.md): Fetch a single note, including `content_markdown` — the full body as a markdown document. - [Update Note](https://docs.classquill.com/api-reference/general/update-note.md): Update a personal note (partial — send only fields to change). - [List Sessions](https://docs.classquill.com/api-reference/sessions/list-sessions.md): List sessions for the authenticated organisation. - [Create Session](https://docs.classquill.com/api-reference/sessions/create-session.md): Create a SCHEDULED session. - [Get Session](https://docs.classquill.com/api-reference/sessions/get-session.md): Fetch a single session by ID. - [Update Session](https://docs.classquill.com/api-reference/sessions/update-session.md): Update a SCHEDULED session (reschedule/edit). 404 if it isn't in your org; 422 if it isn't `scheduled`. A time change that collides with the tutor's other scheduled session returns 409. Honours `Idempotency-Key`. - [Delete Session](https://docs.classquill.com/api-reference/sessions/delete-session.md): Hard-delete a SCHEDULED session (and its participant rows). 404 if it isn't in your org; 422 if it isn't `scheduled` (use POST /v1/sessions/:id/cancel to cancel a completed/in-progress one). Returns 204 No Content. - [Complete Session](https://docs.classquill.com/api-reference/sessions/complete-session.md): Mark a session completed. - [Cancel Session](https://docs.classquill.com/api-reference/sessions/cancel-session.md): Soft-cancel a session (keeps the record). 404 if it isn't in your org; cancelling an already-cancelled session is a 200 no-op; a completed session is 422. Marks the session and its participants cancelled. Honours `Idempotency-Key`. - [List Lesson Participants](https://docs.classquill.com/api-reference/sessions/list-lesson-participants.md): List per-student attendance rows on the org's sessions (group/classroom attendance), most recent first. - [Get Lesson Participant](https://docs.classquill.com/api-reference/sessions/get-lesson-participant.md): Fetch a single lesson-participant row by ID. 404 unless its session belongs to this org. - [Lookup User](https://docs.classquill.com/api-reference/students-&-parents/lookup-user.md): Look up a single user by email or phone. At least one of `email`/`phone` is required (422 otherwise). Only returns a user who is an accepted member of your org, or an org-affiliated student — a user in a different org is indistinguishable from a non-existent one (404, no existence leak). - [Bulk Invite Users](https://docs.classquill.com/api-reference/students-&-parents/bulk-invite-users.md): Bulk create/invite 1–100 users — students (optionally each with a parent), tutors, and parents — in one call. Each row carries a `type` discriminator. - [Get Student](https://docs.classquill.com/api-reference/students-&-parents/get-student.md): Fetch a single student by ID. 404 unless the student is affiliated with your org (classroom roster, 1:1 relationship, org membership, or a session) — the same set GET /v1/students lists, so anything you see there is fetchable here. - [Update Student](https://docs.classquill.com/api-reference/students-&-parents/update-student.md): Update a student's admin-only fields. `admin_notes` is written directly. Supplying `email` sets/updates the login email and clears the no-email placeholder flag; `send_invite` (default false) sends a set-password link — combine them to add an email and invite in one call. Inviting an account that st… - [Link Parent Student](https://docs.classquill.com/api-reference/students-&-parents/link-parent-student.md): Link a parent ALREADY KNOWN to your org to another of your students (a sibling). Both sides are org-scoped: `student_id` must be an org-affiliated student, and `parent_id` must be a parent account (profiles.account_type='parent') already linked to at least one of your students. 404 otherwise — a par… - [Offboard Student](https://docs.classquill.com/api-reference/students-&-parents/offboard-student.md): Offboard a student org-wide → the soft, read-only **alumni** tier. - [List Students](https://docs.classquill.com/api-reference/students-&-parents/list-students.md): List the students in your organisation, each with the IDs of their linked parents. - [Create Student](https://docs.classquill.com/api-reference/students-&-parents/create-student.md): Create a student account (name, subjects, phone, address, placement) and optionally a linked parent. `email` is optional (omit → no-email placeholder account, invite later); when a real email is present and `send_invite` (default true) is set, emails a set-password link. Cross-org placement targets… - [List Parents](https://docs.classquill.com/api-reference/students-&-parents/list-parents.md): List the parents in your organisation (linked to at least one of your students), each with the IDs of their children. - [Create Parent](https://docs.classquill.com/api-reference/students-&-parents/create-parent.md): Create a parent account and link it to an existing org student (`student_id`). `email` is optional (omit → no-email placeholder account, invite later); when a real email is present and `send_invite` (default true) is set, emails a set-password link. The student must already be an accepted student of… - [Get Parent](https://docs.classquill.com/api-reference/students-&-parents/get-parent.md): Fetch a single parent by ID, with their org-linked children. 404 if none in this org. - [Parent Balance](https://docs.classquill.com/api-reference/students-&-parents/parent-balance.md): What a parent owes and has paid, summed across their org-linked children's invoices. Returns 404 if the parent has no students in this org. - [Send Student Invite](https://docs.classquill.com/api-reference/students-&-parents/send-student-invite.md): (Re)send the set-password invite to an org student created earlier. Use this after you've added an email to a no-email account (via PATCH /v1/students/{id}). 409 if the student still has no real email; 404 if they aren't affiliated with your org. - [Send Parent Invite](https://docs.classquill.com/api-reference/students-&-parents/send-parent-invite.md): (Re)send the set-password invite to an org parent. 409 if they still have no real email; 404 if they aren't linked to a student in your org. - [List Tutors](https://docs.classquill.com/api-reference/tutors/list-tutors.md): List the tutors and staff in the authenticated organisation. - [Create Tutor](https://docs.classquill.com/api-reference/tutors/create-tutor.md): Create a tutor (or admin) account + tutor profile. `email` is optional (omit → no-email placeholder account, invite later); when a real email is present and `send_invite` (default true) is set, emails a set-password link. - [Get Tutor](https://docs.classquill.com/api-reference/tutors/get-tutor.md): Fetch a single tutor/staff member by ID. 404 if not an accepted member of this org. - [Update Tutor](https://docs.classquill.com/api-reference/tutors/update-tutor.md): Update an org tutor's profile fields. - [Tutor Available Slots](https://docs.classquill.com/api-reference/tutors/tutor-available-slots.md): Free bookable time slots for a tutor in [from, to], computed by subtracting the tutor's already-scheduled sessions from their weekly availability rules. 404 if the tutor isn't an accepted member of your org. v1 is deliberately coarse: availability clock-times are treated as UTC and emitted as '...Z'… - [Tutor Earnings](https://docs.classquill.com/api-reference/tutors/tutor-earnings.md): Earnings for one tutor over an optional date range — the payroll/Xero figure. - [List Tutor Reviews](https://docs.classquill.com/api-reference/tutors/list-tutor-reviews.md): Public reviews for one of the org's tutors — the subset of lesson feedback whose author chose to publish a written comment. Cross-org tutors return 404. - [List Availabilities](https://docs.classquill.com/api-reference/tutors/list-availabilities.md): List the recurring weekly availability rules of the org's tutors. - [Get Availability](https://docs.classquill.com/api-reference/tutors/get-availability.md): Fetch a single availability rule by ID. 404 unless its tutor is a member of this org. - [List Payments](https://docs.classquill.com/api-reference/billing/list-payments.md): List payments received by the org (most recent first). - [Create Payment](https://docs.classquill.com/api-reference/billing/create-payment.md): Record a MANUAL / EXTERNAL payment (cash, bank transfer, off-platform). - [Get Payment](https://docs.classquill.com/api-reference/billing/get-payment.md): Fetch a single payment by ID. 404 if it doesn't exist or belongs to another org. - [List Invoices](https://docs.classquill.com/api-reference/billing/list-invoices.md): List invoices for the org (most recent first), each with its line items. - [Get Invoice](https://docs.classquill.com/api-reference/billing/get-invoice.md): Fetch a single invoice (with line items) by ID. 404 unless its `organization_id` is this org (same scoping as list_invoices). - [List Payouts](https://docs.classquill.com/api-reference/billing/list-payouts.md): List completed tutor payouts for the org (most recent first) — the wage-payment ledger for payroll export. - [Get Payout](https://docs.classquill.com/api-reference/billing/get-payout.md): Fetch a single payout by ID. 404 if it doesn't exist or belongs to another org. - [List Subjects](https://docs.classquill.com/api-reference/curriculum/list-subjects.md): The subjects the org teaches, derived from the subject IDs on its sessions. `name` is the subject_registry label (the platform subject dictionary, subject-system overhaul P1); unregistered/legacy ids fall back to the raw id. - [List Student Groups](https://docs.classquill.com/api-reference/curriculum/list-student-groups.md): List the org's student groups, each with its accepted student-member IDs. - [Get Student Group](https://docs.classquill.com/api-reference/curriculum/get-student-group.md): Fetch a single student group (with members) by ID. 404 unless it belongs to this org (org-owned, or a single-org member's null-org group). - [List Classrooms](https://docs.classquill.com/api-reference/curriculum/list-classrooms.md): List the org's classrooms (most recent first). - [Create Classroom](https://docs.classquill.com/api-reference/curriculum/create-classroom.md): Create a classroom scoped to this org. The org owner is set as the tutor (owner-as-merchant model). Returns 422 with a `reason` field on validation failure. Honours `Idempotency-Key`. - [Get Classroom](https://docs.classquill.com/api-reference/curriculum/get-classroom.md): Fetch a single classroom by ID. 404 unless it belongs to this org (org-owned, or a single-org member's null-org classroom). - [Add Student To Classroom](https://docs.classquill.com/api-reference/curriculum/add-student-to-classroom.md): Enrol an existing org member as a student in a classroom. Idempotent. - [Add Tutor To Classroom](https://docs.classquill.com/api-reference/curriculum/add-tutor-to-classroom.md): Add an accepted org tutor/admin as a teacher on a classroom. Idempotent. - [List Lesson Plans](https://docs.classquill.com/api-reference/coursework/list-lesson-plans.md): List the org's lesson plans (most recent first). Tutor-authored, curriculum- aware teaching plans — an EquateIt feature with no Teachworks equivalent. - [Create Lesson Plan](https://docs.classquill.com/api-reference/coursework/create-lesson-plan.md): Create a lesson plan — a tutor-authored, curriculum-aware teaching plan. - [Update Lesson Plan](https://docs.classquill.com/api-reference/coursework/update-lesson-plan.md): Update a lesson plan (partial — send only fields to change). - [List Homework](https://docs.classquill.com/api-reference/coursework/list-homework.md): List assessments assigned by the org's tutors (most recent first). - [List Files](https://docs.classquill.com/api-reference/coursework/list-files.md): List the org's files and resources (most recent first) — the content library. - [List Questions](https://docs.classquill.com/api-reference/coursework/list-questions.md): List questions available to the org. - [Create Question](https://docs.classquill.com/api-reference/coursework/create-question.md): Create a question in your org's private question bank. - [List Results](https://docs.classquill.com/api-reference/coursework/list-results.md): List assessment results (`assessment_attempts`) for the org's students, newest first. - [Get Result](https://docs.classquill.com/api-reference/coursework/get-result.md): Fetch a single assessment result by ID. 404 unless it belongs to one of the org's students. - [List Mileage](https://docs.classquill.com/api-reference/operations/list-mileage.md): List the org's mileage trips (most recent first) — for reimbursement export. - [List Expenses](https://docs.classquill.com/api-reference/operations/list-expenses.md): List the org's expense claims (most recent first) — for reimbursement export. - [List Adjustments](https://docs.classquill.com/api-reference/operations/list-adjustments.md): List the org's payroll adjustments (most recent first) — manual credits/debits folded into payroll. A negative `amount_cents` is a deduction. - [Create Adjustment](https://docs.classquill.com/api-reference/operations/create-adjustment.md): Record a payroll adjustment (manual credit/debit) for one of the org's tutors. - [List Locations](https://docs.classquill.com/api-reference/operations/list-locations.md): List the saved locations owned by the org, its tutors, and its students. - [Get Location](https://docs.classquill.com/api-reference/operations/get-location.md): Fetch a single location by ID. 404 unless owned by this org, a member, or a student of it. - [Reports Summary](https://docs.classquill.com/api-reference/reports/reports-summary.md): An owner's business-health snapshot in one call: active tutors/students, sessions today, money settled this week vs outstanding, and the number of approvals waiting. Day/week boundaries are UTC; the week starts Monday. - [List Booking Requests](https://docs.classquill.com/api-reference/bookings/list-booking-requests.md): List incoming booking requests for the org (most recent first). - [Recommend Tutors](https://docs.classquill.com/api-reference/bookings/recommend-tutors.md): Rank the org's tutors for a booking request, best fit first. - [List Leads](https://docs.classquill.com/api-reference/bookings/list-leads.md): List inbound leads captured by the org's lead forms (most recent first). - [Create Lead](https://docs.classquill.com/api-reference/bookings/create-lead.md): Capture an inbound lead into your org's CRM (e.g. a website quote funnel). The free-form details (name/phone/subject) are stored in the lead's `payload`; `email`, `source_url`, `notes` and a `source_form_name` snapshot are columns; `status` starts at 'new'. `audience` ('student'/'tutor'/'parent') de… - [Get Lead](https://docs.classquill.com/api-reference/bookings/get-lead.md): Fetch a single lead by ID. 404 if it doesn't exist or belongs to another org. - [List Rate Cells](https://docs.classquill.com/api-reference/pricing/list-rate-cells.md): List the org's rate-matrix cells — student rates per (band × tier × subject × session kind), plus the in-person surcharge. - [List Rate Bands](https://docs.classquill.com/api-reference/pricing/list-rate-bands.md): List the org's named student price bands, in the org's configured sort order. - [List Tutor Tiers](https://docs.classquill.com/api-reference/pricing/list-tutor-tiers.md): List the org's tutor pay/qualification tiers, in the org's configured sort order. Names and labels only — no money. - [List Blog Posts](https://docs.classquill.com/api-reference/blog/list-blog-posts.md): List blog posts visible to the key: its OWN org's posts always, plus platform posts when the key has the platform-blog capability. Optional brand/status/target filters. Includes drafts (this is an authoring surface). Requires `read`. - [Create Blog Post](https://docs.classquill.com/api-reference/blog/create-blog-post.md): Create a blog post on the calling key's OWN organisation blog — the post is scoped to the key's org, so callers normally send only `title` (+ optional fields). Defaults `status='draft'`. Slug is derived from the title when omitted and must be unique per org. Honours `Idempotency-Key`. Requires the `… - [Get Blog Post](https://docs.classquill.com/api-reference/blog/get-blog-post.md): Fetch one blog post the key may see (own org, or platform when capable). Cross-scope / missing → 404. Requires `read`. - [Delete Blog Post](https://docs.classquill.com/api-reference/blog/delete-blog-post.md): Delete a blog post. 204 on success, 404 if not found or out of the key's scope (own org, or platform when the key is platform-capable). Published posts can be deleted (no guard — PATCH to unpublish first if preferred). DELETE is already idempotent, so it takes no Idempotency-Key. Requires `blog:writ… - [Update Blog Post](https://docs.classquill.com/api-reference/blog/update-blog-post.md): Update fields and/or flip `status` to 'published'. brand/target are immutable. Re-publishing an already-published post is a no-op success (no duplicate rebuild dispatch). Cross-scope id → 404. Requires `blog:write`. - [Upload Blog Image](https://docs.classquill.com/api-reference/blog/upload-blog-image.md): Upload an image to the `blog-images` Supabase storage bucket and return its public URL (use as a post's `featured_image` or inline in `content`). By default the image is stored under the calling key's OWN organisation. ## OpenAPI Specs - [openapi](/openapi.json) This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.