---
title: "Api Learning Daily Practice Complete"
method: POST
path: "/api/learning/daily-practice/complete"
tags: ["Education"]
---

# Api Learning Daily Practice Complete

`POST /api/learning/daily-practice/complete`

## Request

- Base URL: `https://www.oxfordledge.com` (the document declares no server; this is the origin it was published from)
- URL: `https://www.oxfordledge.com/api/learning/daily-practice/complete`
- Auth: none declared

Submit a completed daily-practice session.

Body: {answers: [{module_id: str, chosen_index: int, category: str}]}

#96 (2026-08-13): this line used to read
`{questions_answered: int, correct_count: int}`. It is the endpoint's
PUBLIC OpenAPI description, so leaving it would have advertised a body the
handler now refuses — the api-docs equivalent of the defect being fixed.
Sessions are graded SERVER-SIDE against the answer key; a caller supplies
only what it chose.

Updates user_daily_practice_log (questions answered today) and
bumps user_daily_streaks (+1 if today is day-after-last-practice,
reset to 1 if there was a gap). Returns the new streak values +
the refreshed 7-day ring.

## Response `200`

Successful Response

- DailyPracticeCompleteResponse: `POST /api/learning/daily-practice/complete` — record a completed session + bump streak. The streak fields are the primary FE consumption (Day Streak metric on dashboard + completion celebration).
  - `ok` boolean, required: Always True on the success path; route returns api_error on failures.
  - `current_streak` integer, required: Updated daily streak count.
  - `longest_streak` integer, required: User's all-time longest streak.
  - `streak_changed` boolean, required: True when this submission moved current_streak.
  - `recall_today` integer, required: Total recall-correct answers logged today.
  - `recall_attested` boolean, required: True when client sent recall_correct_count (post-S55 client).
  - `seven_day_ring` SevenDayRingDay[], required: Rolling 7-day practiced-vs-not ring for the panel chrome.
    - `date` string, required: ISO date (YYYY-MM-DD).
    - `practiced` boolean, required: True if the user logged ≥1 question that day.

---

[API](https://skmtc.dev/oxfordledge/apis/oxford-ledge-api.md) · [All operations](https://skmtc.dev/oxfordledge/apis/oxford-ledge-api/llms.txt) · [OpenAPI document](https://skmtc.dev/oxfordledge/apis/oxford-ledge-api/revisions/e832a1260f0b?raw)
