:quotes.~:
= signal-cli (1)
+:doctype: manpage
== Name
For some functionality the Signal protocol requires that all messages have been received from the server.
The `receive` command should be regularly executed.
-In daemon mode messages are continuously received.
+In daemon mode messages are by default continuously received.
== Options
*-h*, *--help*::
Show help message and quit.
-*-v*, *--version*::
+*--version*::
Print the version and quit.
-*--verbose*::
+*-v*, *--verbose*::
Raise log level and include lib signal logs.
*--log-file* LOG_FILE::
Write log output to the given file.
If `--verbose` is also given, the detailed logs will only be written to the log file.
+*--scrub-log*::
+Scrub possibly sensitive information from the log, like phone numbers and UUIDs.
+Doesn't work reliably on dbus logs with very verbose logging (`-vvv`)
+
*--config* CONFIG::
Set the path, where to store the config.
Make sure you have full read/write access to the given directory.
*--dbus-system*::
Make request via system dbus.
+*--bus-name*::
+Connect to another D-Bus bus name than the default.
+
*-o* OUTPUT-MODE, *--output* OUTPUT-MODE::
Specify if you want commands to output in either "plain-text" mode or in "json".
Defaults to "plain-text"
- `always`: Trust any new identity key without verification
- `never`: Don't trust any unknown identity key, every key must be verified manually
+*--disable-send-log*::
+Disable message send log (for resending messages that recipient couldn't decrypt).
+
== Commands
=== register
*-v*, *--voice*::
The verification should be done over voice, not SMS.
+Voice verification only works if an SMS verification has been attempted before.
*--captcha*::
The captcha token, required if registration failed with a captcha required error.
To get the token, go to https://signalcaptchas.org/registration/generate.html
For the staging environment, use: https://signalcaptchas.org/staging/registration/generate.html
-Check the developer tools for a redirect starting with signalcaptcha:// Everything after signalcaptcha:// is the captcha token.
+After solving the captcha, right-click on the "Open Signal" link and copy the link.
=== verify
=== unregister
Disable push support for this device, i.e. this device won't receive any more messages.
-If this is the master device, other users can't send messages to this number anymore.
+If this is the primary device, other users can't send messages to this number anymore.
Use "updateAccount" to undo this.
-To remove a linked device, use "removeDevice" from the master device.
+To remove a linked device, use "removeDevice" from the primary device.
*--delete-account*::
Delete account completely from server.
Can fix problems with receiving messages.
*-n* NAME, *--device-name* NAME::
-Set a new device name for the main or linked device
+Set a new device name for the primary or linked device
+
+*--unrestricted-unidentified-sender* {true,false}::
+Enable if anyone should be able to send you unidentified sender messages.
+
+*--discoverable-by-number* {true,false}::
+Enable/disable if the account should be discoverable by phone number
+
+*--number-sharing* {true,false}::
+Indicates if Signal should share its phone number when sending a message.
+
+=== startChangeNumber
+
+Change an account to a new phone number with SMS or voice verification.
+Use the finishChangeNumber command to complete the verification.
+
+NUMBER::
+The new phone number.
+
+*-v*, *--voice*::
+The verification should be done over voice, not SMS.
+Voice verification only works if an SMS verification has been attempted before.
+
+*--captcha*::
+The captcha token, required if registration failed with a captcha required error.
+To get the token, go to https://signalcaptchas.org/registration/generate.html
+For the staging environment, use: https://signalcaptchas.org/staging/registration/generate.html
+After solving the captcha, right-click on the "Open Signal" link and copy the link.
+
+=== finishChangeNumber
+
+Verify the number using the code received via SMS or voice.
+
+NUMBER::
+The new phone number.
+
+*-v*, *--verification-code*::
+The verification code.
+
+*-p* PIN, *--pin* PIN::
+The registration lock PIN, that was set by the user.
+Only required if a PIN was set.
=== updateConfiguration
Update signal configs and sync them to linked devices.
-This command only works on the main devices.
+This command only works on the primary devices.
*--read-receipts* {true,false}::
Indicates if Signal should send read receipts.
=== addDevice
Link another device to this device.
-Only works, if this is the master device.
+Only works, if this is the primary device.
*--uri* URI::
Specify the uri contained in the QR code shown by the new device.
=== removeDevice
Remove a linked device.
-Only works, if this is the master device.
+Only works, if this is the primary device.
*-d* DEVICE_ID, *--device-id* DEVICE_ID::
Specify the device you want to remove.
*-m* MESSAGE, *--message* MESSAGE::
Specify the message.
-Currently, signal-cli reads the message from stdin if `-m` is missing, but this will change in a future version and the explicit flag `--message-from-stdin` should be used instead.
*--message-from-stdin*::
Read the message from standard input.
*-a* [ATTACHMENT [ATTACHMENT ...]], *--attachment* [ATTACHMENT [ATTACHMENT ...]]::
Add one or more files as attachment.
+Can be either a file path or a data URI.
+Data URI encoded attachments must follow the RFC 2397.
+Additionally a file name can be added:
+e.g.: `data:<MIME-TYPE>;filename=<FILENAME>;base64,<BASE64 ENCODED DATA>`
*--sticker* STICKER::
Send a sticker of a locally known sticker pack (syntax: stickerPackId:stickerId).
Mention another group member (syntax: start:length:recipientNumber) In the apps the mention replaces part of the message text, which is specified by the start and length values.
e.g.: `-m "Hi X!" --mention "3:1:+123456789"`
+*--text-style*::
+Style parts of the message text (syntax: start:length:STYLE).
+Where STYLE is one of: BOLD, ITALIC, SPOILER, STRIKETHROUGH, MONOSPACE
+
+e.g.: `-m "Something BIG!" --text-style "10:3:BOLD"` or for a mixed text style `-m "Something BIG!" --text-style "0:9:ITALIC" "10:3:BOLD"`
+
*--quote-timestamp*::
Specify the timestamp of a previous message with the recipient or group to add a quote to the new message.
*--quote-mention*::
Specify the mentions of the original message (same format as `--mention`).
+*--quote-text-style*::
+Style parts of the original message text (same format as `--text-style`).
+
+*--quote-attachment*::
+Specify the attachments of the original message (syntax: contentType[:filename[:previewFile]]), e.g. 'audio/aac' or 'image/png:test.png:/tmp/preview.jpg'.
+
+*--preview-url*::
+Specify the url for the link preview.
+The same url must also appear in the message body, otherwise the preview won't be displayed by the apps.
+
+*--preview-title*::
+Specify the title for the link preview (mandatory).
+
+*--preview-description*::
+Specify the description for the link preview (optional).
+
+*--preview-image*::
+Specify the image file for the link preview (optional).
+
+*--story-timestamp*::
+Specify the timestamp of a story to reply to.
+
+*--story-author*::
+Specify the number of the author of the story.
+
*-e*, *--end-session*::
Clear session state and send end session message.
+*--edit-timestamp*::
+Specify the timestamp of a previous message with the recipient or group to send an edited message.
+
+=== sendMessageRequestResponse
+
+Send response to a message request to linked devices.
+
+RECIPIENT::
+Specify the recipients’ phone number.
+
+*-g* GROUP, *--group-id* GROUP::
+Specify the recipient group ID in base64 encoding.
+
+*--type* TYPE::
+Type of message request response (accept, delete)
+
+=== sendPaymentNotification
+
+Send a payment notification.
+
+RECIPIENT::
+Specify the recipient’s phone number.
+
+*--receipt* RECEIPT::
+The base64 encoded receipt blob.
+
+*--note* NOTE::
+Specify a note for the payment notification.
+
=== sendReaction
Send reaction to a previously received or sent message.
*-r*, *--remove*::
Remove a reaction.
+*--story*::
+React to a story instead of a normal message
+
=== sendReceipt
Send a read or viewed receipt to a previously received message.
*-t* TIMEOUT, *--timeout* TIMEOUT::
Number of seconds to wait for new messages (negative values disable timeout).
Default is 5 seconds.
+
+*--max-messages*::
+Maximum number of messages to receive, before returning.
+
*--ignore-attachments*::
Don’t download attachments of received messages.
+*--ignore-stories*::
+Don’t receive story messages from the server.
+
+
+*--send-read-receipts*::
+Send read receipts for all incoming data messages (in addition to the default delivery receipts)
+
=== joinGroup
Join a group via an invitation link.
*-d*, *--detailed*::
Include the list of members of each group and the group invite link.
+*-g*, *--group-id*::
+Filter the group list by one or more group IDs.
+
=== listContacts
-Show a list of known contacts with names.
+Show a list of known contacts with names and profiles.
+When a specific recipient is given, its profile will be refreshed.
+
+RECIPIENT::
+Specify the recipients’ phone number.
+
+*-a*, *--all-recipients*::
+Include all known recipients, not only contacts.
+
+*--blocked*::
+Specify if only blocked or unblocked contacts should be shown (default: all contacts)
+
+*--name*::
+Find contacts with the given contact or profile name.
=== listIdentities
*--remove-avatar*::
Remove the avatar
+*--mobile-coin-address*::
+New MobileCoin address (Base64 encoded public address)
+
=== updateContact
Update the info associated to a number on our contact list.
NUMBER::
Specify the contact phone number.
-*-n*, *--name*::
-Specify the new name for this contact.
+*--given-name* NAME, *--name* NAME::
+New (given) name.
+
+*--family-name* FAMILY_NAME::
+New family name.
*-e*, *--expiration* EXPIRATION_SECONDS::
Set expiration time of messages (seconds).
NUMBER::
Specify the contact phone number.
+*--hide*::
+Hide the contact in the contact list, but keep the data.
+
*--forget*::
Delete all data associated with this contact, including identity keys and sessions.
=== sendContacts
Send a synchronization message with the local contacts list to all linked devices.
-This command should only be used if this is the master device.
+This command should only be used if this is the primary device.
=== sendSyncRequest
-Send a synchronization request message to the master device (for group, contacts, ...).
-The master device will respond with synchronization messages with full contact and group lists.
+Send a synchronization request message to the primary device (for group, contacts, ...).
+The primary device will respond with synchronization messages with full contact and group lists.
=== uploadStickerPack
-Upload a new sticker pack, consisting of a manifest file and the sticker images.
+Upload a new sticker pack, consisting of a manifest file and the sticker images. +
Images must conform to the following specification: (see https://support.signal.org/hc/en-us/articles/360031836512-Stickers#sticker_reqs )
- Static stickers in PNG or WebP format
PATH::
The path of the manifest.json or a zip file containing the sticker pack you wish to upload.
-=== daemon
+=== listStickerPacks
-signal-cli can run in daemon mode and provides an experimental dbus or JSON-RPC interface.
-If no `-a` account is given, all local accounts will be exported as separate dbus objects under the same bus name.
+Show a list of known sticker packs.
-*--dbus*::
-Export DBus interface on user bus.
-See signal-cli-dbus (5) for info on the dbus interface.
+=== addStickerPack
-*--dbus-system*::
-Export DBus interface on system bus.
-See signal-cli-dbus (5) for info on the dbus interface.
+Install a sticker pack for this account.
+
+*--uri* [URI]::
+Specify the uri of the sticker pack.
+e.g. https://signal.art/addstickers/#pack_id=XXX&pack_key=XXX
+
+=== getAttachment
+
+Gets the raw data for a specified attachment.
+This is done using the ID of the attachment the recipient or group ID.
+The attachment data is returned as a Base64 String.
+
+*--id* [ID]::
+The ID of the attachment as given in the attachment list of the message.
+
+*--recipient* [RECIPIENT]::
+Specify the number which sent the attachment.
+Referred to generally as recipient.
+
+*-g* [GROUP], *--group-id* [GROUP]::
+Alternatively, specify the group IDs for which to get the attachment.
+
+=== getAvatar
+
+Gets the raw data for a specified contact, contact's profile or group avatar.
+The attachment data is returned as a Base64 String.
+
+*--contact* [RECIPIENT]::
+Specify the number of a recipient.
+
+*--profile* [RECIPIENT]::
+Specify the number of a recipient.
+
+*-g* [GROUP], *--group-id* [GROUP]::
+Alternatively, specify the group ID for which to get the avatar.
+
+=== getSticker
+
+Gets the raw data for a specified sticker.
+The attachment data is returned as a Base64 String.
+
+*--pack-id* [PACK_ID]::
+Specify the id of a sticker pack (hex encoded).
+
+*--sticker-id* [STICKER_ID]::
+Specify the index of a sticker in the sticker pack.
+
+=== daemon
+
+signal-cli can run in daemon mode and provides JSON-RPC or an experimental dbus interface.
+If no `-a` account is given, all local accounts will be loaded.
+Multiple interfaces can be used at the same time, e.g. `daemon --socket --dbus`
*--socket [SOCKET]*::
-Export a JSON-RPC interface on a UNIX socket (default $XDG_RUNTIME_DIR/signal-cli/socket).
-See signal-cli-jsonrpc (5) for info on the JSON-RPC interface.
+Export a JSON-RPC interface on a UNIX socket (default $XDG_RUNTIME_DIR/signal-cli/socket). +
+See **signal-cli-jsonrpc**(5) for info on the JSON-RPC interface.
*--tcp [HOST:PORT]*::
-Export a JSON-RPC interface on a TCP socket (default localhost:7583).
-See signal-cli-jsonrpc (5) for info on the JSON-RPC interface.
+Export a JSON-RPC interface on a TCP socket (default localhost:7583). +
+See **signal-cli-jsonrpc**(5) for info on the JSON-RPC interface.
+
+*--http [HOST:PORT]*::
+Expose a JSON-RPC interface as http endpoint (default localhost:8080).
+The JSON-RPC endpoint is `/api/v1/rpc`. +
+See **signal-cli-jsonrpc**(5) for info on the JSON-RPC interface.
+
+*--dbus*::
+Export DBus interface on user bus. +
+See **signal-cli-dbus**(5) for info on the dbus interface.
+
+*--dbus-system*::
+Export DBus interface on system bus. +
+See **signal-cli-dbus**(5) for info on the dbus interface.
+
+*--bus-name*::
+Claim another D-Bus bus name than the default.
*--ignore-attachments*::
Don’t download attachments of received messages.
+*--ignore-stories*::
+Don’t receive story messages from the server.
+
+*--send-read-receipts*::
+Send read receipts for all incoming data messages (in addition to the default delivery receipts)
+
*--no-receive-stdout*::
Don’t print received messages to stdout.
*--receive-mode*::
Specify when to start receiving messages (on-start, on-connection, manual)
+=== jsonRpc
+
+Run in signal-cli in JSON-RPC mode.
+Reads JSON-RPC requests on stdin and responds on stdout.
+See **signal-cli-jsonrpc**(5) for info on the JSON-RPC interface.
+
+*--ignore-attachments*::
+Don’t download attachments of received messages.
+
+*--ignore-stories*::
+Don’t receive story messages from the server.
+
+*--send-read-receipts*::
+Send read receipts for all incoming data messages (in addition to the default delivery receipts)
+
+*--receive-mode*::
+Specify when to start receiving messages (on-start, manual)
+
+=== submitRateLimitChallenge
+
+When running into rate limits, sometimes the limit can be lifted, by solving a CAPTCHA.
+To get the captcha token, go to https://signalcaptchas.org/challenge/generate.html
+For the staging environment, use: https://signalcaptchas.org/staging/registration/generate.html
+
+*--challenge* CHALLENGE_TOKEN::
+The challenge token from the failed send attempt.
+
+*--captcha* CAPTCHA::
+The captcha result, starting with signalcaptcha://
+
== Examples
Register a number (with SMS verification)::
* *2*: Some unexpected error
* *3*: Server or IO error
* *4*: Sending failed due to untrusted key
+* *5*: Server rate limiting error
== Files