Quickstart
From zero to a delivered SMS in five steps. You need a phone number or email to sign in and a Nepal mobile number to send to.
Create a workspace
Sign in at app.smsray.in with your phone number or email — we send you a one-time code, no password needed. Then create a workspace for your company.
Activation
pending. You can create keys and call the GET endpoints straight away, but sending is enabled once Lacspace activates your workspace. Until then, POST requests return 403 workspace_pending.Create an API key
In the dashboard, open Clients and create an API client — one per app or environment works well. Give it a brand name: it appears at the start of every OTP message. You get two secrets, shown once:
ls_live_…— your API key, sent asx-api-key.whsec_…— your webhook signing secret.
Store them in your secret manager or environment, never in client-side code:
export SMSRAY_API_KEY="ls_live_..."Send your first SMS
Send to a Nepal mobile number (98XXXXXXXX, 97… or 96…; a 977 prefix is fine).
curl https://api.smsray.in/api/sms/v1/sms/send \
-H "x-api-key: $SMSRAY_API_KEY" \
-H "content-type: application/json" \
-H "Idempotency-Key: order-1042-shipped" \
-d '{ "to": "9779801234567", "text": "Your order #1042 has shipped." }'You get a messageId back immediately:
{ "success": true, "messageId": "2b1f6c1e-…", "status": "queued", "segments": 1, "cost": 1.0, "encoding": "GSM7", "from": "SMSRay" }Track delivery
The status moves from queued to sent to delivered. Look it up any time:
curl https://api.smsray.in/api/sms/v1/sms/messages/<messageId> \
-H "x-api-key: $SMSRAY_API_KEY"Add a webhook
Polling is fine for testing. In production, set a webhook URL (https://) on your API client and SMSRay will POST a signed message.status event on every change, plus message.inbound when someone replies.