How to Send SMS
Learn the available SMS sending patterns in Bulkit and choose the right integration path.
Last updated · Markdown version
Bulkit SMS API lets you send one-off or multi-recipient SMS traffic from your own systems using your approved sender IDs and available account balance.
Use the SMS API when you need to:
- send transactional alerts
- send account or workflow notifications
- trigger system-generated outbound SMS
- schedule a message for later delivery
Endpoints
The main SMS send route documented in this section is:
POST /api/v2/messages/sms/bulkAuthorization
Bulkit v2 authenticates SMS requests using a single API token:
- Bearer Token (Recommended):
Authorization: Bearer <your_api_token> - Header Authorization
- URL Authorization
What you need before sending SMS
Before calling the SMS API, make sure you have:
- an active Bulkit account
- a valid API token
- enough credit on your account
- a valid sender ID assigned to your account
- recipient numbers in a supported Kenyan mobile format
Supported sending patterns
Bulkit currently supports:
- single-recipient SMS
- bulk SMS to multiple recipients
- scheduled SMS using timezone-aware timestamps
Important delivery constraints
Bulkit validates several common error conditions before accepting a request. Common API errors include:
Invalid credentialsInsufficient balanceInvalid numberInvalid sender IDInvalid messageRestricted send time
Restricted promotional send time
Promotional sender IDs cannot send to Safaricom recipients outside the allowed time window. Safaricom promotional traffic is only allowed between 8:00 AM and 6:00 PM Africa/Nairobi time.
If you schedule a promotional message to a Safaricom number outside that window, the request will be rejected with:
{
"status": "error",
"message": "Restricted send time"
}Choose a send flow
- Send SMS Using Header Authorization
- Send SMS Using URL Params
- Send a Single SMS
- Send Bulk SMS
- Send SMS to Contacts
- Send Customized SMS
Webhooks and reporting
After sending SMS, you can continue with:
Error response
Typical validation failures use this format:
{
"status": "error",
"message": "Invalid credentials"
}