SMSPorta API
A REST API that sends an SMS through your connected Android device. All requests are HTTPS and authenticated with an API key. Base URL:
Authentication
Every request must include your secret key in the Authorization header as a Bearer token. Create and manage keys from the API Keys page in your dashboard.
/messages
Queue an SMS message for delivery through a connected device. Messages move through queued → dispatched → sent or failed.
curl -X POST https://smsporta.com/api/v1/messages \
-H "Authorization: Bearer smsp_3f9c..." \
-H "Content-Type: application/json" \
-d '{
"to": "+3512345678",
"body": "Hello from SMSPorta"
}'
POST /api/v1/messages HTTP/1.1
Host: smsporta.com
Authorization: Bearer smsp_3f9c...
Content-Type: application/json
{
"to": "+3512345678",
"body": "Hello from SMSPorta"
}
/messages/:id
Fetch a single message you own by its id, including its current status and full body.
curl https://smsporta.com/api/v1/messages/:id \
-H "Authorization: Bearer smsp_3f9c..."
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "uuid",
"status": "sent",
"to": "+3512345678",
"body": "Hello from SMSPorta",
"inserted_at": "2026-06-28T10:00:00Z",
"updated_at": "2026-06-28T10:00:04Z"
}
/messages?page=1&limit=20
List your messages, newest first, with simple page/limit pagination.
curl "https://smsporta.com/api/v1/messages?page=1&limit=20" \
-H "Authorization: Bearer smsp_3f9c..."
HTTP/1.1 200 OK
Content-Type: application/json
{
"data": [
{
"id": "uuid",
"status": "sent",
"to": "+3512345678",
"inserted_at": "2026-06-28T10:00:00Z"
}
],
"page": 1,
"limit": 20,
"total": 1
}
Phones
Register, list and remove the Android devices acting as your SMS gateways. Each device connects over MQTT using credentials issued at registration time.
/phones
Body: { "name": "My Phone" }. The response includes one-time MQTT credentials — mqtt_password is shown only once and cannot be retrieved again.
curl -X POST https://smsporta.com/api/v1/phones \
-H "Authorization: Bearer smsp_3f9c..." \
-H "Content-Type: application/json" \
-d '{ "name": "My Phone" }'
HTTP/1.1 201 Created
Content-Type: application/json
{
"id": "uuid",
"name": "My Phone",
"mqtt_client_id": "phone_8f2c",
"mqtt_username": "phone_8f2c",
"mqtt_password": "shown-once-only",
"mqtt_host": "mqtt.smsporta.com",
"mqtt_port": 8883
}
/phones
List your phones. Credentials are never included here.
curl https://smsporta.com/api/v1/phones \ -H "Authorization: Bearer smsp_3f9c..."
/phones/:id
Remove a phone gateway. Scoped to phones you own.
curl -X DELETE https://smsporta.com/api/v1/phones/:id \ -H "Authorization: Bearer smsp_3f9c..."
/account
GDPR endpoint — permanently deletes your account and all associated data (phones, messages, API keys, tokens).
curl -X DELETE https://smsporta.com/api/v1/account \ -H "Authorization: Bearer smsp_3f9c..."
SMSPorta for Shopify
The SMSPorta app for Shopify sends transactional order SMS — order placed, shipped, delivered and cancelled — straight to your customers' phones. Messages go out through your own Android phone and SIM, the same gateway you already use with SMSPorta, so texts arrive from a real, local number.
Because it uses your own device, there's no shared sender pool, no per-message carrier surcharge from us, and delivery behaves exactly like a text you sent yourself.
Installing the app
Order events
Each event can be turned on or off independently from the app's settings screen inside Shopify.
Message templates
Each event has an editable template. Drop in any of these variables and they're filled in automatically when the text is sent:
Requires Android 7.0 or newer and a phone with an active SIM. You're the sender of record for messages sent through your own device — please follow your local rules on marketing and transactional SMS.