Home › Send SMS with Go
Send SMS with Go
Send an SMS to a UK mobile from Go with one HTTPS request to the Bremlio API. Real, runnable code — authentication, request, response and error handling — at 4.65p per message, pay as you go.
Get your API key free1. Setup & authentication
Uses the standard library net/http. Read the API key from the environment. Create an API key in the Bremlio dashboard and
authenticate by sending it in the X-Api-Key header. Numbers can be UK national
(07…) or E.164 (+44…).
2. Send an SMS in Go
package main
import (
"bytes"
"fmt"
"net/http"
"os"
)
func main() {
body := []byte(`{"to":"+447700900123","message":"Your order has been confirmed."}`)
req, _ := http.NewRequest("POST", "https://api.bremlio.com/v1/messages", bytes.NewReader(body))
req.Header.Set("Content-Type", "application/json")
req.Header.Set("X-Api-Key", os.Getenv("BREMLIO_API_KEY"))
resp, err := http.DefaultClient.Do(req)
if err != nil {
fmt.Println("error:", err)
return
}
defer resp.Body.Close()
fmt.Println("status:", resp.StatusCode) // 200 => accepted
}
3. The response
{
"success": true,
"message_id": "a1b2c3d4-…",
"provider_message_id": "…",
"status": "accepted",
"credits_remaining": 24
}
4. Errors to handle
The API returns a JSON {"error": "..."} with an appropriate HTTP status. Common cases:
| Status | Meaning |
|---|---|
| 400 | Invalid request — e.g. missing/!UK number, or empty/too-long message. |
| 401 | Invalid or missing API key. |
| 402 | Insufficient credits — top up to continue. |
| 403 | Account pending verification, recipient suppressed, or blocked by content policy. |
5. Production tips
- Keep the API key in an environment variable or secret store — never in source or client-side code.
- Check
status == "accepted"and store themessage_idto reconcile delivery later. - Handle non-2xx responses and retry transient network errors with backoff (the send itself is a single request).
- Validate/normalise numbers to +44 before sending to avoid 400s.
Frequently asked questions
- How do I send an SMS with Go?
- Make an HTTPS POST to https://api.bremlio.com/v1/messages with your API key in the X-Api-Key header and a JSON body of {"to", "message"}. The full Go example is above.
- What do I need to start?
- A Bremlio account and an API key (created in the dashboard). New accounts get 25 free credits, so you can run the example end to end before paying.
- How much does it cost?
- 4.65p per SMS to a UK mobile, pay as you go, no monthly fee.
- How do I check delivery?
- The send response returns a message_id and status. Delivery status is then available in the dashboard and via the message-history API.
Send your first SMS from Go today.
Get your API key freeRelated
SMS API · UK SMS API · OTP API · Full developer docs · Pricing