---
title: "Get incentive state"
method: GET
path: "/v1/incentive/state"
tags: ["incentive"]
---

# Get incentive state

`GET /v1/incentive/state`

Returns all incentive task statuses + totals for caller's active org

## Response `200`

OK

- IncentiveStateResponse
  - `org_id` string
  - `tasks` IncentiveTaskDTO[]
    - `claimed_at` string — claimed_at + claimed_by intentionally NOT omitempty — emit `null` for pending tasks so the TS frontend gets a stable shape (`string | null`, never `undefined`). See useIncentiveState.ts type IncentiveTaskState.
    - `claimed_by` string
    - `metadata` object
    - `reward_ai_credits` integer
    - `reward_cu` integer
    - `status` string
    - `type` string
  - `totals` IncentiveTotalsDTO
    - `ai_earned` string
    - `ai_max` integer
    - `completion_pct` number
    - `cu_earned` string — decimal as string
    - `cu_max` integer
  - `user_id` string — UserID is the caller's resolved user identifier — surfaced so the frontend can scope per-user client state (e.g., the Path B localStorage gate) without a separate /me round trip.

## Other responses

- `401` — Unauthorized
- `403` — Forbidden

---

[API](https://skmtc.dev/b3os/apis/b3os-workflow-api.md) · [All operations](https://skmtc.dev/b3os/apis/b3os-workflow-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/b3os/b3os-workflow-api/revisions/a8c7af3c66a1/schema)
