> ## Documentation Index
> Fetch the complete documentation index at: https://docs.beem.africa/llms.txt
> Use this file to discover all available pages before exploring further.

# Sending flow

> End-to-end flow from sending an SMS request to receiving a delivery report.

Sending an SMS through the Beem API follows a straightforward process.

```text theme={null}
Application
      │
      │ 1. Send SMS request
      ▼
  Beem SMS API
      │
      │ Authenticate request
      │ Validate payload
      ▼
 Message Accepted
      │
      ▼
 Mobile Network
      │
      ▼
 Recipient receives SMS
      │
      ▼
Delivery Report (poll via API)
      │
      ▼
Application polls Get delivery reports
```

***

## How it works

<Steps>
  <Step title="1. Create your message">
    Your application prepares the SMS request, including:

    * Recipient phone number
    * Active Sender ID
    * Message content
  </Step>

  <Step title="2. Send the request">
    Your application submits the request to the Beem SMS API using Basic Auth (API Key and Secret) or an access token. Set `Content-Type` to `application/json` for JSON payloads or `application/xml` for XML payloads.

    The API authenticates your request before processing it.
  </Step>

  <Step title="3. Message processing">
    If the request is valid, Beem accepts the message and forwards it to the appropriate mobile network operator.
  </Step>

  <Step title="4. SMS delivery">
    The mobile network delivers the SMS to the recipient's device.
  </Step>

  <Step title="5. Delivery report">
    Once delivery is attempted, Beem receives the delivery status from the mobile network.

    <Warning>
      For **local SMS**, delivery reports are **not** pushed to a callback URL. Use the **pull** mechanism only — call [Get delivery reports](/guides/sms/delivery-reports) with the `request_id` from your Send SMS response. Wait at least 5 minutes after sending before checking.
    </Warning>
  </Step>
</Steps>
