omni routes controls which agent handles which chat, omni persons manages the contact directory, and omni auth/omni keys handle authentication and API key lifecycle.omni routes list1omni routes list [options]
| Option | Description |
--instance <id> | Instance ID |
--scope <scope> | Filter by scope: chat or user |
--active | Show only active routes |
omni routes get1omni routes get <route-id>
omni routes create1omni routes create [options]
| Option | Description |
--instance <id> | Instance ID |
--scope <scope> | Route scope: chat or user |
--chat <chat-id> | Chat UUID (required when scope=chat) |
--person <person-id> | Person UUID (required when scope=user) |
--agent <agent-id> | Agent UUID |
--timeout <seconds> | Agent timeout in seconds |
--stream / --no-stream | Enable or disable streaming responses |
--prefix-sender / --no-prefix-sender | Prefix messages with sender name |
--wait-media / --no-wait-media | Wait for media processing before routing |
--send-media-path / --no-send-media-path | Include file path in media text |
--gate / --no-gate | Enable or disable LLM response gate |
--gate-model <model> | Response gate model |
--gate-prompt <prompt> | Response gate prompt |
--reply-filter-mode <mode> | Reply filter: all or filtered |
--label <label> | Human-readable label |
--priority <number> | Priority (higher = higher priority, default: 0) |
--inactive | Create as inactive |
12345678910111213141516171819202122232425# Route a chat to an agent omni routes create \ --instance <id> \ --scope chat \ --chat <chat-uuid> \ --agent <agent-uuid> \ --label "Support Bot" # Route all messages from a person to an agent omni routes create \ --instance <id> \ --scope user \ --person <person-uuid> \ --agent <agent-uuid> \ --gate \ --gate-model "claude-sonnet-4-20250514" # High-priority route with streaming omni routes create \ --instance <id> \ --scope chat \ --chat <chat-uuid> \ --agent <agent-uuid> \ --stream \ --priority 10
omni routes updatecreate.1omni routes update <route-id> [options]
omni routes delete1omni routes delete <route-id>
omni routes test1omni routes test [options]
| Option | Description |
--instance <id> | Instance ID |
--chat <chat-id> | Chat UUID to test |
--person <person-id> | Person UUID to test |
1omni routes test --instance <id> --chat <chat-uuid>
omni routes metrics1omni routes metrics
omni persons search1omni persons search <query> [options]
| Option | Description |
--limit <n> | Limit results (default: 20) |
1omni persons search "João" --limit 10
omni persons get1omni persons get <id>
omni persons presence1omni persons presence <id>
omni persons update1omni persons update <id> [options]
| Option | Description |
--name <name> | Display name |
--phone <phone> | Primary phone (E.164 format) |
--email <email> | Primary email |
--avatar <url> | Avatar URL |
--metadata <json> | Metadata as JSON string |
1omni persons update abc123 --name "João Silva" --email "joao@example.com"
omni persons merge1omni persons merge [options] <source> <target>
| Option | Description |
--reason <reason> | Reason for merge |
1omni persons merge person-abc person-def --reason "Same WhatsApp user across two instances"
omni persons link1omni persons link <identityA> <identityB>
1omni persons link identity-whatsapp-123 identity-telegram-456
omni persons unlink1omni persons unlink [options] <identityId>
| Option | Description |
--reason <reason> | Reason for unlinking (default: "Manual unlink") |
1omni persons unlink identity-abc --reason "Incorrectly linked"
omni auth login1omni auth login [options]
| Option | Description |
--api-key <key> | API key for authentication |
--api-url <url> | API base URL (default: http://localhost:8882) |
omni auth status1omni auth status
omni auth logout1omni auth logout
omni auth recover1omni auth recover [options]
| Option | Description |
--api-url <url> | API base URL (default: http://localhost:8882) |
--rotate | Generate a new key instead of recovering the existing one |
omni keys create1omni keys create [options]
| Option | Description |
--name <name> | Key name |
--scopes <scopes> | Comma-separated scopes (e.g., messages:read,instances:write) |
--instances <ids> | Comma-separated instance IDs to restrict access |
--description <desc> | Key description |
--rate-limit <n> | Rate limit (requests/minute) |
--expires <date> | Expiration date (ISO 8601) |
1234567891011121314# Full-access key omni keys create --name "admin" --scopes "*" # Scoped read-only key omni keys create \ --name "monitoring" \ --scopes "messages:read,events:read" \ --rate-limit 100 # Instance-restricted key with expiry omni keys create \ --name "temp-access" \ --instances <id1>,<id2> \ --expires 2025-12-31T23:59:59Z
omni keys list1omni keys list [options]
| Option | Description |
--status <status> | Filter by status: active, revoked, expired |
--limit <n> | Max results |
omni keys get1omni keys get <id>
omni keys update1omni keys update <id> [options]
| Option | Description |
--name <name> | New name |
--description <desc> | New description |
--scopes <scopes> | New scopes (comma-separated) |
--instances <ids> | New instance IDs (empty string to unrestrict) |
--rate-limit <n> | New rate limit |
--expires <date> | New expiration (empty string to clear) |
omni keys revoke1omni keys revoke <id> [options]
| Option | Description |
--reason <reason> | Reason for revocation |
omni keys delete1omni keys delete <id>
omni keys delete is irreversible — there is no soft-delete or undo. Prefer omni keys revoke <id> for routine deactivation; revoked keys retain their audit trail and can still appear in omni keys list.omni persons merge and omni persons link rewrite the canonical person identity. Downstream automations keyed on the merged-away personId will start receiving events under the surviving ID — coordinate with anyone who built dashboards or alerts on those IDs before merging.omni keys update <id> --instances "wa-prod,wa-staging". Pass an empty string --instances "" to remove the restriction.