---
title: "Report progress"
method: POST
path: "/cards/{card}/progress"
tags: ["Card work"]
---

# Report progress

`POST /cards/{card}/progress`

## Request

- Base URL: `https://api.yokka.ai/api/v1`
- URL: `https://api.yokka.ai/api/v1/cards/{card}/progress`
- Auth: HTTP bearer

Report progress on a card you hold, at real milestones only. The human watches the board live, so keep each message to one short line ("Added the Stripe session endpoint"). Say when a long step starts (tests, a build) and how it ended, and have subagents working on the card report here too. Never report work you haven't done.

Needs a read-and-write token. Same as the MCP tool `report_progress`.

## Path parameters

- `card` string, required: The card's ref, like "GS-12".

## Headers

- `X-Client-Name` string

## Request body

- object
  - `message` string, required: One line on what just happened.
  - `percent` number: Optional rough completion, 0–100 (rounded to a whole number). Leave it out on a card with a checklist: its bar follows the items.
  - `step` string: Optional short step name, like "Tests".

## Response `200`

The tool's result.

- object
  - `ref` string, required
  - `percent` integer, nullable, required

## Other responses

- `400`: The arguments aren't valid, or the change isn't possible as asked.
- `401`: The token is missing, invalid, revoked or expired.
- `403`: The token can't do this, or a plan or board limit was reached.
- `404`: Something it names wasn't found, or isn't visible to this token.
- `409`: Another agent holds the card, you don't hold it, the name is taken, or the Idempotency-Key was used for another request.
- `413`: The request body is too large.
- `429`: Too many calls: retry after `Retry-After` seconds.

---

[API](https://skmtc.dev/yokka/apis/yokka-rest-api.md) · [All operations](https://skmtc.dev/yokka/apis/yokka-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/yokka/apis/yokka-rest-api/revisions/19083353485e?raw)
