Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.automagik.dev/llms.txt

Use this file to discover all available pages before exploring further.

Messaging Commands

The core messaging commands: send, chats, messages, tts, and media.

omni send

Send a message to any recipient. Supports text, media, voice notes, reactions, stickers, contacts, locations, polls, embeds, presence indicators, and message forwarding.
omni send [options]

Common Options

OptionDescription
--instance <id>Instance ID (defaults to configured instance)
--to <recipient>Recipient: WhatsApp JID, phone number, or Omni chat/person UUID

Text Messages

omni send --to +5511999 --text "Hello!"
omni send --to +5511999 --text "Reply" --reply-to <msg-id>

Media Messages

omni send --to +5511999 --media ./photo.jpg --caption "Check this"
omni send --to +5511999 --media ./audio.mp3 --voice  # Send as voice note

TTS Voice Notes

Convert text to speech and send as a voice note:
omni send --to +5511999 --tts "Hello from AI!"
omni send --to +5511999 --tts "Custom voice" --voice-id <eleven-labs-id>

Reactions

omni send --to +5511999 --reaction "👍" --message <msg-id>

Stickers

omni send --to +5511999 --sticker <url-or-base64>

Contacts

omni send --to +5511999 --contact --name "John" --phone +5511888 --email john@example.com

Location

omni send --to +5511999 --location --lat -23.5505 --lng -46.6333 --address "São Paulo"

Polls (Discord)

omni send --to +5511999 --poll "Lunch?" --options "Pizza,Sushi,Tacos" --multi-select --duration 24

Embeds (Discord)

omni send --to +5511999 --embed --title "Alert" --description "Server is up" --color "#00ff00"

Presence Indicators

omni send --to +5511999 --presence composing   # Show "typing..."
omni send --to +5511999 --presence recording   # Show "recording audio..."
omni send --to +5511999 --presence paused      # Clear presence

Message Forwarding

omni send --to +5511999 --forward --message <msg-id> --from-chat <chat-id>

omni chats

Manage conversations across all connected channels.

List and Browse

omni chats list                        # List all chats
omni chats get <chat-id>               # Get chat details
omni chats messages <chat-id>          # List messages in a chat
omni chats participants <chat-id>      # List chat participants

Chat Actions

omni chats create --instance <id> --to <jid>    # Create a chat record
omni chats archive <chat-id>                      # Archive
omni chats unarchive <chat-id>                    # Unarchive
omni chats hide <chat-id>                          # Hide from list
omni chats unhide <chat-id>                        # Unhide
omni chats pin <chat-id>                           # Pin on channel
omni chats unpin <chat-id>                         # Unpin
omni chats mute <chat-id>                          # Mute
omni chats unmute <chat-id>                        # Unmute
omni chats read <chat-id>                          # Mark as read
omni chats disappearing <chat-id> --duration 7d   # Toggle disappearing messages

Chat fields

omni chats list and omni chats get return the canonical chat record. Two fields are worth calling out:
FieldDescription
isGrouptrue for group chats, false for 1:1. Derived from the channel’s external chat ID (e.g. @g.us suffix on WhatsApp), so it is always present and consistent across channels. Use this in automation conditions instead of pattern-matching on JID strings.
personIdStable Omni person UUID. On WhatsApp, Omni canonicalises LID and JID identifiers so the same human is one personId regardless of which form the channel reports.
# List only group chats
omni chats list --json | jq '.[] | select(.isGroup == true)'

# Filter automation conditions on isGroup instead of JID
omni automations create \
  --trigger message.received \
  --action call_agent \
  --condition '[{"field": "payload.chat.isGroup", "op": "eq", "value": false}]'

Labels

omni chats label <chat-id> "vip"       # Add label
omni chats unlabel <chat-id> "vip"     # Remove label

Clear an agent session (HTTP)

POST /v2/chats/clear-session rotates the conversation’s agent session ID and re-arms it for the next inbound message. Use it from an integration when the operator wants to “reset” the running agent for a chat without disconnecting the channel.
curl -X POST https://omni.example.com/v2/chats/clear-session \
  -H "Authorization: Bearer $OMNI_KEY" \
  -H "Content-Type: application/json" \
  -d '{"instanceId": "0c6f8...","chatId": "5511..."}'
Body fieldRequiredDescription
instanceIdyesUUID of the channel instance
chatIdyesExternal chat ID (e.g. WhatsApp JID)
The endpoint accepts application/json, application/x-www-form-urlencoded, and multipart/form-data. On success it returns { success: true, sessionId, sessionStrategy } and as a side-effect disarms any pending follow-ups and unpauses the agent (mirrors the trash-emoji behaviour from inside the chat).
Clearing a session does not delete chat history — only the agent’s conversation handle is rotated.

omni messages

Manage individual messages.
omni messages get <msg-id>                     # Get full message details (includes transcriptions)
omni messages search <query>                   # Full-text search across chats
omni messages read <msg-id>                    # Mark as read
omni messages edit <msg-id> --text "Updated"   # Edit a sent message
omni messages delete <msg-id>                  # Delete for everyone (WhatsApp)
omni messages star <msg-id>                    # Star a message
omni messages unstar <msg-id>                  # Unstar
omni messages remove-reaction <msg-id>         # Remove a reaction

omni tts

Text-to-speech operations.
omni tts voices    # List available TTS voices
TTS is also available via omni send --tts.

omni media

Browse and download media items.
omni media list                    # List media with transcriptions/descriptions
omni media download --id <id>     # Download a media item

Verb commands

Verb commands are shorthand for common multimodal messaging operations. Each verb infers --instance and --chat from context (active chat or automation trigger), or you can override them explicitly.
The imagine, film, see, speak, and listen verbs require provider credentials configured on your Omni server (Gemini, ElevenLabs, or Groq).

omni say

Send a text message to the open chat.
omni say <text> [options]
OptionDescription
--reply [message-id]Quote-reply to trigger message or a specific message
--instance <id>Override instance
--chat <id>Override chat
omni say "Hello from the CLI"
omni say "Got it!" --reply

omni react

React to a message with an emoji.
omni react <emoji> [options]
OptionDescription
--message <id>Message ID to react to (default: trigger message from context)
--instance <id>Override instance
--chat <id>Override chat
omni react "👍"
omni react "🎉" --message BAE5A47F3F373B35

omni speak

Synthesize text to speech and send as a voice note.
omni speak <text> [options]
OptionDescription
--provider <name>TTS provider: gemini, elevenlabs (default: server config)
--voice <name>Voice identifier (e.g., Kore for Gemini)
--style <prompt>Style prompt prepended to text (Gemini only)
--language <code>BCP-47 language code (e.g., en-US, pt-BR)
--speed <factor>Speaking speed multiplier 0.52.0
--format <fmt>Audio format: mp3, ogg, opus, wav, pcm, flac, aac (default: ogg)
--output <path>Save audio to file instead of sending
omni speak "The deployment is complete"
omni speak "Bom dia!" --voice Kore --language pt-BR
omni speak "Save this locally" --output greeting.ogg

omni listen

Transcribe an audio file to text.
omni listen <file> [options]
OptionDescription
--provider <name>STT provider: gemini, groq (default: server config)
--language <code>BCP-47 language hint (e.g., en, pt-BR)
--timestampsInclude per-segment timestamps
--format <fmt>Output format: text, json (default: text)
--model <name>Model override (provider-specific)
--reply [message-id]Send transcript as a quote-reply
omni listen voice-note.ogg
omni listen meeting.mp3 --timestamps --format json
omni listen audio.ogg --reply --language pt-BR

omni imagine

Generate an image from a text prompt using Gemini Nano Banana and send it to the active chat, or save it locally with --output.
omni imagine <prompt> [options]
Prompts are free-form text describing the desired image. Longer, descriptive prompts that specify subject, style, lighting, and composition tend to produce better results (e.g. "A neon-lit cyberpunk street at night, cinematic wide shot, rain-slick pavement"). By default the generated image is delivered to the current chat; pass --output <path> to write it to disk instead (for --count > 1, -N is appended to the filename).
OptionDescription
--aspect-ratio <ratio>Aspect ratio: 1:1, 3:4, 4:3, 9:16, 16:9, 3:2, 2:3
--size <size>Image size preset: 1K, 2K, 4K (not all models support all sizes)
--model <name>Model alias (nano-banana-2, nano-banana-pro) or raw Gemini model ID
--provider <name>Provider override (default: server imagegen.provider config)
--count <n>Number of images to generate (14, default: 1)
--output <path>Save locally instead of sending (appends -N when --count > 1)
--reply [message-id]Quote-reply to the trigger message or a specific message
omni imagine "A sunset over a cyberpunk city"
omni imagine "Logo for an AI company" --aspect-ratio 1:1 --count 4
omni imagine "Architecture diagram" --output diagram.png
omni imagine "Portrait of a fox in a meadow" --model nano-banana-pro --size 2K

omni film

Generate a video from a text prompt using Gemini Veo 3.1.
omni film <prompt> [options]
OptionDescription
--duration <seconds>Clip duration in seconds
--resolution <res>Resolution hint: 720p or 1080p
--aspect-ratio <ratio>Aspect ratio: 16:9 or 9:16 (default: 16:9)
--seed <number>RNG seed for reproducible output
--no-audioDisable audio generation
-o, --output <path>Save video to file locally (does not send)
--provider <name>Video generation provider (default: gemini)
--reply [message-id]Quote-reply to a message
omni film "A drone shot flying over a tropical forest"
omni film "Product demo animation" --resolution 1080p --output demo.mp4
omni film "Vertical reel of city lights at night" --aspect-ratio 9:16
omni film "Silent ambient loop of rain on leaves" --no-audio

omni see

Describe an image or video using Gemini Vision.
omni see <file> [prompt] [options]
OptionDescription
--provider <name>Vision provider: gemini (default: server config)
--language <code>Response language (e.g., en, pt-BR)
--max-tokens <n>Maximum output tokens (18192)
--reply [message-id]Send description as a quote-reply
omni see photo.jpg
omni see screenshot.png "What error is shown?"
omni see receipt.jpg "Extract the total amount" --reply

Session verbs

These verbs operate on the active conversation — the chat you previously selected with omni use <instance> and omni open <chat>. They infer --instance and --chat from that context, so they’re convenient inside an automation handler or an interactive session.
VerbDescription
omni use <instance>Set the active instance for verb commands. Accepts an instance name, ID, or unique prefix.
omni openOpen a chat in the active instance (sets the active chat for subsequent verbs).
omni closeClose the open chat without sending anything (clears active-chat context).
omni doneMark the current verb interaction as complete (used by automation handlers to signal end of a turn).
omni whereShow the current conversation context — instance, chat, and last message. Handy for “what am I about to send to?” sanity checks.
omni history [chat]Show recent message history for the active chat (or a chat passed explicitly).
Session verbs are most useful inside an omni automations call_agent handler — the active context is set automatically by the trigger, so the agent can run omni react, omni say, and omni done without needing to know the chat ID.
Run omni <verb> --help for the full flag table.