Bulk SMS APITry SMSSign in

Communicate · SMS

Bulk SMS API & user manuals

Connect your product to the SILABI SMS gateway, or learn the web panel step by step. Every endpoint ships with copyable cURL, JavaScript, PHP and Python examples.

https://api.silabi.co.tz/v1/smsGet started

Introduction

Overview

The SILABI SMS gateway delivers bulk and transactional messages across mobile networks in Tanzania and beyond, through one JSON HTTP API and a web control panel.

  • Two-way messaging with routing based on origination or termination
  • Network-operator based billing (MCC/MNC) with rate management
  • Web control panel with CSV/Excel bulk upload and contact management
  • Detailed delivery analytics for both outbound and inbound traffic

Every endpoint shares the base URL https://api.silabi.co.tz/v1/sms and accepts and returns JSON.

Introduction

Getting started

  1. 1Create a SILABI account and ask your account manager to activate the SMS plugin.
  2. 2Open the web panel and go to Settings, then API keys, to copy your ApiKey, ClientId and AccessKey.
  3. 3Register and get approval for at least one Sender ID before sending live traffic.
  4. 4Test your integration against the balance endpoint, then send your first message.

Placeholders in the code samples on this page — {{API_KEY}}, {{CLIENT_ID}} and {{ACCESS_KEY}} — are replaced with the values from your own account.

Introduction

Authentication

Every request is authenticated with your ApiKey and ClientId, passed URL-encoded for GET requests or in the JSON body for POST requests. An AccessKey header is also required.

ParameterDescriptionType
ApiKeyUsed for authentication. Pass in URL-encoded format.String
ClientIdUsed for authentication. Pass in URL-encoded format.String

Headers

HeaderValue
Content-Typeapplication/json
AccessKey{{ACCESS_KEY}}

Keep your keys on the server. Never expose them in browser or mobile app code, and rotate them from the panel if they leak.

HTTP API

Sending SMS

Send one or many messages with an HTTP POST request.

POSThttps://api.silabi.co.tz/v1/sms/SendSMS
cURL
curl -X POST "https://api.silabi.co.tz/v1/sms/SendSMS" \
  -H "Content-Type: application/json" \
  -H "AccessKey: {{ACCESS_KEY}}" \
  -d '{"ApiKey":"{{API_KEY}}","ClientId":"{{CLIENT_ID}}","SenderId":"SILABI","Message":"Karibu SILABI. Your code is 4821.","MobileNumbers":"255700000001,255700000002","Is_Unicode":false,"Is_Flash":false}'
ParameterDescriptionType
SenderIdApproved sender name or short code shown to the recipient.String
MessageMessage body. Long messages are split into multiple parts.String
MobileNumbersComma separated numbers in international format, e.g. 255700000001.String
Is_Unicodetrue for non-GSM characters such as Swahili accents or emoji.Boolean
Is_Flashtrue to send as a flash message.Boolean
ScheduleTimeOptional delivery time, format yyyy-MM-dd HH:mm.String
GroupIdOptional contact group to send to instead of MobileNumbers.String

Successful response

json
{
  "ErrorCode": 0,
  "ErrorDescription": "Success",
  "Data": [
    {
      "MobileNumber": "255700000001",
      "MessageId": "9f1c8a7e-2c2f-4a1b-9c62-5f8a0f6e1b22",
      "MessageErrorCode": 0,
      "MessageErrorDescription": "Success"
    }
  ]
}

HTTP API

Checking account balance

To check remaining credits, send an HTTP GET request to the balance endpoint.

GEThttps://api.silabi.co.tz/v1/sms/Balance
cURL
curl -X GET "https://api.silabi.co.tz/v1/sms/Balance?ApiKey=%7B%7BAPI_KEY%7D%7D&ClientId=%7B%7BCLIENT_ID%7D%7D" \
  -H "Content-Type: application/json" \
  -H "AccessKey: {{ACCESS_KEY}}"
ParameterDescriptionType
ApiKeyUsed for authentication. Pass in URL-encoded format.String
ClientIdUsed for authentication. Pass in URL-encoded format.String

HTTP response

json
{
  "ErrorCode": 0,
  "ErrorDescription": "Success",
  "Data": [
    {
      "PluginType": "SMS",
      "Credits": "TZS 1258400.0000"
    }
  ]
}

HTTP API

Delivery reports

Query the status of a sent message, or receive status updates automatically on a callback URL configured in the web panel.

GEThttps://api.silabi.co.tz/v1/sms/GetDLR
cURL
curl -X GET "https://api.silabi.co.tz/v1/sms/GetDLR?ApiKey=%7B%7BAPI_KEY%7D%7D&ClientId=%7B%7BCLIENT_ID%7D%7D&MessageId=9f1c8a7e-2c2f-4a1b-9c62-5f8a0f6e1b22" \
  -H "Content-Type: application/json" \
  -H "AccessKey: {{ACCESS_KEY}}"
ParameterDescriptionType
MessageIdIdentifier returned by the SendSMS response.String
start / endOptional date range, format yyyy-MM-dd.String

Callback payload

json
{
  "MessageId": "9f1c8a7e-2c2f-4a1b-9c62-5f8a0f6e1b22",
  "MobileNumber": "255700000001",
  "Status": "DELIVRD",
  "SubmitDate": "2026-09-18 10:04:12",
  "DoneDate": "2026-09-18 10:04:15"
}
StatusMeaning
DELIVRDMessage delivered to the handset.
SENTAccepted by the operator, awaiting final report.
EXPIREDValidity period passed before delivery.
UNDELIVOperator could not deliver the message.
REJECTDRejected, usually an unapproved sender ID or blocked number.

HTTP API

Error codes

Every response carries an ErrorCode and ErrorDescription. Zero means success.

ErrorCodeDescriptionWhat to do
0SuccessNo action needed.
101Invalid ApiKey or ClientIdRe-copy your keys from the web panel.
102Account inactive or suspendedContact SILABI support.
103Insufficient creditsTop up your account balance.
104Sender ID not approvedRequest approval before sending.
105Invalid mobile numberUse international format, e.g. 255700000001.
106Message body empty or too longCheck the message content.
500Internal gateway errorRetry with backoff, then contact support.

Contacts & groups

Contact groups

Create and list groups so campaigns can target saved audiences.

POSThttps://api.silabi.co.tz/v1/sms/Groups
cURL
curl -X POST "https://api.silabi.co.tz/v1/sms/Groups" \
  -H "Content-Type: application/json" \
  -H "AccessKey: {{ACCESS_KEY}}" \
  -d '{"ApiKey":"{{API_KEY}}","ClientId":"{{CLIENT_ID}}","GroupName":"Customers-Dar"}'
ParameterDescriptionType
GroupNameName of the group, e.g. Customers-Dar.String
GroupIdIdentifier returned on creation, used when sending.String

Listing groups

GEThttps://api.silabi.co.tz/v1/sms/Groups
cURL
curl -X GET "https://api.silabi.co.tz/v1/sms/Groups?ApiKey=%7B%7BAPI_KEY%7D%7D&ClientId=%7B%7BCLIENT_ID%7D%7D" \
  -H "Content-Type: application/json" \
  -H "AccessKey: {{ACCESS_KEY}}"
json
{
  "ErrorCode": 0,
  "ErrorDescription": "Success",
  "Data": [
    { "GroupId": "12045", "GroupName": "Customers-Dar", "ContactCount": 3820 }
  ]
}

Contacts & groups

Contacts and bulk upload

Add contacts one by one through the API, or upload them in bulk from the panel.

POSThttps://api.silabi.co.tz/v1/sms/Contacts
cURL
curl -X POST "https://api.silabi.co.tz/v1/sms/Contacts" \
  -H "Content-Type: application/json" \
  -H "AccessKey: {{ACCESS_KEY}}" \
  -d '{"ApiKey":"{{API_KEY}}","ClientId":"{{CLIENT_ID}}","GroupId":"12045","MobileNumber":"255700000001","FirstName":"Amina","LastName":"Juma"}'

CSV or Excel upload

In the panel, go to Contacts then Import and upload a CSV or Excel file with these columns in the first row.

csv
MobileNumber,FirstName,LastName
255700000001,Amina,Juma
255700000002,Baraka,Msolla

Numbers must be in international format without a plus sign or spaces. Duplicates within a group are skipped automatically.

Sender ID & templates

Sender ID request

A Sender ID is the name recipients see. It must be registered and approved by the mobile operators before any live traffic is allowed.

  1. 1In the panel, open Sender IDs then Request new and enter the name, up to 11 characters, no spaces.
  2. 2Upload a company registration certificate and a signed request letter.
  3. 3Describe the message use case, for example transactional alerts or marketing.
  4. 4Approval usually takes 2 to 5 working days; the status turns Approved when ready.
FieldRule
LengthMaximum 11 alphanumeric characters.
CharactersLetters and digits only, no spaces or symbols.
OwnershipMust relate to your registered business name or brand.

Sender ID & templates

Message templates

Templates store approved message bodies with placeholders, which keeps transactional traffic consistent and faster to approve.

text
Hello {FirstName}, your SILABI balance is {Amount} TZS as of {Date}.
POSThttps://api.silabi.co.tz/v1/sms/Templates
cURL
curl -X POST "https://api.silabi.co.tz/v1/sms/Templates" \
  -H "Content-Type: application/json" \
  -H "AccessKey: {{ACCESS_KEY}}" \
  -d '{"ApiKey":"{{API_KEY}}","ClientId":"{{CLIENT_ID}}","TemplateName":"balance-alert","Template":"Hello {FirstName}, your SILABI balance is {Amount} TZS as of {Date}."}'
ParameterDescriptionType
TemplateNameInternal name for the template.String
TemplateMessage body containing {Placeholder} tokens.String
TemplateIdReturned on creation, can be used when sending.String

Placeholder values are supplied per recipient at send time; any placeholder left unset is delivered as an empty string.

User manual

Signing in and the dashboard

  1. 1Open the SILABI web panel and sign in with the email and password supplied to your organisation.
  2. 2Set a strong password on first login, then enable two-step verification under Profile, Security.
  3. 3The dashboard shows remaining credits, messages sent today, and delivery rate.
  4. 4Use Users then Invite to give colleagues their own logins instead of sharing one account.

User manual

Sending a campaign

  1. 1Go to Campaigns then New campaign and give the campaign a name.
  2. 2Choose an approved Sender ID from the dropdown.
  3. 3Pick recipients: paste numbers, choose a contact group, or upload a CSV or Excel file.
  4. 4Type the message, or load a saved template, and check the character and part counter.
  5. 5Send now, or set a date and time to schedule it.
  6. 6Confirm the summary screen: recipient count, parts per message, and estimated cost.

A message longer than 160 characters is sent as multiple parts and is charged per part. Swahili accents or emoji switch the message to Unicode, which reduces the limit to 70 characters per part.

User manual

Reports and top-up

  1. 1Open Reports then Delivery to filter by date, campaign, sender ID, or status.
  2. 2Export any report to CSV or Excel for accounting and reconciliation.
  3. 3Open Billing then Top up to add credits by mobile money or bank transfer.
  4. 4Set a low-balance alert so the team is emailed before credits run out.

User manual

Support

For sender ID approvals, billing questions, or integration help, contact the SILABI support team through the Help menu in the panel. Include your ClientId and, for delivery issues, the MessageId and recipient number so the message can be traced.

Try it

Test the gateway

Send a test message

Sends one real SMS through your SILABI account. Every test is recorded in your own history.

Sign in to send a test message.

Ask SILABI

Ask a question about the docs

The assistant answers from this documentation only, and can pass unanswered questions to SILABI support.

SILABIDocumentation assistant

Ask anything about the Bulk SMS API or the user manuals. Answers come from this documentation only.