Bytloop MailDocs
Status

Getting started

  • Introduction
  • Quickstart

Sending email

  • Send a transactional email
  • Sending domains vs mailboxes

Framework guides

  • Send email from Next.js
  • Send email from Ruby on Rails
  • Send email from Django
  • Send email from Laravel

Domains

  • Verify a domain

Receiving email

  • Receive email
  • Webhooks

Reference

  • Rate limits
  • Errors
  • SDKs

Getting started

Quickstart

Verify a domain, mint an API key, and send your first email.

You can go from signing up to a delivered email in about five minutes. This walkthrough covers the four steps every new workspace runs through once.

1. Create a workspace#

Sign up at /register with email + password or a Google / GitHub OAuth account. The first workspace is created for you on first sign in, and you are set as its owner. You can invite teammates from Settings → Members once you know who else needs access.

2. Verify a sending domain#

Every send has to leave from a domain you control. In the dashboard go to Domains, click Add domain, and enter something like send.acme.com. Bytloop hands back a set of DNS records — DKIM, SPF, and a return-path CNAME. Publish them at your DNS host (or click Sync to Cloudflare if the zone is on Cloudflare).

Verification usually clears in under a minute once the records propagate. See the Verify a domain guide for the exact records and troubleshooting.

3. Mint an API key#

Under Settings → API keys create a new key. Pick live for production traffic and test for anything else — test keys are sandboxed, do not send to real recipients, and never touch the reputation of your live domain.

Copy the key value once — the dashboard shows only the prefix afterward. Store it in your app's secret manager, never in a repo.

Do not commit keys

Bytloop keys carry the full send authority for the workspace. Anything that leaks into a git history should be revoked immediately from Settings → API keys → Revoke.

4. Send your first email#

curl -X POST https://mail.bytloop.com/api/v1/emails \
  -H "Authorization: Bearer bm_live_xxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "Welcome <hi@send.acme.com>",
    "to": ["you@example.com"],
    "subject": "Hello from Bytloop Mail",
    "html": "<p>You just sent your first email.</p>"
  }'
curl -X POST https://mail.bytloop.com/api/v1/emails \
  -H "Authorization: Bearer bm_live_xxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "Welcome <hi@send.acme.com>",
    "to": ["you@example.com"],
    "subject": "Hello from Bytloop Mail",
    "html": "<p>You just sent your first email.</p>"
  }'

You should get back a 202 Accepted with an id — that identifier lets you correlate future webhook events. Head to Logs in the dashboard to watch the send progress through queued → delivered in real time.

Prefer to click through it?

The API explorer has a live form for every endpoint that fires against your workspace with a click.

What next#

  • Wire up webhooks so your app knows when a message is delivered, bounces, or is opened.
  • If you want to read replies too, configure inbound email.
  • Read the errors reference before you ship — knowing the shape of a 422 up front saves a debugging round-trip later.
PreviousIntroductionNextSend a transactional email

On this page

  • 1. Create a workspace
  • 2. Verify a sending domain
  • 3. Mint an API key
  • 4. Send your first email
  • What next