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: Supply your sender ID name directly via "sender": "BULK_IT" (or your custom brand). For backward compatibility, "sender_id" with your UUID or legacy integer ID is also accepted.

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
  }
}

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