> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fiveninelabs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# session_busy

> 409 conflict — a run is in flight on this session; turns are not queued. Wait for the terminal, then post.

**HTTP 409 · type `conflict`.** You posted a turn while the session has a run in
flight (status `running` or `judging`). Turns are deliberately **not queued** — a
queued follow-up against rows that don't exist yet would either block silently or
answer against a moving target, so the API refuses instead and tells you the live
status. Nothing was charged.

## The shape

```json theme={null}
{
  "error": {
    "type": "conflict",
    "code": "session_busy",
    "message": "A run is in flight (status: running); turns are not queued.",
    "doc_url": "https://docs.fiveninelabs.com/errors/session_busy",
    "request_id": "req_8uu53q",
    "status": "running"
  }
}
```

`status` is live — `judging` means the sources are done and adjudication is running;
the terminal is close.

## How to fix

Wait for the run's terminal, then post the turn. Any of the three
[ways to watch](/guides/streaming) works:

* **Stream** `GET …/stream` until the `session-turn` envelope closes it.
* **Long-poll** `GET …/result?timeout=600` — a `200` means terminal.
* **Webhook** — `session.answered` (or `.abstained` / `.error` / `.stopped`) fires at
  the terminal.

Remember [a run ending at `search-done` is still judging](/guides/events) — posting a
turn the moment you see `search-done` will hit this error; wait for the terminal
envelope.

If the in-flight run is no longer wanted, `POST …/stop` it first (a pass already
spending finishes; nothing new starts), then post the turn.

## Reproduce it

Requires a run actually in flight — cheapest on a live key with a small budget:

```bash theme={null}
curl https://api.fiveninelabs.com/v1/sessions \
  -H "Authorization: Bearer $FIVENINE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query": "vinyl records under $30 in Austin", "max_spend_usd": 1}'
# → immediately, while status is "running":
curl https://api.fiveninelabs.com/v1/sessions/sess_REPLACE/turns \
  -H "Authorization: Bearer $FIVENINE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text": "only ones under $20"}'
```
