Get up and running with Bremlio

Everything you need to send your first message and grow from there — step by step.

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.

New here? Continue to Getting Started →

Getting Started

1
Create your account

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.

2
Find your API key

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.

3
Send your first SMS

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.

4
Top up when ready

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.

1
Send

POST to /v1/otp/send with the recipient's UK number. Bremlio texts a six-digit code and returns a verification_id.

2
Verify

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.

Secure Share

Send a file to someone and gate the download behind a one-time code sent to their phone.

1
Upload

On the Secure Share page, choose a file and the recipient's UK number. Bremlio gives you a link to send them.

2
They verify

When they open the link, they request a code by SMS and enter it — only then does the download unlock. Links expire after 72 hours.

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.