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

# Record a student's daily attendance

> Record one student's attendance for one school day. Requires API token authentication with a token provisioned in Scout district settings. The student is matched by OneRoster identifier (student number), state identifier, or Scout student id. The attendanceCode accepts Scout status names or common letter codes (P, T, A, E, ET, LE). Writes are idempotent: re-sending an unchanged record is reported as a duplicate, and a changed status overwrites the day (last write wins). Tardy statuses record no late minutes (keeping any lateness staff already recorded on a tardy day); arrivalTime is kept on the engagement log, not used to compute lateness.




## OpenAPI

````yaml /api-reference/openapi.json post /attendance/daily
openapi: 3.1.0
info:
  title: Scout API
  version: 1.0.0
  description: >-
    Programmatic access to Scout rostering data (IMS OneRoster 1.1 & 1.2) and
    related endpoints, authenticated with an API access token.
servers:
  - url: https://api.teachwithscout.com/v1
    description: Production
security: []
paths:
  /attendance/daily:
    post:
      summary: Record a student's daily attendance
      description: >
        Record one student's attendance for one school day. Requires API token
        authentication with a token provisioned in Scout district settings. The
        student is matched by OneRoster identifier (student number), state
        identifier, or Scout student id. The attendanceCode accepts Scout status
        names or common letter codes (P, T, A, E, ET, LE). Writes are
        idempotent: re-sending an unchanged record is reported as a duplicate,
        and a changed status overwrites the day (last write wins). Tardy
        statuses record no late minutes (keeping any lateness staff already
        recorded on a tardy day); arrivalTime is kept on the engagement log, not
        used to compute lateness.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              x-scout-ref: >-
                @scout/models/Attendance/AttendanceScan/DailyAttendanceRecord.yaml
      responses:
        '200':
          description: The attendance day was recorded, updated, or already current.
          content:
            application/json:
              schema:
                x-scout-ref: >-
                  @scout/models/Attendance/AttendanceScan/DailyAttendanceResult.yaml
        '400':
          description: >-
            Invalid record - a missing or non-string field, unknown attendance
            code, malformed or future date, ambiguous student identifiers, or a
            date inside a short-term independent study placement.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    example: 400
                  message:
                    type: string
        '403':
          description: Forbidden - requires an API token, and in-person attendance enabled
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    example: 403
                  message:
                    type: string
        '404':
          description: No student matched the provided identifier
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    example: 404
                  message:
                    type: string
      security:
        - accessToken: []
components:
  securitySchemes:
    accessToken:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Bearer access token obtained from the OneRoster token endpoint. Send it
        as `Authorization: Bearer <access_token>` on every request. Tokens
        expire after 1 hour.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.