signal-cli-rest-api

signal-cli-rest-api is a wrapper around signal-cli and allows you to interact with it through http requests.

Features

  • register/verify/unregister a number
  • send messages to multiple users/a group with one or multiple attachments
  • receive messages (with attachments)
  • block/unblock users and groups
  • link to existing device
  • list/create/update/leave groups
  • update profile (name/avatar)

To-Do

  • integrate dbus daemon for faster sending
  • authentication

Installation

pip

If you install signal-cli-rest-api through pip you need to manually install signal-cli on your system.

# by default the app will look for the signal config files in ~/.local/share/signal-cli
# you can change the directory by setting the SIGNAL_CONFIG_PATH env var to the desired path
# e.g. export SIGNAL_CONFIG_PATH=/opt/signal
pip install signal-cli-rest-api
uvicorn signal_cli_rest_api.app.main:app --host 0.0.0.0 --port 8000

Docker

export SIGNAL_DATA_DIR=~/signal/
docker run --name signal --restart unless-stopped -p 8000:8000 -v $SIGNAL_DATA_DIR:/root/.local/share/signal-cli sebastiannoelluebke/signal-cli-rest-api

docker-compose

git clone https://github.com/SebastianLuebke/signal-cli-rest-api.git
cd signal-cli-rest-api
# docker-compose build
docker-compose up -d

Security Notice

signal-cli-rest-api doesn’t have any authentication for now. Everyone who knows the service address+port and the number is able to get your messages and send messages. So only use it a trusted environment and block external access.

Interactive Documentation

After installing signal-cli-rest-api start it and open the following page http://localhost:8000/docs

GitHub

https://github.com/SebastianLuebke/signal-cli-rest-api