Send SMS to UK mobile numbers over a simple REST API. Authenticate every request with your API key in the X-Api-Key header. Base URL:
https://kxm4w7cve6.execute-api.eu-west-2.amazonaws.com
All numbers must be valid UK mobiles (+44 / 07…). Prices are in GBP; 1 credit = 1 SMS.
Pass your key on every authenticated call:
-H "X-Api-Key: br_uk_xxxxxxxxxxxxxxxxxxxxxxxx"
Create an account. Returns an API key and free starter credits. If a phone is supplied, an OTP is sent by SMS to verify it.
{"email":"you@co.uk","password":"min8chars","company":"Acme","phone":"+447700900123"}Verify the OTP sent by SMS.
{"email":"you@co.uk","otp":"123456"}{"email":"you@co.uk","password":"…"}Sends a reset code by SMS to the account's verified number.
{"email":"you@co.uk"}{"email":"you@co.uk","otp":"123456","new_password":"…"}Send an SMS. Deducts 1 credit; refunded automatically if the provider rejects it. Suppressed/opted-out recipients are blocked (403).
| Field | Notes |
|---|---|
to | UK mobile, +44 |
message | up to 480 chars |
sender_id | optional; must be an approved sender ID, else defaults to Bremlio |
marketing | optional bool; appends a PECR STOP opt-out footer |
curl -X POST $BASE/v1/messages \
-H "X-Api-Key: $KEY" -H "Content-Type: application/json" \
-d '{"to":"+447700900123","message":"Hello from Bremlio"}'
Response:
{"success":true,"message_id":"…","provider_message_id":"…","status":"accepted","segments":1,"credits_remaining":24,"low_credit":false}Recent messages with delivery status.
Send under your own brand name instead of the default "Bremlio". Register once, get approved once, then pass it on every send.
List your sender IDs and their status (pending_approval, approved, or rejected).
Register an alphanumeric sender ID (max 11 chars). If it closely matches your registered company name and your account is already KYC-approved, it starts pending_auto_approval: an automatic check — a blocklist pass plus an AI review for impersonation/offensive permutations — clears it to approved a short time later with no action needed from you. Anything that doesn't match, or that the automatic check flags, starts (or falls back to) pending_approval and a person reviews it, the same way every account is reviewed before it can send. Until approved, any send using this sender_id falls back to the default "Bremlio".
{"sender_id":"Acme"}Pass an approved sender ID with "sender_id":"Acme" on any send (see Send a message above) to use it instead of the default.
Current credit balance; low_credit flag when ≤ 10.
Creates a Stripe Checkout session; returns a url to redirect the customer to.
{"amount_gbp":20}Register an https URL to receive delivery-status events (instead of polling history).
{"url":"https://yourapp.example/bremlio-hook"}
You'll receive: {"type":"delivery_status","message_id":"…","status":"delivered|sent|failed"}
Recipients who reply STOP are added to your suppression list and blocked from future sends automatically. Marketing messages must carry an opt-out; set "marketing": true and we append the required footer if you haven't. Sender identity is carried by your sender ID (PECR).