---
title: "Claim Reward"
method: POST
path: "/api/quiz/rewards/claim"
tags: ["quiz"]
---

# Claim Reward

`POST /api/quiz/rewards/claim`

Idempotent token grant for one reward checkpoint. 409 means the persisted
answers do not yet justify the checkpoint (client should flush answers and
retry); 503 means the reward row is missing from token_rewards.

## Headers

- `x-user-id` string, nullable

## Request body

- ClaimQuizRewardRequest
  - `kind` 'initial' | 'continued', required
  - `challenge_date` string, date, required
  - `index` integer, nullable

## Response `200`

Successful Response

- ClaimQuizRewardResponse
  - `granted` boolean, required
  - `already_claimed` boolean, required
  - `checkpoint_key` string, required
  - `amount` integer, required
  - `token_balance` integer, nullable

## Other responses

- `422` — Validation Error

## Changes

- **2026-09-19** `43d0eb2328db` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/usecreed/apis/creed-api/changes/api/quiz/rewards/claim/post.md)

---

[API](https://skmtc.dev/usecreed/apis/creed-api.md) · [All operations](https://skmtc.dev/usecreed/apis/creed-api/llms.txt) · [OpenAPI document](https://skmtc.dev/usecreed/apis/creed-api/revisions/21f5c6ea721e?raw)
