---
title: "Complete Sprint Item Endpoint"
method: POST
path: "/projects/{project_id}/sprint-items/{item_id}/complete"
---

# Complete Sprint Item Endpoint

`POST /projects/{project_id}/sprint-items/{item_id}/complete`

## Request

- Base URL: `https://usemeridian.us` (the document declares no server; this is the origin it was published from)
- URL: `https://usemeridian.us/projects/{project_id}/sprint-items/{item_id}/complete`
- Auth: none declared

Mark a sprint item ``done``. Optional body: ``{task_id}``.

a2a027cf — timeout-safe / idempotent / observable completion over HTTP.
``correlation_id`` may be supplied in the body (or is minted here) and
is always echoed back on both success and the 409 conflict body below,
so a client that timed out waiting on this response can correlate a
retry with the original attempt's server-side logs. The underlying
db_module.complete_sprint_item call is itself idempotent for the
"already done" case (see its docstring) -- retrying this endpoint after
a client-side timeout returns 200 with completion_outcome=
"already_committed" rather than a misleading 409, UNLESS a genuinely
different, conflicting terminal status won a real race, which still
reports 409 exactly as before.

## Path parameters

- `project_id` string, required
- `item_id` string, required

## Request body

- object, nullable

## Response `200`

Successful Response

- object

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/usemeridian/apis/meridian.md) · [All operations](https://skmtc.dev/usemeridian/apis/meridian/llms.txt) · [OpenAPI document](https://skmtc.dev/usemeridian/apis/meridian/revisions/f37a894bd374?raw)
