REST API v1

Build with the SplitSMS API

Send SMS, verify OTPs, manage contacts and campaigns, read wallet balance, and receive webhooks — with sandbox keys for safe testing.

Bulk SMS

Queue & campaigns

OTP

Send & verify

Webhooks

Signed events

quick-start.sh

Base URL

https://splitsms.vercel.app
curl -X POST 'https://splitsms.vercel.app/api/v1/sms/send' \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"sender":"MYBRAND","recipients":["233201234567"],"message":"Hello"}'

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.app

API 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. 1

    Create an API key

    Developers → API Keys. Copy the key once — it is shown only at creation.

  2. 2

    Check balance

    GET https://splitsms.vercel.app/api/v1/balance with your Bearer token.

  3. 3

    Send SMS

    POST https://splitsms.vercel.app/api/v1/sms/send with sender, recipients, and message.

  4. 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 OTP
  • sms.readRead messages, reports, and logs
  • wallet.readRead balance and transactions
  • contacts.readList contacts
  • contacts.writeCreate and update contacts
  • campaigns.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

  1. 1Download splitsms.zip and install via Plugins → Add New → Upload.
  2. 2In WordPress admin, open SplitSMS → Settings. API URL is locked to https://splitsms.vercel.app.
  3. 3Create an API key at App connections (live or sandbox for testing).
  4. 4Paste the key, set Sender ID and admin phone, then click Test connection.
  5. 5Send a test SMS from the plugin header to confirm delivery.
  6. 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

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

Open →

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 key
  • FORBIDDEN403Key lacks required permission
  • INVALID_REQUEST400Bad JSON or validation failed
  • NOT_FOUND404Resource does not exist
  • RATE_LIMITED429Too many requests — slow down
  • INSUFFICIENT_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
Configure in portal →

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",
});
All SDKs →

WordPress & WooCommerce

Official plugin with order notifications, form plugins, and per-event toggles — no custom code required.