send
Send messages as text, audio voice notes (TTS), or files, with Markdown formatting and interactive prompts like choices and confirmations.
Instructions
Send a message as text, audio (TTS), or both. text only → text message with auto-split and Markdown. audio only → TTS voice note (spoken content). Both → voice note with text as caption (keep brief — topic context before playback). At least one of text or audio is required. For structured status, use notify. For file attachments, use send_file. For interactive prompts, use ask, choose, or confirm. Pass type: "" to route to a specific mode. Call with no args to see available types.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Emission mode: "text" (default), "file", "notification", "choice", "dm", "append", "animation", "checklist", "progress", "question". Optional — omit to default to "text". The "text" type handles text-only, audio-only, and audio+text (voice note with caption) automatically. | |
| text | No | Text message OR caption when audio is also provided. At least one of text/audio required. | |
| audio | No | Spoken TTS content. When present, sends a voice note. Requires TTS to be configured. | |
| parse_mode | No | For text content only. Default Markdown (auto-converted). | Markdown |
| disable_notification | No | Send silently (no sound/notification) | |
| reply_to | No | Reply to this message ID | |
| async | No | Applies to audio sends only. Defaults to async when audio is present — returns message_id_pending immediately; pass false to block until TTS completes and receive real message_id. Has no effect on non-audio sends. | |
| file | No | Local path, HTTPS URL, or file_id (for type: "file") | |
| file_type | No | Media type for file upload (default: auto-detect by extension) | auto |
| caption | No | File caption (for type: "file") | |
| title | No | Heading (for type: "notification", "checklist", "progress"). For checklist/progress, `text` is accepted as an alias. | |
| severity | No | Severity level for notifications | info |
| message | No | Alias for text in all modes. When provided and text is absent, resolves to text. Canonical parameter: 'text'. | |
| target_sid | No | Target session ID (for type: "dm") | |
| target | No | Alias for target_sid (for type: "dm"). Use either target or target_sid, not both. | |
| message_id | No | Message ID to append to (for type: "append") | |
| separator | No | Separator for append mode | |
| stream_id | No | Active stream ID (for type: "stream/chunk" and "stream/flush") | |
| options | No | Button options (for type: "choice"; also accepted as alias for "choose" in type: "question") | |
| choose | No | Button options for type: "question" choose mode (alias: "options") | |
| columns | No | Buttons per row (default 2) | |
| ignore_parity | No | Bypass button emoji parity check | |
| preset | No | Animation preset name | |
| frames | No | Animation frame strings | |
| interval | No | Frame interval ms | |
| timeout | No | Animation auto-cleanup timeout in seconds (min 5, max 600, default 60). Pass a low value (e.g. 5) to auto-cancel after N seconds. | |
| persistent | No | Keep animation running after messages | |
| allow_breaking_spaces | No | Allow breaking spaces in animation | |
| notify_animation | No | Notify on animation start | |
| priority | No | Animation priority level | |
| steps | No | Checklist steps (for type: "checklist") | |
| percent | No | Progress percentage 0–100 (for type: "progress") | |
| width | No | Progress bar width (default 10) | |
| subtext | No | Progress bar subtext | |
| ask | No | Free-text question for type: "question" ask mode | |
| confirm | No | Confirmation text for type: "question" confirm mode | |
| timeout_seconds | No | Timeout for interactive question types (seconds). Omit to use the server maximum (24 h). | |
| ignore_pending | No | Skip pending-updates check for interactive types | |
| yes_text | No | Affirmative button label (for confirm) | OK |
| no_text | No | Negative button label (for confirm) | Cancel |
| yes_data | No | Affirmative callback data | confirm_yes |
| no_data | No | Negative callback data | confirm_no |
| yes_style | No | Affirmative button color | primary |
| no_style | No | Negative button color | |
| topic | No | Per-message topic override. When provided, uses this string as the topic header for THIS message only — overrides the profile-level topic without mutating it. Pass an empty string to suppress the topic for this one message. | |
| token | No | Session token from action(type: 'session/start') (sid * 1_000_000 + suffix). Required for all send paths. | |
| response_format | No | Response format. "compact" omits inferrable fields (split: true, split_count, timed_out: false, voice: true) to reduce token usage. Defaults to "default". |