---
title: "How to Send SMS"
description: "Learn the available SMS sending patterns in Bulkit and choose the right integration path."
---

# How to Send SMS

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:

```http
POST /api/v2/messages/sms/bulk
```

## Authorization

Bulkit v2 authenticates SMS requests using a single API token:

- **Bearer Token (Recommended)**: `Authorization: Bearer <your_api_token>`
- [Header Authorization](/sms/send-sms-using-header-authorization)
- [URL Authorization](/sms/send-sms-using-url-params)

## 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 credentials`
- `Insufficient balance`
- `Invalid number`
- `Invalid sender ID`
- `Invalid message`
- `Restricted send time`

## Restricted promotional send time

<Warning>
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.
</Warning>

If you schedule a promotional message to a Safaricom number outside that window, the request will be rejected with:

```json
{
  "status": "error",
  "message": "Restricted send time"
}
```

## Choose a send flow

- [Send SMS Using Header Authorization](/sms/send-sms-using-header-authorization)
- [Send SMS Using URL Params](/sms/send-sms-using-url-params)
- [Send a Single SMS](/sms/send-a-single-sms)
- [Send Bulk SMS](/sms/send-bulk-sms)
- [Send SMS to Contacts](/sms/send-sms-to-contacts)
- [Send Customized SMS](/sms/send-customized-sms)

## Webhooks and reporting

After sending SMS, you can continue with:

- [How to Setup SMS Webhook](/sms/how-to-setup-sms-webhook)
- [How to Get Delivery Reports](/sms/how-to-get-delivery-reports)
- [SMS API Error Messages](/sms/error-messages)

## Error response

Typical validation failures use this format:

```json
{
  "status": "error",
  "message": "Invalid credentials"
}
```
