# How do you send an SMS via API?

> Sending an SMS through an HTTP API means passing the destination number, sender ID, and message text to a REST endpoint that hands the message to operator networks and returns a message ID you can track for delivery.

- Canonical URL: https://www.broadnet.me/answers/how-to-send-sms-via-api
- Language: en
- Last reviewed: 2026-09-24
- Publisher: BroadNet (https://www.broadnet.me)

## The request

BroadNet's gateway accepts a POST to https://api.broadnet.me/sms/sendSms with an Authorization: Bearer token and a JSON body: senderId (the sender ID), destinationNumber (the destination number in international format, digits only, no plus sign), message (the text), and messageType (TEXT for GSM-7, UNICODE for Arabic, emoji and other non-Latin scripts). A successful call returns 200 OK with the message ID in the response body.

## Encoding and length

A GSM-7 message fits 160 characters per segment (153 once a message spans multiple segments); switching to Unicode for emoji or non-Latin scripts drops that to 70 (67 concatenated). Set messageType to TEXT for plain GSM-7 and UNICODE when the body needs Unicode or Arabic, so characters aren't garbled — POST /sms/identify returns the encoding and segment count before you send.

## Track delivery, don't assume it

The returned message ID is the handle for delivery receipts (DLRs). Configure a webhook to receive the operator's final status — delivered, failed, or expired — rather than treating a 200 on submission as proof the handset received the message.

## Moving to production

Use international E.164 numbers, register your sender ID in each destination market before you scale, and send over direct operator routes for consistent latency. For high volume the same account is reachable over SMPP as well as REST, so you can start on HTTP and switch bind types without re-onboarding.

## Frequently asked questions

### Can I send an SMS with a GET request, or do I need POST?

Use POST. The REST endpoint POST /sms/sendSms takes a JSON body and a Bearer token, so the message text and credentials never appear in URLs or server logs. The legacy HTTP API (/websmpp/websms) still accepts GET for existing SMPP-era integrations, but new integrations should use the REST API.

### Do I need SMPP, or is the HTTP API enough?

The REST/HTTP API is enough for most volumes and is the fastest to integrate. SMPP suits very high sustained throughput and persistent binds. The same BroadNet account works over both, so you can start on HTTP and add SMPP later without re-onboarding.

### How do I know a message was actually delivered?

Submission returns a message ID; the final handset status arrives asynchronously as a delivery receipt (DLR) on your webhook — delivered, failed, or expired. Don't treat the submission response as proof of delivery.

## Related

- [All answers](https://www.broadnet.me/answers)
- [Glossary](https://www.broadnet.me/answers)
- [What is an SMS API?](https://www.broadnet.me/answers/what-is-sms-api)
- [What is A2P SMS?](https://www.broadnet.me/answers/what-is-a2p-sms)
- [What is a DLR (Delivery Receipt)?](https://www.broadnet.me/answers/what-is-dlr)
- [How do I improve SMS delivery rates?](https://www.broadnet.me/answers/how-to-improve-sms-delivery-rates)
- [SMS API](https://www.broadnet.me/products/sms-api)
- [A2P SMS](https://www.broadnet.me/products/a2p-sms)
