---
title: "Show the typing indicator"
method: POST
path: "/v1/conversations/{id}/typing"
tags: ["Conversations"]
---

# Show the typing indicator

`POST /v1/conversations/{id}/typing`

## Request

- Base URL: `https://api.cadencercs.com`
- URL: `https://api.cadencercs.com/v1/conversations/{id}/typing`
- Auth: HTTP bearer

Shows the RCS typing bubble on the recipient's handset while you work out what to say.

Built for agents rather than scripted flows. A flow replies in milliseconds and needs nothing; an agent calling a model takes seconds, and to the person holding the phone those seconds look identical to nothing happening.

**Send it immediately before the work, not on a timer.** RCS has no "stopped typing" event — the indicator expires by itself after a few seconds and your next message clears it. If the work turns out to be fast, skip it: a bubble that fades with no message behind it reads worse than no bubble at all.

**Never billed, and never fatal.** A conversation on SMS, a backend that cannot send events, and a rejection from Google all answer `200` with `ok: false` and a reason. The correct outcome of a broken typing indicator is a message with no bubble, not a caller who thinks their conversation is broken — so there is no need to branch on channel before calling it.

Works on a sandbox key, where it answers `simulated: true` and reaches no handset.

## Path parameters

- `id` string, required

## Response `200`

Whether an indicator was shown. `ok: false` is an outcome, not an error.

- object
  - `ok` boolean, required: False means nothing was shown, and that the conversation is fine.
  - `reason` string: `CHANNEL_NOT_RCS`, `NOT_SUPPORTED` or `REJECTED`, when `ok` is false.
  - `simulated` boolean: Present on a sandbox key.
  - `expiresInSecHint` integer: Roughly how long the bubble lasts.
  - `note` string
  - `message` string
  - `channel` string

## Other responses

- `401`: Missing, unknown or revoked API key.
- `403`: Key suspended, or scoped to a different brand than the one addressed.
- `404`: No conversation with that id on this key or account.
- `429`: Faster than the indicator itself lasts, so re-sending changes nothing.
- `500`: Unexpected server error. The body is always JSON.

---

[API](https://skmtc.dev/cadencercs/apis/cadence-api.md) · [All operations](https://skmtc.dev/cadencercs/apis/cadence-api/llms.txt) · [OpenAPI document](https://skmtc.dev/cadencercs/apis/cadence-api/revisions/9438443c2081?raw)
