Quick Start

Get Ender up and running in 5 minutes.

Choose your path

Self-hosted

Deploy on your own server with Docker.

Continue reading below ↓

Self-hosted setup

Prerequisites

  • Docker and Docker Compose installed
  • An Android phone with a SIM card (or USB modem)

1. Create a docker-compose.yml

docker-compose.yml
services:
  backend:
    image: ghcr.io/ender-sms/backend:latest
    environment:
      - DATABASE_URL=postgresql://postgres:postgres@db:5432/ender
      - SECRET_KEY=change-this-to-a-random-string
    ports:
      - "8000:8000"
    depends_on:
      - db

  frontend:
    image: ghcr.io/ender-sms/frontend:latest
    ports:
      - "5173:80"

  db:
    image: postgres:17
    environment:
      - POSTGRES_DB=ender
      - POSTGRES_PASSWORD=postgres
    volumes:
      - postgres_data:/var/lib/postgresql/data

volumes:
  postgres_data:

2. Start the services

docker compose up -d

This starts:

  • Ender API server on port 8000
  • Web dashboard on port 5173
  • PostgreSQL database

3. Register an account

Open the dashboard at http://localhost:5173 and create your account.

4. Connect a device

Install the Ender Android app on your phone:

  1. Download the APK from GitHub Releases
  2. Open the app and enter your server URL: http://YOUR_SERVER_IP:8000
  3. Log in with your credentials
  4. Grant SMS permissions when prompted

Your phone is now registered as a device and ready to send messages.

5. Create an API key

Back in the dashboard:

  1. Go to Settings → API Keys
  2. Click Create API Key
  3. Copy the key (it won't be shown again)

6. Send your first message

Use your API key to send an SMS:

curl -X POST http://localhost:8000/api/v1/sms \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+1234567890",
    "message": "Hello from Ender!"
  }'

You'll get a response like:

{
  "id": "msg_abc123",
  "status": "queued",
  "to": "+1234567890",
  "message": "Hello from Ender!",
  "device_id": "dev_xyz789",
  "created_at": "2024-01-15T10:30:00Z"
}

7. Check message status

curl http://localhost:8000/api/v1/sms/msg_abc123 \
  -H "Authorization: Bearer YOUR_API_KEY"

Next steps