Sending types
The same POST /send endpoint covers three sending modes. The
sending_type field switches between them; depending on the value you
pass either scheduled_dates, recurring_schedule, or neither.
sending_type | When the SMS goes out | Required extra fields |
|---|---|---|
immediate (default) | Now — within seconds of the request | None |
scheduled | At each entry in scheduled_dates | scheduled_dates: [{date, time}, …] |
recurring | Following recurring_schedule | recurring_schedule: {start_date, end_date, frequency, interval, times} |
If you omit sending_type the gateway defaults to immediate.
Immediate
Section titled “Immediate”The simplest case — send now, to one or many recipients.
{ "to": ["+243998857000"], "message": "Hello from Lisoloo!", "sender_id": "MYAPP", "sending_type": "immediate"}scheduled_dates and recurring_schedule must not be present (the
gateway will reject as 1110 INVALID_FIELD_FORMAT if both immediate
and scheduled_dates arrive together).
See the Send an instant SMS guide for the full one-to-many patterns.
Scheduled
Section titled “Scheduled”Queue the same message for one or more future moments. Each
scheduled_dates entry becomes a separate dispatch.
{ "to": ["+243998857000", "+243998857001"], "message": "Your appointment is tomorrow at 09:00.", "sender_id": "MYAPP", "sending_type": "scheduled", "scheduled_dates": [ { "date": "2026-06-01", "time": "08:00" }, { "date": "2026-06-01", "time": "18:00" } ]}Each scheduled_dates entry is its own dispatch — the example above
generates 2 dates × 2 recipients = 4 SMS, billed accordingly. The
returned message_id covers the whole batch; status polling reflects
the aggregate state.
Schema — scheduled_date:
| Field | Type | Description |
|---|---|---|
date | string | ISO 8601 calendar date (YYYY-MM-DD), in the merchant’s configured timezone. |
time | string | 24-hour HH:mm, same timezone. |
Past (date, time) pairs are rejected. The gateway evaluates the
pair against the merchant timezone configured on your account (default:
Africa/Kinshasa).
See the Schedule an SMS guide for daylight-saving edge cases and how to cancel a queued send.
Recurring
Section titled “Recurring”Send the same message on a fixed cadence between start_date and
end_date. Useful for daily reminders, weekly summaries, monthly
notices.
{ "to": ["+243998857000"], "message": "Your weekly summary is ready.", "sender_id": "MYAPP", "sending_type": "recurring", "recurring_schedule": { "start_date": "2026-06-01", "end_date": "2026-12-31", "frequency": "weekly", "interval": 1, "times": ["09:00", "18:00"] }}Schema — recurring_schedule:
| Field | Type | Description |
|---|---|---|
start_date | string | First eligible day (YYYY-MM-DD). |
end_date | string | null | Last eligible day (YYYY-MM-DD). Optional — leave unset for an open-ended schedule. |
frequency | enum | daily, weekly, monthly, or yearly. |
interval | int | Every N units of frequency. 1 = every day/week/month/year; 2 = every other; minimum 1. |
times | array[string] | One or more HH:mm send times per occurrence day. |
See Recurring SMS for usage patterns.
Validation rules
Section titled “Validation rules”The gateway enforces the following at submit time:
sending_typemust be one ofimmediate,scheduled,recurring.sending_type: "scheduled"should provide a non-emptyscheduled_dates.sending_type: "recurring"should providerecurring_schedule.tomust be non-empty and each entry must be ≥8 characters after stripping spaces and dashes.messagemust be 1–1600 characters.sender_idis optional, max 11 characters.
See also
Section titled “See also”- Send an instant SMS
- Schedule an SMS
- Recurring SMS
- Character limits — segment counting affects cost