Send a Single SMS
Send one SMS message to a single recipient.
Last updated · Markdown version
Bulkit provides a dedicated single-send SMS endpoint for transactional alerts and OTPs, as well as single-recipient dispatch via the bulk endpoint.
Primary Endpoint: Single SMS
POST /api/v2/messages/smsSend a single SMS using mobile as a single phone string.
Authorization
Pass your API token using the standard HTTP Authorization header:
Authorization: Bearer bk_live_8n6JQv3K1h9Lp0MdRequest body
{
"sender": "BULK_IT",
"mobile": "254700000001",
"message": "Welcome to Bulkit. Your OTP is 584920."
}Sender Name & Strict Authorization: Supply your sender ID name directly via "sender": "BULK_IT" (or your custom approved brand). For backward compatibility, "sender_id" with your UUID or legacy integer ID is also accepted.
No Defaulting: Senders are strictly authorized against your client account. If you pass an unassigned, unapproved, inactive, or mistyped sender ID or name, the API returns 400 Bad Request (Invalid sender ID) rather than defaulting to the system sender.
Scheduled Single SMS
To schedule delivery for a specific time, supply scheduled_at in ISO 8601 format:
{
"sender": "BULK_IT",
"mobile": "254700000001",
"message": "Your appointment is tomorrow at 9:00 AM.",
"scheduled_at": "2026-03-10T08:00:00+03:00"
}Success Response
{
"status": "success",
"message": "SMS queued successfully",
"data": {
"id": "c1f72a6b-8b5d-4f76-92f5-b3c1d94f2910",
"cost": 0.40,
"units": 1
}
}Smart Bundles Priority: If your account has active Smart Bundles, units are automatically deducted from your earliest-expiring bundle first. When covered by bundle credits, cost is returned as 0.00 because no cash float was debited.
Alternative: Single Send via Bulk Endpoint
You can also send a single message using the bulk route with one number in mobiles:
POST /api/v2/messages/sms/bulkRequest body
{
"sender": "BULK_IT",
"mobiles": ["254700000001"],
"message": "Welcome to Bulkit."
}Success response
{
"status": "success",
"message": "Bulk SMS processed",
"data": {
"requested": 1,
"queued": 1,
"failed": []
}
}Error Response
{
"status": "error",
"message": "Invalid sender ID"
}Common Errors
Invalid credentialsInsufficient balanceInvalid numberInvalid sender IDInvalid messageRestricted send time