---
title: "Submit Written"
method: POST
path: "/student/drill/attempts/{attempt_id}/written/submit"
tags: ["daily-drill"]
---

# Submit Written

`POST /student/drill/attempts/{attempt_id}/written/submit`

## Request

- Base URL: `https://api.excellence-ai.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.excellence-ai.com/student/drill/attempts/{attempt_id}/written/submit`
- Auth: OAuth 2 (password, token URL `api/login`)

## Path parameters

- `attempt_id` string, required

## Request body

- DrillWrittenSubmitRequest
  - `confirm_unanswered` boolean

## Response `200`

Successful Response

- DrillFinishResponse
  - `attempt_id` string, required
  - `kind` string, required
  - `counted` boolean, required
  - `correct_count` integer, required
  - `question_count` integer, required
  - `points` integer, required
  - `duration_ms` integer, required
  - `best_combo` integer, required
  - `streak` integer, required
  - `streak_extended` boolean, required
  - `mistakes` DrillMistakeResponse[], required
    - `index` integer, required
    - `question` DrillCorrectedQuestionResponse, required: A question once judged (a mistake, or for the teacher).
      - `theme` string, required
      - `tier` string, required
      - `tier_label` string, required
      - `instruction` string, required
      - `prompt_tex` string, required
      - `check` string, required
      - `pow_base` integer, nullable, required
      - `prefix` string, required
      - `skill` string, required
      - `answer_tex` string, required
    - `answer` DrillAnswerResponse, required
      - `index` integer, required
      - `expr` string, nullable, required
      - `via` string, required
      - `correct` boolean, required
      - `misconception` string, nullable, required
      - `points` integer, required
      - `combo` integer, required
      - `elapsed_ms` integer, required
      - `zone` WrittenZoneResponse: Where the student's work for a question is on a sheet photo (EXC-1002 r2), in fractions of the (upright) photo.
        - `photo_url` string, required
        - `x` number, required
        - `y` number, required
        - `w` number, required
        - `h` number, required
    - `misconception_label` string, nullable, required
    - `explanation` string, nullable, required
  - `classes` DrillClassProgressResponse[], required
    - `class_id` string, required
    - `class_name` string, required
    - `done_count` integer, required
    - `student_count` integer, required
  - `theme` DrillThemeResponse, required
    - `id` string, required
    - `title` string, required
    - `skill` string, required
  - `tomorrow_theme` DrillThemeResponse, required
    - `id` string, required
    - `title` string, required
    - `skill` string, required
  - `written_summary` string, nullable

## Other responses

- `403`: Not authorized for this resource
- `404`: Resource not found
- `409`: Business rule violated
- `422`: Validation Error

## Changes

> 55 revisions in range; 1 not diffed.

- **2026-10-15** `7925dd21e4d0`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/excellence-ai/apis/excellence-learning/changes/student/drill/attempts/:attempt_id/written/submit/post.md)

---

[API](https://skmtc.dev/excellence-ai/apis/excellence-learning.md) - [All operations](https://skmtc.dev/excellence-ai/apis/excellence-learning/llms.txt) - [OpenAPI document](https://skmtc.dev/excellence-ai/apis/excellence-learning/revisions/379e4a57dee8?raw)
