Quick Start
Get Vendel up and running in 5 minutes.
Choose your path
Vendel Cloud (Recommended)
Start sending SMS in under 2 minutes. No server needed.
- ✓ Free plan included
- ✓ Paid plans from $0.99/mo
Self-hosted
Deploy on your own server with Docker or as a standalone binary.
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
services:
app:
image: ghcr.io/jimscope/vendel:latest
environment:
- ENVIRONMENT=production
- [email protected]
- FIRST_SUPERUSER_PASSWORD=change-this-password
- APP_URL=http://localhost:8090
- FRONTEND_URL=http://localhost:8090
ports:
- "8090:8090"
volumes:
- vendel_data:/app/pb_data
volumes:
vendel_data: 2. Start the service
docker compose up -d This starts Vendel on port 8090, serving both the API and the web dashboard as a single service. Data is stored in an embedded SQLite database.
3. Log in to the dashboard
Open the dashboard at http://localhost:8090 and log in with the superuser credentials you set in the environment variables. You can also access the PocketBase admin panel at http://localhost:8090/_/.
4. Register a device
In the dashboard, go to Devices and click Add Device. Fill in the device name, phone number, and type (Android). A QR code and device API key will be displayed.
5. Connect the Android app
Install the Vendel Android app on your phone:
- Download the APK from GitHub Releases
- Open the app and scan the QR code from the dashboard, or enter the server URL and device API key manually
- Grant SMS permissions when prompted
Your phone is now connected as a gateway device and ready to send messages. See the Android App guide for more details.
6. Create an API key
Back in the dashboard:
- Go to Settings → API Keys
- Click Create API Key
- Copy the key (it won't be shown again)
7. Send your first message
Use your API key to send an SMS:
curl -X POST http://localhost:8090/api/sms/send \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"recipients": ["+1234567890"],
"body": "Hello from Vendel!"
}' You'll get a response like:
{
"batch_id": "",
"message_ids": ["a1b2c3d4e5f6g7h"],
"recipients_count": 1,
"status": "accepted"
} 8. Check message status
View your message in the dashboard, or query its status via the API:
curl http://localhost:8090/api/sms/status/MESSAGE_ID \
-H "X-API-Key: YOUR_API_KEY" Next steps
- Installation - Production deployment guide
- Webhooks - Get delivery notifications
- Nginx Guide - Set up SSL and reverse proxy