SSoftLinkSMSDocs

Sending access

Promotional and transactional traffic, what each account can send, and how to unlock more.

Every message has a traffic class. It decides the rules a message follows and which sender ID it goes out from.

Traffic classForSMSEmail
promotionalOffers, announcements and newsletters to people who opted inEvery account, from day one. Sent from the shared sender ID.Not offered
transactionalOne-time codes, receipts, account and service alerts the recipient needsAfter approval. Sent from your own sender ID.After approval.

You choose the class per send with traffic_class. SMS defaults to promotional; email is always transactional.

Check what you can send

GET /sending-profile lists every channel and traffic class with its status, so your code can decide before it sends:

curl https://api.softlinksms.co.ke/api/v1/sending-profile \
  -H "X-Api-Key: $SOFTLINK_API_KEY"
{
  "account_id": 1042,
  "capabilities": [
    { "channel": "sms", "traffic_class": "promotional", "status": "active", "can_send": true, "source": "default", "sender_id": "SOFTLINK", "access_request_id": null, "reason": "" },
    { "channel": "sms", "traffic_class": "transactional", "status": "active", "can_send": true, "source": "grant", "sender_id": "ACMEBANK", "access_request_id": "8f0c6a5e-2a5d-4c47-9d0b-2f1f8f0e4b11", "reason": "" },
    { "channel": "email", "traffic_class": "promotional", "status": "unavailable", "can_send": false, "source": null, "sender_id": null, "access_request_id": null, "reason": "Promotional email isn't offered. Email is for transactional messages (receipts, codes, alerts) and needs approval." },
    { "channel": "email", "traffic_class": "transactional", "status": "in_review", "can_send": false, "source": null, "sender_id": null, "access_request_id": "1c9d7f2a-55e3-4b8e-9a61-0f2d3c4b5a69", "reason": "" }
  ]
}
statusMeaningWhat to do
activeYou can send now. sender_id is what recipients will see.Send.
in_reviewYour request is with our review team.Wait for the email.
action_requiredYour request is a draft or needs changes.Finish it in the dashboard.
availableNot enabled yet, but you can apply.Apply in the dashboard.
unavailableNot offered. reason explains why.None.

Apply for transactional access

In the dashboard, open Sending access and choose Apply next to the channel. The form is prefilled from anything you've already given us.

Sender IDs are registered with the mobile networks, which need your full business details:

  • Legal business name, registration number and KRA PIN
  • The authorised signatory's name, ID number, email and phone
  • What you'll send, with sample messages
  • The sender ID you want (3–11 letters, digits or spaces)
  • Certificate of incorporation, CR12, the signatory's ID, and a sender ID authorisation letter on company letterhead

We review each request and email you the decision. Approved SMS access sends from the sender ID as registered with the networks, which we confirm in the approval.

What happens if you send without access

The send is refused before anything is charged:

{
  "error": {
    "code": "traffic_class_not_permitted",
    "message": "Transactional SMS isn't enabled for this account. Apply in the dashboard under Sending access.",
    "details": {
      "channel": "sms",
      "traffic_class": "transactional",
      "status": "available",
      "access_request_id": null
    }
  }
}

details.status is the same value /sending-profile reports, so your error handling can tell "apply" apart from "wait for review".

Use transactional for what people expect

Transactional access exists so codes and receipts skip the opt-in and do-not-disturb rules that apply to marketing. Sending promotions as transactional gets access revoked. If in doubt, ask: support@softlinksms.co.ke.

On this page