[{"data":1,"prerenderedAt":7},["ShallowReactive",2],{"docs-chats\u002Fmessages\u002Ftyping":3,"docs-tabs-chats\u002Fmessages\u002Ftyping":6},{"content":4,"lastmod":5},"## Typing indicator\n\n`POST \u002Fv1\u002Fchats\u002F:dialogId\u002Ftyping`\n\nShows the other chat members that the current user is typing a message, recording a voice message or a video, or sending a photo or a file.\n\n## Parameters\n\n| Parameter | Type | Required | Default | Description |\n|----------|-----|:-----:|-----------|---------|\n| `dialogId` (path) | string | yes | — | Dialog ID: a numeric user ID for personal messages, `chatXXX` for group chats. Take it from the `id` field of a [recent dialogs](\u002Fdocs\u002Fchats\u002Fdiscovery\u002Frecent) row or, for a user, from the [user list](\u002Fdocs\u002Fentities\u002Fusers\u002Flist). The special `me` alias is the current user's personal dialog — see the [Chats overview](\u002Fdocs\u002Fchats) for details |\n\n## Request body fields\n\n| Field | Type | Required | Description |\n|------|-----|:-----:|---------|\n| `type` | string | no | What the user is doing: `writing` — typing, `recordingVoice` — recording a voice message, `sendingPhoto` — sending a photo, `sendingFile` — sending a file, `recordingVideo` — recording a video. Defaults to `writing` |\n\nThe body may be omitted. Any other body field and any query parameter are rejected with `400 INVALID_PARAMS`.\n\n## Examples\n\n### curl — personal key\n\n```bash\ncurl -X POST \"https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Fchats\u002Fchat42\u002Ftyping\" \\\n  -H \"X-Api-Key: YOUR_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{ \"type\": \"recordingVoice\" }'\n```\n\n### curl — OAuth application\n\n```bash\ncurl -X POST \"https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Fchats\u002Fchat42\u002Ftyping\" \\\n  -H \"X-Api-Key: YOUR_APP_KEY\" \\\n  -H \"Authorization: Bearer USER_SESSION_TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{ \"type\": \"recordingVoice\" }'\n```\n\n### JavaScript — personal key\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Fchats\u002Fchat42\u002Ftyping', {\n  method: 'POST',\n  headers: {\n    'X-Api-Key': 'YOUR_API_KEY',\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({ type: 'recordingVoice' }),\n})\n\nconst { success } = await res.json()\nconsole.log('Indicator sent:', success)\n```\n\n### JavaScript — OAuth application\n\n```javascript\nconst res = await fetch('https:\u002F\u002Fvibecode.bitrix24.com\u002Fv1\u002Fchats\u002Fchat42\u002Ftyping', {\n  method: 'POST',\n  headers: {\n    'X-Api-Key': 'YOUR_APP_KEY',\n    'Authorization': 'Bearer USER_SESSION_TOKEN',\n    'Content-Type': 'application\u002Fjson',\n  },\n  body: JSON.stringify({ type: 'recordingVoice' }),\n})\n\nconst { success } = await res.json()\nconsole.log('Indicator sent:', success)\n```\n\n## Response fields\n\n| Field | Type | Description |\n|------|-----|---------|\n| `success` | boolean | Always `true` on success |\n| `data` | object | Result of sending the event |\n| `data.result` | boolean | `true` — the event was sent to the members |\n\n## Response example\n\n```json\n{\n  \"success\": true,\n  \"data\": {\n    \"result\": true\n  }\n}\n```\n\n## Error response example\n\n400 — an unknown `type` value:\n\n```json\n{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"INVALID_PARAMS\",\n    \"message\": \"`type` must be one of: writing, recordingVoice, sendingPhoto, sendingFile, recordingVideo.\"\n  }\n}\n```\n\n## Errors\n\n| HTTP | Code | Description |\n|------|-----|---------|\n| 400 | `INVALID_PARAMS` | `type` outside the five values, any other body field, or any query parameter. Checked before any call to Bitrix24 |\n| 401 | `TOKEN_MISSING` | The API key has no Bitrix24 tokens configured |\n| 403 | `SCOPE_DENIED` | The API key does not have the `im` scope |\n| 403 | `WRITE_BLOCKED_READONLY_KEY` | The key is read-only, and the call sends an event to the chat members — see [access rights](\u002Fdocs\u002Faccess-rights) |\n| 404 | `ENTITY_NOT_FOUND` | Bitrix24 reported \"not found\"; the Bitrix24 code is in `error.b24Code` |\n| 422 | `BITRIX_ERROR` | Bitrix24 returned an error, for example `CHAT_NOT_FOUND`; the Bitrix24 code is in `error.b24Code` |\n| 502 | `ME_ALIAS_RESOLUTION_FAILED` | Failed to resolve the current user for `me`: Bitrix24 did not return their ID |\n| 502 | `BITRIX_UNAVAILABLE` | Bitrix24 is unavailable or returned a server error |\n\nFull list of common API errors — [Errors](\u002Fdocs\u002Ferrors).\n\n## Known specifics\n\n**The indicator turns off on its own.** The event shows the indicator for a few seconds. While the user keeps typing, repeat the call — but no more often than needed to keep the indicator on: the endpoint has no rate limit of its own, and every call goes to Bitrix24.\n\n**`writing` reaches beyond the chat.** The \"typing\" event also goes to Open Channels, which pass it on to the external client, and to the chat's bots.\n\n**It does not make you a member.** Unlike reading a chat, the call does not add the user as a member.\n\n## See also\n\n- [Send a message](\u002Fdocs\u002Fchats\u002Fmessages\u002Fsend)\n- [Messages](\u002Fdocs\u002Fchats\u002Fmessages)\n","2026-10-07",{},1794739550529]