Premium SMS API · 200+ Countries

The SMS API Twilio Wishes It Were

REST + SMPP, signed webhooks, idempotency keys, SDKs for every language. Route through Local Operator for OTP, Local Reseller for marketing — same API, both modes. 1,500+ local interconnects across 200+ countries.

node.js
python
php
curl
// npm install @pragya/sdk import Pragya from '@pragya/sdk'; const pragya = new Pragya({ apiKey: 'pragya_live_...' }); const msg = await pragya.messages.create({ to: '+447911123456', sender: 'PragyaMKT', body: 'Your code is 4821', route: 'local_operator' // or 'local_reseller' }); console.log(msg.id); // → msg_8f3a1c...
# pip install pragya from pragya import Client client = Client(api_key="pragya_live_...") msg = client.messages.create( to="+447911123456", sender="PragyaMKT", body="Your code is 4821", route="local_operator", # or "local_reseller" ) print(msg.id) # → msg_8f3a1c...
// composer require pragya/sdk use Pragya\Client; $pragya = new Client(['api_key' => 'pragya_live_...']); $msg = $pragya->messages->create([ 'to' => '+447911123456', 'sender' => 'PragyaMKT', 'body' => 'Your code is 4821', 'route' => 'local_operator', // or 'local_reseller' ]); echo $msg->id;
curl https://api.arcmarketing.xyz/v1/messages \ -H "Authorization: Bearer pragya_live_..." \ -H "Idempotency-Key: req_8a3..." \ -d '{ "to": "+447911123456", "sender": "PragyaMKT", "body": "Your code is 4821", "route": "local_operator" }' { "id": "msg_8f3a1c...", "status": "queued" }

First SMS in 3 Steps

Real talk: most integrations land in under 30 minutes.

1
Install the SDK

Pick the SDK that matches your stack. Or skip it and hit the REST API directly.

npm install @pragya/sdk
2
Drop in your API key

Grab it from the dashboard. Test keys start with pragya_test_, live with pragya_live_.

PRAGYA_API_KEY=pragya_live_...
3
Send your first message

One call. Idempotent, signed responses, sandbox-friendly. Webhooks fire on delivery.

pragya.messages.create({...})

A Tour of the Surface Area

REST-y, predictable, paginated. Full reference at docs.arcmarketing.xyz.

POST
/v1/messages
Send a single SMS, OTP, or transactional message.
POST
/v1/messages/batch
Send up to 10,000 messages in one call with per-recipient personalisation.
GET
/v1/messages/:id
Retrieve delivery status, segments, and DLR history for a message.
GET
/v1/messages
List messages with filters (status, sender, date range, route).
POST
/v1/otp/send
Generate and send a one-time code with a stored template.
POST
/v1/otp/verify
Verify a code submitted by the end user.
POST
/v1/voice/calls
Trigger a bulk voice broadcast or single IVR call.
POST
/v1/senders
Submit a new sender ID for compliance approval.
GET
/v1/balance
Check current credit balance and recent top-ups.
POST
/v1/webhooks
Register a signed webhook endpoint for DLR and inbound events.

Pick Your Language

All SDKs are open source on GitHub, fully typed, and follow the same idioms as the underlying language.

Node.js
npm install @pragya/sdk
Python
pip install pragya
PHP
composer require pragya/sdk
Go
go get github.com/pragya/sdk-go
.NET / C#
dotnet add package Pragya
Java
com.pragya:sdk:1.x
Ruby
gem install pragya
cURL / HTTP
api.arcmarketing.xyz/v1/...

Webhooks That Don't Lie

Every event is signed, retried with exponential backoff, and idempotent. You'll never miss a DLR, even if your endpoint is down for an hour.

  • HMAC-SHA256 signaturesVerify every payload came from us with the secret from your dashboard.
  • Smart retriesUp to 7 retries over 24 hours with exponential backoff if your endpoint 5xxs.
  • Event typesmessage.delivered, message.failed, otp.verified, sender.approved, balance.low.
  • Replay protectionEach delivery has a unique event_id you can dedupe against.
webhook payload
POST /your-webhook-endpoint X-Pragya-Signature: t=1700000000,v1=a3f... Content-Type: application/json { "event_id": "evt_8a3f...", "type": "message.delivered", "created": 1700000000, "data": { "id": "msg_8f3a...", "to": "+447911123456", "operator": "Vodafone UK", "latency_ms": 1840, "segments": 1 } }

Get Your API Key in 60 Seconds

Free sandbox · 50 live credits · No card required.

Sign Up Free → Talk to Engineering