Chat bot builder? Go to buzzmark.chat

Developers

API reference

Every Buzzmark REST endpoint: parameters, responses and examples for sending email, reading your message log and managing domains.

Sending

Send an email

POST /api/email

Auth: Hive token

Request curl
curl https://api.buzzmarkapp.com/api/email \
  -X POST \
  -H "X-Buzzmark-Server-Token: $BUZZMARK_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "From": "Acme <hello@acme.com>",
    "To": "customer@example.com",
    "Subject": "Your receipt",
    "HtmlBody": "<p>Thanks for your order!</p>",
    "TextBody": "Thanks for your order!",
    "Tag": "receipt",
    "Metadata": { "order_id": "1234" }
  }'
200 Accepted
{
  "To": "customer@example.com",
  "SubmittedAt": "2026-10-24T10:15:02+00:00",
  "MessageID": "f5ab446c-18ad-4db4-b747-8e1ba70ec72d",
  "ErrorCode": 0,
  "Message": "OK"
}
422 Refused
{
  "ErrorCode": 406,
  "Message": "'gone@example.com' is on this server's suppression list and cannot be emailed."
}
Attachments JSON fragment
"Attachments": [
  {
    "Name": "invoice.pdf",
    "Content": "JVBERi0xLjcKJ...",
    "ContentType": "application/pdf"
  },
  {
    "Name": "logo.png",
    "Content": "iVBORw0KGgo...",
    "ContentType": "image/png",
    "ContentID": "logo"
  }
]

Send a batch

POST /api/email/batch

Auth: Hive token

Request curl
curl https://api.buzzmarkapp.com/api/email/batch \
  -X POST \
  -H "X-Buzzmark-Server-Token: $BUZZMARK_TOKEN" \
  -H "Content-Type: application/json" \
  -d '[
    { "From": "hello@acme.com", "To": "a@example.com",
      "Subject": "Hi A", "TextBody": "Hello!" },
    { "From": "hello@acme.com", "To": "b@example.com",
      "Subject": "Hi B" }
  ]'
200 Results
[
  {
    "To": "a@example.com",
    "SubmittedAt": "2026-10-24T10:15:02+00:00",
    "MessageID": "0b7f6e2a-6d52-4a51-9c3e-1e0e6f6b3a10",
    "ErrorCode": 0,
    "Message": "OK"
  },
  {
    "ErrorCode": 300,
    "Message": "Provide either HtmlBody or TextBody.",
    "To": "b@example.com"
  }
]

Message log

List messages

GET /api/messages/outbound

Auth: Hive token

Request curl
curl "https://api.buzzmarkapp.com/api/messages/outbound?status=bounced&count=20" \
  -H "X-Buzzmark-Server-Token: $BUZZMARK_TOKEN"
200 OK
{
  "TotalCount": 1,
  "Messages": [
    {
      "MessageID": "f5ab446c-18ad-4db4-b747-8e1ba70ec72d",
      "To": "customer@example.com",
      "From": "Acme <hello@acme.com>",
      "Subject": "Your receipt",
      "Status": "bounced",
      "Tag": "receipt",
      "MessageStream": "outbound",
      "SubmittedAt": "2026-10-24T10:15:02+00:00"
    }
  ]
}

Get a message

GET /api/messages/outbound/{MessageID}

Auth: Hive token

Request curl
curl https://api.buzzmarkapp.com/api/messages/outbound/f5ab446c-18ad-4db4-b747-8e1ba70ec72d \
  -H "X-Buzzmark-Server-Token: $BUZZMARK_TOKEN"
200 OK
{
  "MessageID": "f5ab446c-18ad-4db4-b747-8e1ba70ec72d",
  "To": "customer@example.com",
  "From": "Acme <hello@acme.com>",
  "Subject": "Your receipt",
  "Status": "sent",
  "Tag": "receipt",
  "MessageStream": "outbound",
  "SubmittedAt": "2026-10-24T10:15:02+00:00",
  "Cc": null,
  "Bcc": null,
  "ReplyTo": null,
  "HtmlBody": "<p>Thanks for your order!</p>",
  "TextBody": "Thanks for your order!",
  "Headers": null,
  "Metadata": { "order_id": "1234" },
  "Error": null,
  "SentAt": "2026-10-24T10:15:04+00:00",
  "Attachments": [],
  "MessageEvents": [
    { "Type": "open", "Recipient": "customer@example.com",
      "ReceivedAt": "2026-10-24T10:21:40+00:00" },
    { "Type": "delivered", "Recipient": "customer@example.com",
      "ReceivedAt": "2026-10-24T10:15:06+00:00" }
  ]
}

Domains

List domains

GET /api/domains

Auth: Hive token

Request curl
curl https://api.buzzmarkapp.com/api/domains \
  -H "X-Buzzmark-Server-Token: $BUZZMARK_TOKEN"
200 OK
{
  "Domains": [
    {
      "ID": "c6504766-7867-4d5b-8568-0fdabd6e2b3f",
      "Name": "acme.com",
      "Status": "verified",
      "Verified": true,
      "InboundEnabled": false,
      "LastCheckedAt": "2026-10-24T09:00:12+00:00"
    }
  ]
}

Add a domain

POST /api/domains

Auth: Hive token

Request curl
curl https://api.buzzmarkapp.com/api/domains \
  -X POST \
  -H "X-Buzzmark-Server-Token: $BUZZMARK_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "domain": "acme.com" }'
201 Created
{
  "ID": "c6504766-7867-4d5b-8568-0fdabd6e2b3f",
  "Name": "acme.com",
  "Status": "pending",
  "Verified": false,
  "VerifiedAt": null,
  "LastCheckedAt": null,
  "Sending": {
    "Ready": false,
    "Instructions": "Add these DNS records at your domain registrar ...",
    "Records": [
      { "Purpose": "DKIM", "Type": "TXT",
        "Host": "buzzmark._domainkey.acme.com",
        "Value": "v=DKIM1; k=rsa; p=MIIBIjANBgkq...",
        "Required": true, "Verified": false },
      { "Purpose": "Return-Path", "Type": "CNAME",
        "Host": "bzm-bounces.acme.com", "Value": "return.buzzmarkapp.com",
        "Required": true, "Verified": false },
      { "Purpose": "SPF", "Type": "TXT", "Host": "acme.com",
        "Value": "v=spf1 include:spf.buzzmarkapp.com ~all",
        "Required": false, "Verified": false },
      { "Purpose": "DMARC", "Type": "TXT", "Host": "_dmarc.acme.com",
        "Value": "v=DMARC1; p=none;",
        "Required": false, "Verified": false }
    ]
  },
  "Receiving": {
    "Enabled": false,
    "ReadyToEnable": false,
    "Mode": null,
    "Instructions": "To receive mail on acme.com: publish the MX record ...",
    "Records": [
      { "Purpose": "Inbound MX", "Type": "MX", "Host": "acme.com",
        "Value": "mxin.buzzmarkapp.com", "Priority": 10, "Required": true }
    ]
  },
  "Forwarding": {
    "Instructions": "Skip DNS entirely: set your mailbox to forward ...",
    "Address": "3f9a1c...@in.buzzmarkapp.com"
  }
}

Get a domain

GET /api/domains/{id}

Auth: Hive token

Request curl
curl https://api.buzzmarkapp.com/api/domains/c6504766-7867-4d5b-8568-0fdabd6e2b3f \
  -H "X-Buzzmark-Server-Token: $BUZZMARK_TOKEN"
404 Not found
{ "ErrorCode": 701, "Message": "Unknown domain." }

Verify DNS

POST /api/domains/{id}/verify

Auth: Hive token

Request curl
curl https://api.buzzmarkapp.com/api/domains/c6504766-7867-4d5b-8568-0fdabd6e2b3f/verify \
  -X POST \
  -H "X-Buzzmark-Server-Token: $BUZZMARK_TOKEN"

Enable receiving

POST /api/domains/{id}/inbound

Auth: Hive token

Request curl
curl https://api.buzzmarkapp.com/api/domains/c6504766-7867-4d5b-8568-0fdabd6e2b3f/inbound \
  -X POST \
  -H "X-Buzzmark-Server-Token: $BUZZMARK_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "mode": "addresses",
    "addresses": ["support", "billing"],
    "forwards": { "sales": "you@example.com" }
  }'
422 Not verified
{
  "ErrorCode": 300,
  "Message": "Verify the domain (DKIM) before enabling inbound."
}

Disable receiving

DELETE /api/domains/{id}/inbound

Auth: Hive token

Request curl
curl https://api.buzzmarkapp.com/api/domains/c6504766-7867-4d5b-8568-0fdabd6e2b3f/inbound \
  -X DELETE \
  -H "X-Buzzmark-Server-Token: $BUZZMARK_TOKEN"

Remove a domain

DELETE /api/domains/{id}

Auth: Hive token

Request curl
curl https://api.buzzmarkapp.com/api/domains/c6504766-7867-4d5b-8568-0fdabd6e2b3f \
  -X DELETE \
  -H "X-Buzzmark-Server-Token: $BUZZMARK_TOKEN"
200 OK
{ "Deleted": true }
main.tf HCL
terraform {
  required_providers {
    restapi = { source = "Mastercard/restapi" }
  }
}

provider "restapi" {
  uri                  = "https://api.buzzmarkapp.com"
  write_returns_object = true
  headers = {
    "X-Buzzmark-Server-Token" = var.buzzmark_token
    "Content-Type"            = "application/json"
  }
}

resource "restapi_object" "buzzmark_domain" {
  path         = "/api/domains"
  data         = jsonencode({ domain = "acme.com" })
  id_attribute = "ID"
}

locals {
  # One entry per record: Purpose, Type, Host, Value, Required, Verified
  buzzmark_records = jsondecode(
    restapi_object.buzzmark_domain.api_response
  ).Sending.Records
}

Events

Report an event

POST /api/events

Auth: Hive token

Request curl
curl https://api.buzzmarkapp.com/api/events \
  -X POST \
  -H "X-Buzzmark-Server-Token: $BUZZMARK_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "Type": "bounce",
    "MessageID": "f5ab446c-18ad-4db4-b747-8e1ba70ec72d",
    "Recipient": "customer@example.com",
    "Details": { "Type": "HardBounce", "Description": "550 No such user" }
  }'
200 OK
{ "Status": "recorded" }
404 Not found
{ "ErrorCode": 701, "Message": "Unknown message for this server." }