---
title: "Verify and claim an incentive task"
method: POST
path: "/v1/incentive/verify"
tags: ["incentive"]
---

# Verify and claim an incentive task

`POST /v1/incentive/verify`

## Request body

- union
  - object
  - IncentiveVerifyRequest
    - `task_type` string, required

## Response `200`

OK

- IncentiveVerifyResponse
  - `already` boolean
  - `granted` IncentiveGrantedDTO
    - `ai_credits_granted` string
    - `cu_granted` string
  - `metadata` object
  - `reason` string
  - `reason_code` string — ReasonCode is the typed bucket the verifier set on a failure (FailureClass enum, see incentive/types.go). Frontend should branch on this typed value rather than substring-matching `Reason` copy. Empty when Status="claimed".
  - `status` string — "claimed" | "pending"

## Other responses

- `400` — Bad Request
- `403` — Forbidden
- `429` — Too Many Requests

---

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