---
title: "The calling user's milestone badges and progress"
method: GET
path: "/v1/me/badges"
tags: ["Account"]
---

# The calling user's milestone badges and progress

`GET /v1/me/badges`

## Request

- Base URL: `https://api.memestack.ai`
- URL: `https://api.memestack.ai/v1/me/badges`
- Auth: HTTP bearer

The authenticated account's earned badges (highest tier per track) plus, for every track NOT yet complete, the current value and the next threshold. A track absent from `progress` is complete — every open track appears, including one still at zero. Private, no-store; never cached by a shared cache.

## Response `200`

Earned badges plus per-track progress.

- object
  - `earned` EarnedBadge[]
    - `badge_key` string, required: `{track}_{tier name}`, e.g. `uploads_silver`. Unique per user.
    - `track` 'uploads' | 'sats_earned' | 'supporter' | 'streak' | 'contests' | 'tenure', required
    - `tier` 1 | 2 | 3, required: 1 bronze, 2 silver, 3 gold.
    - `earned_at` string, date-time, required: When the threshold was crossed. An account merge keeps the EARLIER of two stamps.
  - `progress` BadgeProgress[]
    - `track` 'uploads' | 'sats_earned' | 'supporter' | 'streak' | 'contests' | 'tenure', required
    - `next_tier` 1 | 2 | 3, required
    - `threshold` integer, required: The value `next_tier` requires. `value >= threshold` is earned, so a value sitting exactly on one reports the NEXT tier.
    - `value` integer, required: The account's current value on this track.

## Other responses

- `401`: Authentication required.
- `403`: The token is scoped to the browser extension (EXTENSION_SCOPE_FORBIDDEN).

---

[API](https://skmtc.dev/memestack/apis/memestack-api.md) · [All operations](https://skmtc.dev/memestack/apis/memestack-api/llms.txt) · [OpenAPI document](https://skmtc.dev/memestack/apis/memestack-api/revisions/9d3a19565f75?raw)
