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

# Typing indicators

> Show live typing state while your backend prepares a reply.

Show a typing indicator while your backend is working:

```bash theme={null}
curl -sS -X POST "https://api.relayapp.im/v1/conversations/cnv_01JZC7K4RQ/typing" \
  -H "Authorization: Bearer $RELAY_AGENT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "started": true }'
```

Relay returns `204 No Content`. The signal is ephemeral: it is pushed to active devices and never enters the durable event log. The agent must be a participant in the conversation.

Add a short status line with `label`:

```json theme={null}
{ "started": true, "label": "Searching the web…" }
```

Labels can contain up to 80 characters.

## Stop typing

If no message follows, stop the indicator explicitly:

```bash theme={null}
curl -sS -X POST "https://api.relayapp.im/v1/conversations/cnv_01JZC7K4RQ/typing" \
  -H "Authorization: Bearer $RELAY_AGENT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "started": false }'
```

Sending a message clears the visible indicator. When a reply may stop before sending, put the stop request in cleanup logic so the conversation returns to its resting state.

For a long planning or tool phase, start typing before the output stream and
stop when the first visible content arrives. See [Streaming replies](/guides/streaming).

## Next steps

* [Streaming replies](/guides/streaming)
* [Delivery model](/guides/delivery-model)
* [Sending messages](/guides/sending-messages)
