SMS Balance 0
Total Sent 0
Contacts 0
Sender IDs 0

SMS Activity (Last 7 Days)

Delivery Status

Recent Messages

View All
Recipient Message Status Date
No messages yet
Tanzania format: 2557XXXXXXXX
0 / 160 characters 1 SMS

Quick Stats

Available Balance 0
Recipients 0
Estimated Cost 0 SMS
Recipient Message Sender ID Status Date
Loading...
Name Phone Number Created Actions
Loading...

No groups yet

Current Balance 0 SMS
Starter
100 SMS
TZS 5,000
TZS 50/SMS
Professional
1,000 SMS
TZS 40,000
TZS 40/SMS
Enterprise
5,000 SMS
TZS 175,000
TZS 35/SMS

Custom Amount

Sender ID Purpose Status Requested Date
Loading...

API keys allow you to integrate SMS functionality into your applications. Keep your keys secure and never share them publicly.

Name Key Created Last Used Status Actions
Loading...

Introduction

The TAPSA SMS API allows you to send SMS messages programmatically from your applications. This RESTful API uses JSON for request and response bodies.

Base URL
https://api.smstapsa.site

Authentication

All API requests require authentication using an API key. Include your API key in the request header:

Header
x-api-key: your_api_key_here

Generate your API key from the API Keys page.

Send SMS

Send SMS messages to one or multiple recipients.

POST /v1/sms/send

Request Body

JSON
{
  "phoneNumbers": ["255712345678", "255787654321"],
  "message": "Hello from TAPSA SMS!",
  "senderId": "TAPSA"
}

Response

JSON
{
  "success": true,
  "message": "SMS sent successfully",
  "data": {
    "messageId": "msg_abc123",
    "recipients": 2,
    "cost": 2
  }
}

Code Examples

cURL
curl -X POST https://api.smstapsa.site/v1/sms/send \
  -H "Content-Type: application/json" \
  -H "x-api-key: your_api_key" \
  -d '{
    "phoneNumbers": ["255712345678"],
    "message": "Hello from TAPSA!",
    "senderId": "TAPSA"
  }'
JavaScript (Fetch)
const response = await fetch('https://api.smstapsa.site/v1/sms/send', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'x-api-key': 'your_api_key'
  },
  body: JSON.stringify({
    phoneNumbers: ['255712345678'],
    message: 'Hello from TAPSA!',
    senderId: 'TAPSA'
  })
});

const data = await response.json();
console.log(data);
Python (Requests)
import requests

url = "https://api.smstapsa.site/v1/sms/send"
headers = {
    "Content-Type": "application/json",
    "x-api-key": "your_api_key"
}
payload = {
    "phoneNumbers": ["255712345678"],
    "message": "Hello from TAPSA!",
    "senderId": "TAPSA"
}

response = requests.post(url, json=payload, headers=headers)
print(response.json())
PHP
<?php
$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => "https://api.smstapsa.site/v1/sms/send",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => [
        "Content-Type: application/json",
        "x-api-key: your_api_key"
    ],
    CURLOPT_POSTFIELDS => json_encode([
        "phoneNumbers" => ["255712345678"],
        "message" => "Hello from TAPSA!",
        "senderId" => "TAPSA"
    ])
]);

$response = curl_exec($curl);
curl_close($curl);
echo $response;

Check Balance

Retrieve your current SMS balance.

GET /v1/account/balance

Response

JSON
{
  "success": true,
  "data": {
    "balance": 1500,
    "currency": "SMS"
  }
}

Error Codes

Code Description
400 Bad Request - Invalid parameters
401 Unauthorized - Invalid or missing API key
402 Payment Required - Insufficient balance
403 Forbidden - Sender ID not approved
429 Too Many Requests - Rate limit exceeded
500 Internal Server Error
Pending 0
Approved 0
Rejected 0
User Sender ID Purpose Status Date Actions
Loading...

User Name

user@email.com

0 SMS Balance
0 Total Sent
0 Contacts

Update Profile

Change Password