---
title: "The signed-in user's achievement unlock + progress"
method: GET
path: "/api/milestones/mine"
tags: ["Education"]
---

# The signed-in user's achievement unlock + progress

`GET /api/milestones/mine`

## 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/milestones/mine`
- Auth: none declared

Return `{milestones: {id: {progress, unlocked_at}}, source: 'pg'}` for the
authed user. Empty map when nothing is persisted yet (surface falls back to
its localStorage map).

## Response `200`

Successful Response

- UserMilestonesResponse: `GET /api/milestones/mine` — the signed-in user's achievement state. MILE-1 (#101) cross-device honors. `milestones` maps each achievement id the user has touched to `{progress: int, unlocked_at: iso|None}`. Empty {} when the user has no persisted rows yet (the surface then renders its localStorage map). `source` is always 'pg' (this is the per-user store).
  - `milestones` object, required
  - `source` string, required: 'pg' — the per-user achievement store.

## Other responses

- `401`: Unauthorized
- `500`: Internal Server Error

---

[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)
