Welcome
Bremlio is a UK SMS and OTP platform. You can send single or bulk text messages to UK mobiles, verify users with one-time passcodes, manage contacts and templates, automate recurring sends, and share files securely — all from one dashboard or a simple REST API.
This guide walks through each capability in the order you'll likely use it. If you're brand new, start with Getting Started.
Getting Started
Sign up on the dashboard with your email and a password (at least 8 characters). You get 25 free credits immediately. Add a UK mobile to verify it with a one-time code.
Your key is on the dashboard Overview and Account pages. Send it in the X-Api-Key header on every API request; keep it secret.
Open Send SMS, enter a UK number (+44) and a message, and send. Tick test mode to try it without spending a credit or hitting the carrier.
Add credits by card via Billing when you want to send for real. See Credits & Billing.
Credits & Billing
Bremlio is pay-as-you-go. 1 credit = 1 SMS at 4.65p. There are no monthly fees and credits don't expire.
Topping up
Go to Billing, enter an amount in pounds, and pay by card. Payment is handled securely by Stripe, and credits are added to your balance when the payment completes.
How charging works
- A successful send costs 1 credit.
- If a send fails at the carrier, the credit is refunded automatically.
- A low-credit banner warns you before you run out.
SMS Messaging
Single send
Use Send SMS for a one-off message. Numbers must be UK mobiles; 07… is normalised to +44 automatically.
Bulk send
Upload a CSV with a phone column (plus optional name and others) and use {name}-style placeholders in your message — each recipient gets a personalised text.
Test mode
Turn on test mode (single or bulk) to run the whole flow without contacting the carrier or spending credits — ideal while you build.
Sender ID
Messages show a sender of Bremlio by default. Register your own brand name instead (up to 11 characters, letters and numbers) from Sender IDs in the dashboard. If it matches your registered company name, it runs through a short automatic check — a blocklist pass and an AI review for impersonation or disguised offensive names — and approves itself a little while later with nothing for you to do. Anything that check flags, or that doesn't match your company name, goes to a person to review, the same way your account itself was reviewed. Either way, sends use the default "Bremlio" automatically until it's approved; nothing fails or waits on you.
Delivery status
Every message is recorded with its status. Track delivery in Reports, or subscribe a webhook to receive delivery events.
Contacts & Templates
Contacts
Add contacts one at a time or import a CSV. Tag them into groups so you can target a campaign at, say, "vip" or "newsletter". You can also store a birthday for use with automations.
Templates
Save reusable messages with {{variables}}. Give a template an event code and you can trigger it from your own system with a single API call — perfect for order confirmations and reminders where the wording stays the same but the details change.
# Trigger a template named "welcome" curl -X POST https://api.bremlio.com/v1/messages/event/welcome \ -H "X-Api-Key: br_uk_your_key" -H "Content-Type: application/json" \ -d '{"to":"+447700900123","data":{"name":"Alex"}}'
Automate
Automations send messages without you lifting a finger. There are three kinds:
- Birthday — fires on a contact's birthday, with an optional lead time (e.g. send two days before).
- Schedule — runs on a cron expression, e.g. every morning at 9am.
- Webhook — gives you a unique URL; calling it fires the message instantly, so your own system can trigger a send.
Each automation targets all your contacts, a specific group, or literal numbers, and can use {{variables}} just like templates.
OTP Verification
Verify that a user controls a phone number in two calls. Send a code, then check what they enter.
POST to /v1/otp/send with the recipient's UK number. Bremlio texts a six-digit code and returns a verification_id.
POST the verification_id and the code the user typed to /v1/otp/verify. You get back whether it matched.
Codes expire after 10 minutes and lock after 5 wrong attempts. A test number lets you build without spending credits. Full walkthrough on the OTP page.
Reports
The Reports page shows how your messaging is performing over 7, 30 or 90 days: sent, delivered and failed counts, success rate, unique recipients, a daily volume chart, peak day and hour, and a breakdown by provider.
You also get a filterable message log with CSV export, and a held messages view showing anything the moderation gate is holding for review.
API Integration
Everything in the dashboard is also available over a REST API. Authenticate with your API key in the X-Api-Key header. The base URL is https://api.bremlio.com.
# Send a message curl -X POST https://api.bremlio.com/v1/messages \ -H "X-Api-Key: br_uk_your_key" -H "Content-Type: application/json" \ -d '{"to":"+447700900123","message":"Hello from Bremlio"}'
Common endpoints: /v1/messages, /v1/messages/event/{code}, /v1/otp/send & /verify, /v1/contacts, /v1/balance, /v1/reports. The full reference is on the API docs page.
Troubleshooting
"Invalid or missing API key" (401)
Check the X-Api-Key header is present and correct. If you rotated your key, update it everywhere.
"to must be a valid UK mobile number" (400)
Only UK mobiles are accepted, in +44 or 07… format. Landlines and non-UK numbers are rejected.
"Insufficient credits" (402)
Top up on the Billing page. Remember failed sends are refunded, so your balance only drops for accepted messages.
Message sent but not delivered
"Accepted" means the carrier took it; delivery is confirmed separately. Check the status in Reports or via a delivery webhook.
Recipient opted out
Anyone who replied STOP is on your suppression list and is blocked from further sends by design.