SplitSMS REST API
All API traffic goes through a single production base URL. Create API keys in the developer portal, use sk_test_ keys for sandbox testing, and connect WordPress with the official plugin — no third-party SMS gateways.
Production base URL
https://splitsms.vercel.appAPI prefix: https://splitsms.vercel.app/api/v1
Bearer auth
Authorization header
Wallet + credits
Pay-as-you-go
Webhooks
HMAC-signed events
Quick start (API)
- 1
Create an API key
Developers → API Keys. Copy the key once — it is shown only at creation.
- 2
Check balance
GET https://splitsms.vercel.app/api/v1/balance with your Bearer token.
- 3
Send SMS
POST https://splitsms.vercel.app/api/v1/sms/send with sender, recipients, and message.
- 4
Add webhooks
Receive delivery events at your HTTPS endpoint.
First request
curl -X GET 'https://splitsms.vercel.app/api/v1/balance' \ -H "Authorization: Bearer YOUR_API_KEY"
Authentication & permissions
Every request must include Authorization: Bearer <api_key>. Keys are scoped with permissions at creation time. Missing permission returns 403 FORBIDDEN.
sms.sendSend SMS and OTPsms.readRead messages, reports, and logswallet.readRead balance and transactionscontacts.readList contactscontacts.writeCreate and update contactscampaigns.readRead campaign status
Sandbox keys (sk_test_) validate requests but do not charge credits or send live SMS.
Connect WordPress
The free SplitSMS for WordPress plugin connects only to https://splitsms.vercel.app. Install on any WordPress 6+ site, paste your API key, and enable WooCommerce or form notifications in under three minutes.
Setup steps
- 1Download splitsms.zip and install via Plugins → Add New → Upload.
- 2In WordPress admin, open SplitSMS → Settings. API URL is locked to https://splitsms.vercel.app.
- 3Create an API key at App connections (live or sandbox for testing).
- 4Paste the key, set Sender ID and admin phone, then click Test connection.
- 5Send a test SMS from the plugin header to confirm delivery.
- 6Enable WooCommerce, Contact Form 7, or WPForms under SplitSMS → Integrations.
What the plugin does
- •Shows SMS balance and wallet funds in the admin header
- •WooCommerce: order placed, payment, processing, completed, cancelled
- •WordPress: new user registration, optional password-reset SMS
- •CF7 & WPForms: SMS after successful form submit
- •Local logs + sync to your SplitSMS dashboard
- •Auto-updates from https://splitsms.vercel.app/api/plugin/update
Plugin → API calls
POST https://splitsms.vercel.app/api/v1/wordpress/connect # on save key GET https://splitsms.vercel.app/api/v1/account/status # dashboard header POST https://splitsms.vercel.app/api/v1/sms/send # all outbound SMS POST https://splitsms.vercel.app/api/v1/wordpress/logs # event sync
WooCommerce template placeholders
Use these in message templates under Integrations: {customer_name} {order_id} {order_total} {order_status} {payment_method} {site_name}. SMS is sent to the order billing phone.
Official SDKs
JavaScript / TypeScript
npm install @splitsms/sdkView docs →
PHP
composer require splitsms/sdkView docs →
Flutter
splitsms_flutterView docs →
import { SplitSMS } from "@splitsms/sdk";
const client = new SplitSMS({
apiKey: process.env.SPLITSMS_API_KEY,
baseUrl: "https://splitsms.vercel.app",
});
await client.messages.send({
sender: "MYBRAND",
recipients: ["233201234567"],
message: "Hello from SplitSMS",
});API reference
All cURL examples use https://splitsms.vercel.app
Import the Postman collection
baseUrl preset to https://splitsms.vercel.app
Authentication
Send your API key in the Authorization header on every request. Use sk_test_ keys for sandbox (no real SMS charges).
Base URL
https://splitsms.vercel.app
Header
Authorization: Bearer YOUR_API_KEY
SMS
Send messages and check delivery status.
Error responses
All errors return { "success": false, "error": { "code", "message" } }
UNAUTHORIZED401Missing or invalid API keyFORBIDDEN403Key lacks required permissionINVALID_REQUEST400Bad JSON or validation failedNOT_FOUND404Resource does not existRATE_LIMITED429Too many requests — slow downINSUFFICIENT_CREDITS402Not enough SMS credits
Webhooks
Receive signed POST callbacks. Verify with X-SplitSMS-Signature (HMAC-SHA256). Retries: 1m → 5m → 30m → 2h.
- message.sent
- message.delivered
- message.failed
- campaign.completed
- wallet.low_balance
Rate limits
Per API key, configurable at creation. Check X-RateLimit-Remaining.
- Free10 req/min
- Standard100 req/min
- Enterprise1000 req/min
JavaScript SDK
npm install @splitsms/sdk
import { SplitSMS } from "@splitsms/sdk";
const sms = new SplitSMS({
apiKey: process.env.SPLITSMS_API_KEY,
baseUrl: "https://splitsms.vercel.app",
});
await sms.messages.send({
sender: "MYBRAND",
recipients: ["233201234567"],
message: "Hello",
});WordPress & WooCommerce
Official plugin with order notifications, form plugins, and per-event toggles — no custom code required.