---
title: "Get the status of an on-demand refresh"
method: GET
path: "/chat/refresh_threads/{thread_uuid}/status"
tags: ["chat_refresh_threads"]
---

# Get the status of an on-demand refresh

`GET /chat/refresh_threads/{thread_uuid}/status`

Poll the status of an on-demand refresh started by
`POST /documents/:uuid/refresh`. Pass the `thread_uuid` returned by
that call. Returns a coarse `state`
(`running` | `completed` | `completed_unknown_outcome` | `failed`),
the skill-level `skill_status` when parseable
(`completed` | `completed_no_changes` | `completed_locked` | `failed`),
a one-line `summary`, and `completed_at` when the run terminates.

`completed_unknown_outcome` means the agent finished talking but no
recognized terminal status code was present in its reply — callers
should surface `summary` to the user verbatim rather than assume the
refresh succeeded.

Possession of the unguessable `thread_uuid` is the access proof —
within a tenant, any caller with the handle can poll its status.
Callers should poll until `state != "running"` — refreshes typically
complete within 10-60 seconds.

## Path parameters

- `thread_uuid` string, required

## Other responses

- `400` — Bad Request - Invalid parameters or malformed request
- `401` — Unauthorized - Invalid or missing authentication
- `403` — Forbidden - User lacks permission to access this resource
- `404` — Not Found - Resource does not exist
- `422` — Unprocessable Entity - Invalid request parameters or validation errors
- `429` — Too Many Requests - Rate limit exceeded
- `500` — Internal Server Error - Unexpected server error

---

[API](https://skmtc.net/rhythms/apis/rhythms-params-in-body.md) · [All operations](https://skmtc.net/rhythms/apis/rhythms-params-in-body/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/rhythms/rhythms-params-in-body/revisions/a67e54becfe9/schema)
