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

HTTP
POST /api/v2/messages/sms

Send a single SMS using mobile as a single phone string.

Authorization

Pass your API token using the standard HTTP Authorization header:

HTTP
Authorization: Bearer bk_live_8n6JQv3K1h9Lp0Md

Request body

JSON
{
  "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:

JSON
{
  "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

JSON
{
  "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:

HTTP
POST /api/v2/messages/sms/bulk

Request body

JSON
{
  "sender": "BULK_IT",
  "mobiles": ["254700000001"],
  "message": "Welcome to Bulkit."
}

Success response

JSON
{
  "status": "success",
  "message": "Bulk SMS processed",
  "data": {
    "requested": 1,
    "queued": 1,
    "failed": []
  }
}

Error Response

JSON
{
  "status": "error",
  "message": "Invalid sender ID"
}

Common Errors

  • Invalid credentials
  • Insufficient balance
  • Invalid number
  • Invalid sender ID
  • Invalid message
  • Restricted send time