Home
ClassQuill
InviteCreate
InviteCreate
POST /v1/invites → mint a join link or code for a chosen scope. Delivery is decided by `email` + `scope` (there is no `send_email` flag): supply `email` to invite a specific person — this creates an invite row and ClassQuill queues them an email where the platform already does (`organization` always, via a DB trigger; `tutor_student` when an email is given). Omit `email` to get a reusable shareable link/code. Per-scope required/irrelevant fields are validated server-side (422). `organization_id`, tokens, and timestamps are always server-set; the invite RPCs are never called (they are auth.uid()-gated). `emailed: true` in the response means the invite email was QUEUED, not that it was delivered — queueing happens synchronously in this request, but the actual send is async (a 1-minute-cadence cron drains the queue via Resend). Treat `join_url` as the reliable fallback: surface it to the caller/inviter rather than assuming the email will arrive.
Tutoring Scheduling Invoicing Payroll Learning Platform Education
Properties
Name
Type
Description
scope
string
role
object
organization only: 'tutor' (default) | 'admin' | 'student'.
email
object
Required for the organization email path; optional elsewhere.
tutor_id
object
Required for scope=tutor_student.
classroom_id
object
Required for scope=classroom.
group_id
object
Required for scope=group.
student_id
object
Required for scope=parent (the child).
subject_id
object
Optional, scope=tutor_student only — echoed back + audited.
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/classquill-com/json-schema/classquill-com-invite-create-schema.json",
"title": "InviteCreate",
"description": "POST /v1/invites → mint a join link or code for a chosen scope.\n\nDelivery is decided by `email` + `scope` (there is no `send_email` flag): supply\n`email` to invite a specific person — this creates an invite row and ClassQuill\nqueues them an email where the platform already does (`organization` always, via\na DB trigger; `tutor_student` when an email is given). Omit `email` to get a\nreusable shareable link/code. Per-scope required/irrelevant fields are validated\nserver-side (422). `organization_id`, tokens, and timestamps are always\nserver-set; the invite RPCs are never called (they are auth.uid()-gated).\n\n`emailed: true` in the response means the invite email was QUEUED, not that it\nwas delivered — queueing happens synchronously in this request, but the actual\nsend is async (a 1-minute-cadence cron drains the queue via Resend). Treat\n`join_url` as the reliable fallback: surface it to the caller/inviter rather\nthan assuming the email will arrive.",
"x-generated": "2026-11-04",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/classquill-com-openapi.json#/components/schemas/InviteCreate",
"properties": {
"scope": {
"type": "string",
"enum": [
"organization",
"classroom",
"group",
"tutor_student",
"parent"
],
"title": "Scope"
},
"role": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Role",
"description": "organization only: 'tutor' (default) | 'admin' | 'student'."
},
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Email",
"description": "Required for the organization email path; optional elsewhere."
},
"tutor_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Tutor Id",
"description": "Required for scope=tutor_student."
},
"classroom_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Classroom Id",
"description": "Required for scope=classroom."
},
"group_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Group Id",
"description": "Required for scope=group."
},
"student_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Student Id",
"description": "Required for scope=parent (the child)."
},
"subject_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Subject Id",
"description": "Optional, scope=tutor_student only — echoed back + audited."
}
},
"additionalProperties": false,
"type": "object",
"required": [
"scope"
]
}
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/classquill-com-invite-create"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key .
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms .
A second provider on the same verified email joins the account you already have.