Menu

API reference · Branding

Senders

branding · email_senders · 4 operations

POST/v1/branding/email-senders

Add a sender

branding.email_senders.add

WriteSince 2026-11-01

Adds a sender address on the verified sending domain: email (the full address, hello@youragency.com: it must be on that domain, 400 sender_email_domain_mismatch otherwise) and name (what recipients see, up to 100 characters). Requires the domain to be verified (409 email_domain_not_verified); an address already in the list is 409 sender_exists; up to 50 senders (409 limit_reached, details.resource email_senders). The first sender in the list is the default From; a new one goes last (reorder with branding.email_senders.reorder). Returns the new sender and the whole list. Owners and admins with edit access to Branding.

Scope
branding:write
Permission
Edit in the module · Only owner, admin
MCP tool
branding_email_senders_addOn the full surface; on the compact one, mb_execute_operation with id: "branding.email_senders.add".

Declared cost: up to 1 reads and 1 writes per call (they count against the daily quota).

Parameters

emailstringbodyrequired

The full address, on the verified sending domain (hello@youragency.com).

namestringbodyrequired

The display name recipients see (up to 100 characters).

Response

senderobject
sendersarray<object>

Errors

Example

curl -X POST "https://api.mb-suite.com/v1/branding/email-senders" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "email": "ana@example.com",
  "name": "NAME"
}'

Try it with your test API key

With a test API key the request always goes to your practice organization: example data you can reset.

curl -X POST "https://api.mb-suite.com/v1/branding/email-senders" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "email": "ana@example.com",
  "name": "NAME"
}'
PATCH/v1/branding/email-senders/{sender_id}

Rename a sender

branding.email_senders.update

WriteIdempotentSince 2026-11-01

Changes the display name of a sender (name, up to 100 characters); the address itself does not change (remove the sender and add another). The same name changes nothing (changed false). Not found if the sender id is not in the list. Returns the sender and the whole list. Owners and admins with edit access to Branding.

Scope
branding:write
Permission
Edit in the module · Only owner, admin
MCP tool
branding_email_senders_updateOn the full surface; on the compact one, mb_execute_operation with id: "branding.email_senders.update".

Declared cost: up to 1 reads and 1 writes per call (they count against the daily quota).

Parameters

sender_idstringpathrequired

A sender id from branding.email_domain.get.

namestringbodyrequired

The new display name (up to 100 characters).

Response

senderobject
sendersarray<object>
changedboolean

Errors

Example

curl -X PATCH "https://api.mb-suite.com/v1/branding/email-senders/{sender_id}" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "NAME"
}'

Try it with your test API key

With a test API key the request always goes to your practice organization: example data you can reset.

curl -X PATCH "https://api.mb-suite.com/v1/branding/email-senders/{sender_id}" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "NAME"
}'
POST/v1/branding/email-senders/reorder

Reorder the senders

branding.email_senders.reorder

WriteIdempotentSince 2026-11-01

Sets the order of the senders: sender_ids lists every sender id exactly once, in the new order (400 sender_ids_mismatch otherwise). The first one becomes the default From for the emails that do not pick a sender (flows, reports, shared emails), so this is a real change, not a display preference. The same order changes nothing (changed false). Returns the list. Owners and admins with edit access to Branding.

Scope
branding:write
Permission
Edit in the module · Only owner, admin
MCP tool
branding_email_senders_reorderOn the full surface; on the compact one, mb_execute_operation with id: "branding.email_senders.reorder".

Declared cost: up to 1 reads and 1 writes per call (they count against the daily quota).

Parameters

sender_idsarray<string>bodyrequired

Every sender id, in the new order. The first one becomes the default sender.

Response

sendersarray<object>
changedboolean

Errors

Example

curl -X POST "https://api.mb-suite.com/v1/branding/email-senders/reorder" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "sender_ids": [
    "SENDER_ID"
  ]
}'

Try it with your test API key

With a test API key the request always goes to your practice organization: example data you can reset.

curl -X POST "https://api.mb-suite.com/v1/branding/email-senders/reorder" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
  "sender_ids": [
    "SENDER_ID"
  ]
}'
DELETE/v1/branding/email-senders/{sender_id}

Remove a sender

branding.email_senders.remove

IrreversibleSince 2026-11-01

Removes a sender from the sending domain. At least one sender always stays (409 last_sender); removing the default one makes the next in the list the default. Emails and drafts that picked this sender fall back to the default. There is no trash: to undo, add it again with the same address and name. Not found if the sender id is not in the list. Outside the app it needs a dry run and its confirm_token. Owners and admins with edit access to Branding.

Needs confirmation: first dry_run: true (preview and confirm_token, valid 10 minutes and for one run), then the same body with confirm_token. In a few operations only with certain data: the description says when. Why and how: Dry run and confirm_token.

Scope
branding:write and “Allow deletions” (branding:delete in OAuth)
Permission
Edit in the module · Only owner, admin
MCP tool
branding_email_senders_removeOn the full surface; on the compact one, mb_execute_operation with id: "branding.email_senders.remove".

Declared cost: up to 1 reads and 1 writes per call (they count against the daily quota).

Parameters

sender_idstringpathrequired

A sender id from branding.email_domain.get.

Response

removedtrue
senderobject
sendersarray<object>

Errors

Example

curl -X DELETE "https://api.mb-suite.com/v1/branding/email-senders/{sender_id}" \
  -H "Authorization: Bearer $MB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "dry_run": true
}'

Try it with your test API key

With a test API key the request always goes to your practice organization: example data you can reset.

curl -X DELETE "https://api.mb-suite.com/v1/branding/email-senders/{sender_id}" \
  -H "Authorization: Bearer $MB_TEST_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "dry_run": true
}'