Personalized bulk

A different message for every recipient in one request. Statements, balances, due dates, anything per-person.

POSThttps://api.mobilesasa.com/v1/send/bulk-personalized

Parameters

FieldTypeRequiredDescription
senderIDstringYesAn approved sender ID on your account.
messageBodyarrayYesArray of { phone, message } objects, each recipient with their own text.
curl -X POST https://api.mobilesasa.com/v1/send/bulk-personalized \
  -H "Authorization: Bearer $MOBILESASA_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "senderID": "MOBILESASA",
    "messageBody": [
      {
        "phone": "0712000001",
        "message": "Dear Amina, your loan instalment of KES 5,400 is due on 15 Aug."
      },
      {
        "phone": "0733000002",
        "message": "Dear Peter, your loan instalment of KES 12,100 is due on 15 Aug."
      },
      {
        "phone": "0700000003",
        "message": "Dear Grace, your loan instalment of KES 3,250 is due on 15 Aug."
      }
    ]
  }'

Response

json
{
  "status": true,
  "responseCode": "0200",
  "message": "Accepted",
  "bulkId": "30b2ec2b-89a6-4414-ae8d-cb08d12d19ef"
}

One bulkId covers the whole array. Pass it to delivery reports to get a row back per recipient.

Notes

  • Billing is per part per message. A long message for one recipient doesn't affect what the others cost.
  • Render the personalisation yourself (your data lives in your system). Pull names/amounts from your database, build the array, send once.
  • Invalid phones in the array are skipped; the rest deliver. The daily duplicate rule applies per recipient.
  • For per-message tracking IDs, loop v2 single sends instead. Bulk-personalized doesn't return per-row IDs.