Home › Send SMS with PHP

Send SMS with PHP

Send an SMS to a UK mobile from PHP 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 free

1. Setup & authentication

Uses cURL (bundled with PHP). Read the API key from an environment variable. 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 PHP

<?php
$ch = curl_init("https://api.bremlio.com/v1/messages");
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_POST => true,
  CURLOPT_HTTPHEADER => [
    "Content-Type: application/json",
    "X-Api-Key: " . getenv("BREMLIO_API_KEY"),
  ],
  CURLOPT_POSTFIELDS => json_encode([
    "to" => "+447700900123",
    "message" => "Your order has been confirmed.",
  ]),
]);
$body = curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$data = json_decode($body, true);
if ($code === 200 && ($data["status"] ?? "") === "accepted") {
  echo "sent: " . $data["message_id"];
} else {
  echo "failed: " . ($data["error"] ?? $code);
}

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:

StatusMeaning
400Invalid request — e.g. missing/!UK number, or empty/too-long message.
401Invalid or missing API key.
402Insufficient credits — top up to continue.
403Account pending verification, recipient suppressed, or blocked by content policy.

5. Production tips

Frequently asked questions

How do I send an SMS with PHP?
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 PHP 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 PHP today.

Get your API key free

Related

SMS API · UK SMS API · OTP API · Full developer docs · Pricing