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. Connect a device
Install the Vendel Android app on your phone:
- Download the APK from GitHub Releases
-
Open the app and enter your server URL:
http://YOUR_SERVER_IP:8090 - Log in with your credentials
- 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:
- Go to Settings → API Keys
- Click Create API Key
- 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: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:
{
"message_ids": ["a1b2c3d4e5f6g7h"],
"recipients_count": 1,
"status": "accepted"
} 7. Check message status
View your message in the dashboard, or query it via the PocketBase collections API:
curl http://localhost:8090/api/collections/sms_messages/records/MESSAGE_ID \
-H "Authorization: Bearer YOUR_JWT_TOKEN" Next steps
- Installation - Production deployment guide
- Webhooks - Get delivery notifications
- Nginx Guide - Set up SSL and reverse proxy