Before you send
A 10-minute setup that takes you from “free signup” to “first production send” with your own domain. Skip this if you only want a 30-second test — see Path A instead.
The free plan unlocks the full Brixus365 product: raw HTML, batch send, SMTP, your own domain, and the Spark campaign dashboard. But because it sends from your own brand (not ours), there’s a small setup checklist before your first email goes out.
This page walks through it. Total time: about 10 minutes, mostly waiting on DNS.
1. Sign up free
Go to app.brixus365.com/signup and create an account.
You’ll need:
- A real email address (we send a 6-digit verification code)
- A name and company name (used to label your tenant)
- A password (8+ chars)
After signup you’ll be sent a verification email with a one-time code. Enter it on the next screen and your account is active.
If you already have a bx_preview_… key from the developers page, the email-only widget account upgrades to a full free account when you complete signup with the same email. Your existing preview key is revoked and a new bx_live_… key is issued.
2. Create an API key
In the dashboard, go to Settings → API Keys → Create new.
You’ll see four presets. Pick the one that matches what you’re doing:
| Preset | Pick this when… | Grants |
|---|---|---|
| Send emails (transactional) | You only need to send transactional email — receipts, password resets, magic links, OTPs. Works with the HTTP API, SMTP relay, and MCP server. | Permission to send emails |
| Full Spark access | You want to manage Spark campaigns, contacts, and templates programmatically. Use this for marketing automation backends. | Manage campaigns, contacts, templates |
| Spark analytics (read-only) | You’re feeding Brixus data into a BI tool, dashboard, or warehouse. Read-only by design. | Read campaigns, contacts, analytics |
| Custom (advanced) | You want a specific slice of permissions. Pick exact Read/Write checkboxes per resource. | Whatever you tick |
Most integrations want “Send emails (transactional)”. If you’re not sure, start with this — you can always create additional keys later for specific use cases.
Give the key a descriptive name (e.g. production-backend, staging-worker) and click Create Key.
The full key value (bx_live_…) is shown once, immediately after creation. Copy it now and store it securely — there’s no way to retrieve it later. If you lose it, revoke and create a new one.
export BRIXUS_API_KEY=bx_live_your_key_here
Never commit API keys to version control. Use environment variables or a secrets manager.
3. Verify your domain
Brixus365 needs proof that you’re authorised to send from a domain before it’ll dispatch email under it. This is a one-time DNS setup.
In the dashboard, go to Settings → Email Setup → Custom Email Domains and click Add Domain.
- Enter your sending domain (e.g.
mail.yourbrand.comoryourbrand.com) - The dashboard shows a list of DNS records to add — typically two TXT records (SPF + DKIM)
- Add those records at your DNS provider (Cloudflare, Route 53, Namecheap, etc.)
- Click Verify Domain in the dashboard
Verification usually completes within a few minutes once DNS has propagated. Larger providers can take up to an hour. The dashboard shows a green Verified badge when it’s done.
Subdomain or apex? Most senders use a subdomain like mail.yourbrand.com so the brand’s main domain reputation is isolated from email reputation. Either works.
4. Set a default sender
This is the step everyone forgets. Verifying a domain isn’t enough — you need at least one sender address marked as your default before the API will accept sends.
In Settings → Email Setup → Sender Addresses:
- Click Add Sender
- Enter the address you want to send from (e.g.
hello@yourbrand.com) and a display name - Click the verification link in the email that gets sent to that address
- Once verified, click Set as Default
That’s it — you’re ready to send.
Why this step exists: a single account can have multiple verified senders (e.g. billing@, support@, noreply@) for different brands or workflows. The transactional API uses the one marked Default for every send. To send from a different verified sender, change the Default in this screen first.
Verify the setup works
Run the same starter-template send as in the Quickstart — but with your bx_live_… key:
1curl -X POST https://app.brixus365.com/api/v1/emails \
2-H "X-API-Key: $BRIXUS_API_KEY" \
3-H "Content-Type: application/json" \
4-d '{
5 "to": "you@example.com",
6 "starterTemplate": "welcome",
7 "variables": { "name": "You", "app_name": "Your Brand" }
8}'A successful response:
{
"messageId": "dceaaa96-a806-43d2-ac2d-8396bbd3188a",
"status": "queued",
"from": "hello@yourbrand.com"
}
The from field reflects whichever sender address you marked as Default in step 4.
Common errors
If something didn’t work, the response will tell you exactly which step is incomplete:
| HTTP | Code | What it means | Fix |
|---|---|---|---|
| 401 | missing_api_key | You sent the wrong header (or none) | Use X-API-Key: bx_live_…. Don’t use Authorization: Bearer for API keys — that’s the dashboard JWT. |
| 401 | invalid_api_key | Key value is wrong, revoked, or has whitespace | Re-copy from Settings → API Keys. The full value is only shown once — if you lost it, revoke and create a new one. |
| 403 | scope_required | The key exists but lacks the permission this endpoint needs | Check the key’s scope badges in Settings → API Keys. The “Send emails (transactional)” preset is the right one for the API. |
| 403 | no_verified_sender | No sender is marked Default — step 4 is incomplete | Open Settings → Email Setup → Sender Addresses and click Set as Default on a verified sender. |
| 403 | upgrade_required | You’re trying to use a feature that needs a paid plan (e.g. programmatic campaign send) | The response includes an upgrade_url field. Free accounts can run Spark campaigns from the dashboard — only programmatic marketing:* scopes are paid-only. |
| 422 | validation_failed | Body shape is wrong — wrong field names, missing required fields | Check error.details.errors[] for the exact field path. CamelCase field names — starterTemplate not starter_template. |
Note: the from field on free plans is currently ignored — every send uses your default sender regardless of what you put in from. To send from a different verified sender, change the Default in Settings → Email Setup. We’re working on per-message from override for free accounts.
Stuck on something not in the table? Email support@brixus365.com.