# 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. - [How to view progress reports](https://docs.classquill.com/guides/student-portal/progress-reports.md): Where to find student progress data — for parents, tutors, and org admins. - [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 read-only access to your EquateIt 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 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. Also ensures the student has an accepted row on the group's parent classroom. Idempotent. - [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. READ-ONLY: returns the existing codes (a field is null if that code hasn't been minted yet — call… - [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 homework assignments set 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 (exam 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.