---
title: "Get Challenge Status"
method: GET
path: "/api/challenge/status"
---

# Get Challenge Status

`GET /api/challenge/status`

## Request

- Base URL: `https://backend.praktiki.io` (the document declares no server; this is the origin it was published from)
- URL: `https://backend.praktiki.io/api/challenge/status`
- Auth: HTTP bearer

Get the current challenge status for the authenticated user.
If no challenge exists, checks eligibility for online-eligible challenges (onboarding, monthly)
and creates one if eligible. Reengagement challenges are NOT created here (batch job only).

Returns:
    - If no challenge: { "has_challenge": false }
    - If pending challenge: { "has_challenge": true, "status": "pending", "challenge": {...} }
    - If active challenge: { "has_challenge": true, "status": "active", "challenge": {...}, "progress": {...} }
    - If completed/expired: { "has_challenge": false } (or optionally include for history)

## Response `200`

Successful Response

- ChallengeStatusResponse: Response model for challenge status.
  - `has_challenge` boolean, required
  - `status` string, nullable
  - `challenge` object, nullable
  - `progress` ChallengeProgress: Challenge progress model.
    - `completed` integer, required
    - `target` integer, required
    - `days_remaining` integer, nullable
    - `percentage` number, required

---

[API](https://skmtc.dev/praktiki/apis/praktiki-api.md) - [All operations](https://skmtc.dev/praktiki/apis/praktiki-api/llms.txt) - [OpenAPI document](https://skmtc.dev/praktiki/apis/praktiki-api/revisions/3428f9e0a922?raw)
