> ## Documentation Index
> Fetch the complete documentation index at: https://docs.classquill.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Update Student

> 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 still has no real email is rejected (409). 404 if the student isn't
affiliated with your org. Returns the full student.



## OpenAPI

````yaml /openapi.json patch /v1/students/{student_id}
openapi: 3.1.0
info:
  title: EquateIt Public API
  description: >-
    REST API for EquateIt tutoring organisations. Pipe your sessions, invoices,
    payments, tutor earnings, students, and more into your own tools. Most
    endpoints are reads; a focused set of writes (each gated by a *:write scope)
    create or update data, including creating student/tutor/parent accounts.


    Authenticate every request with an org API key:

        Authorization: Token token=ei_live_...

    Mint keys in the EquateIt app under Settings → Developers.
  version: 1.0.0
servers: []
security:
  - ApiKeyAuth: []
tags:
  - name: General
  - name: Sessions
  - name: Tutors
  - name: Students & Parents
  - name: Billing
  - name: Curriculum
  - name: Coursework
  - name: Operations
  - name: Pricing
  - name: Bookings
  - name: Blog
  - name: Reports
paths:
  /v1/students/{student_id}:
    patch:
      tags:
        - Students & Parents
      summary: Update Student
      description: >-
        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 still has no real email is rejected (409). 404
        if the student isn't

        affiliated with your org. Returns the full student.
      operationId: update_student_v1_students__student_id__patch
      parameters:
        - name: student_id
          in: path
          required: true
          schema:
            type: string
            title: Student Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StudentPatch'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Student'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    StudentPatch:
      properties:
        admin_notes:
          anyOf:
            - type: string
            - type: 'null'
          title: Admin Notes
        email:
          anyOf:
            - type: string
            - type: 'null'
          title: Email
        send_invite:
          type: boolean
          title: Send Invite
          default: false
      additionalProperties: false
      type: object
      title: StudentPatch
      description: >-
        PATCH /v1/students/{student_id} — update admin-only fields. Partial
        update.


        Supplying `email` sets/updates the student's login email (clearing the
        no-email

        placeholder flag). `send_invite` (default false here — a patch doesn't
        email unless

        asked) sends a set-password link; combine with `email` to add an address
        and invite in

        one call. Sending an invite to an account that still has no real email
        is rejected (409).
    Student:
      properties:
        id:
          type: string
          title: Id
        first_name:
          anyOf:
            - type: string
            - type: 'null'
          title: First Name
        last_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Last Name
        email:
          anyOf:
            - type: string
            - type: 'null'
          title: Email
        placeholder_email:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Placeholder Email
        status:
          anyOf:
            - type: string
            - type: 'null'
          title: Status
        parent_ids:
          items:
            type: string
          type: array
          title: Parent Ids
          default: []
        created_at:
          anyOf:
            - type: string
            - type: 'null'
          title: Created At
      type: object
      required:
        - id
      title: Student
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: Org API key as `Token token=ei_live_...`

````