Skip to content
Splashify Pro
Docs

SMS Status

Look up what happened to an SMS you sent, or how far a bulk send has got. Both use the ids the send endpoints return.

For results as they happen, without asking, set up delivery reports instead. These endpoints are for checking one message or one send when you need to.

Headers

Both endpoints use the same headers:

One message

GET

https://api.splashifypro.com/api/v1/public/sms/messages/:message_id

:message_id is the message_id from Send SMS, or from a delivery report. Messages sent with Send bulk SMS have no message_id in the response, so follow those with Bulk progress or delivery reports.

Examples

cURL

bash
curl https://api.splashifypro.com/api/v1/public/sms/messages/3f6c1a52-8d4e-4b7a-9c21-5e0f7a9b1c34 \
  -H "Authorization: Basic YOUR_API_KEY"

Node.js / TypeScript

text
async function smsStatus(messageId: string) {
  const res = await fetch(
    `https://api.splashifypro.com/api/v1/public/sms/messages/${messageId}`,
    { headers: { "Authorization": `Basic ${process.env.SPLASHIFY_API_KEY!}` } },
  );
  const data = await res.json();
  if (!res.ok) throw new Error(`${res.status} ${data.code ?? ""}: ${data.message ?? ""}`);
  return data.status; // queued | sent | delivered | failed | rejected
}

Python

python
import os, requests

def sms_status(message_id: str) -> str:
    r = requests.get(
        f"https://api.splashifypro.com/api/v1/public/sms/messages/{message_id}",
        headers={"Authorization": f"Basic {os.environ['SPLASHIFY_API_KEY']}"},
        timeout=30,
    )
    data = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{r.status_code} {data.get('code')}: {data.get('message')}")
    return data["status"]

Response (200 OK)

json
{
  "success": true,
  "message_id": "3f6c1a52-8d4e-4b7a-9c21-5e0f7a9b1c34",
  "to": "919876543210",
  "dlt_template_id": "1107160000000000001",
  "status": "delivered",
  "error": "",
  "parts": 1,
  "charged": 0.16,
  "created_at": "2026-09-26T10:42:03Z",
  "delivered_at": "2026-09-26T10:42:09Z"
}

Status values

Most SMS show delivered within a few seconds. A phone that is off or out of coverage can keep an SMS at sent for longer.

Bulk progress

GET

https://api.splashifypro.com/api/v1/public/sms/bulk/:bulk_id

:bulk_id is the bulk_id from Send bulk SMS.

bash
curl https://api.splashifypro.com/api/v1/public/sms/bulk/9d2f4b61-1c7e-4a35-8f90-6b3e2d7c5a18 \
  -H "Authorization: Basic YOUR_API_KEY"

Response (200 OK)

json
{
  "success": true,
  "bulk_id": "9d2f4b61-1c7e-4a35-8f90-6b3e2d7c5a18",
  "name": "Order alerts 26 Sep",
  "status": "completed",
  "stop_reason": "",
  "total": 2,
  "sent": 2,
  "delivered": 2,
  "failed": 0,
  "charged": 0.32,
  "created_at": "2026-09-26T10:40:00Z",
  "completed_at": "2026-09-26T10:40:12Z"
}

delivered and failed keep changing for a while after status is completed, as delivery reports come in.

A send shows stopped when it could not finish, for example when your wallet ran out part way. stop_reason says why. Add funds before you send again.

Poll gently: once every 30 seconds is plenty. For each message's result, use delivery reports.

Errors

Errors look like this. Switch on code, and show message to a person:

json
{
  "success": false,
  "code": "not_found",
  "message": "That message does not exist on your account."
}

The checks every Public API request goes through answer the same way as on Send SMS: 401 for a missing or invalid API key, 403 when your plan does not include the Public API, your IP is not on the allowlist or your account is suspended, and 429 over your plan's rate limit.