---
title: "Turn Status"
method: GET
path: "/chats/{conversation_id}/turn-status"
---

# Turn Status

`GET /chats/{conversation_id}/turn-status`

Recovery oracle for a reconnecting chat client: did the last turn finish,
is it still streaming, or did its worker die?

Driven off the `stream_state` lock the worker releases in its `finally`, so
the client never re-runs a live or finished turn (which would duplicate it):
  * no lock             -> the finally ran -> "completed" (it's in the DB)
  * lock + fresh stream  -> a worker is streaming -> "in_progress"
  * lock + stream silent past DEAD_AFTER_SILENT_SECONDS, no [DONE] -> "dead"
    (release the stale lock so a reload doesn't re-hang on it)

## Path parameters

- `conversation_id` string, required

## Response `200`

Successful Response

- TurnStatusResponse
  - `status` 'completed' | 'in_progress' | 'dead', required

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/stardrift/apis/fastapi.md) · [All operations](https://skmtc.dev/stardrift/apis/fastapi/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/stardrift/fastapi/revisions/00746572572a/schema)
