Skip to content

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_typeWhen the SMS goes outRequired extra fields
immediate (default)Now — within seconds of the requestNone
scheduledAt each entry in scheduled_datesscheduled_dates: [{date, time}, …]
recurringFollowing recurring_schedulerecurring_schedule: {start_date, end_date, frequency, interval, times}

If you omit sending_type the gateway defaults to 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.

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:

FieldTypeDescription
datestringISO 8601 calendar date (YYYY-MM-DD), in the merchant’s configured timezone.
timestring24-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.

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:

FieldTypeDescription
start_datestringFirst eligible day (YYYY-MM-DD).
end_datestring | nullLast eligible day (YYYY-MM-DD). Optional — leave unset for an open-ended schedule.
frequencyenumdaily, weekly, monthly, or yearly.
intervalintEvery N units of frequency. 1 = every day/week/month/year; 2 = every other; minimum 1.
timesarray[string]One or more HH:mm send times per occurrence day.

See Recurring SMS for usage patterns.

The gateway enforces the following at submit time:

  • sending_type must be one of immediate, scheduled, recurring.
  • sending_type: "scheduled" should provide a non-empty scheduled_dates.
  • sending_type: "recurring" should provide recurring_schedule.
  • to must be non-empty and each entry must be ≥8 characters after stripping spaces and dashes.
  • message must be 1–1600 characters.
  • sender_id is optional, max 11 characters.