MOLTED EMAIL

Sender Addresses & Domain Rate Limits

Manage the local part of your sending address and configure per-domain recipient throttling.

Sender addresses

Each tenant has a sender address -- the localpart@domain from which email is sent. By default this is a system-assigned address on the shared agent.molted.email domain. Once you add and verify a custom domain, you can update the local part to match your brand.

List sender addresses

GET https://api.molted.email/v1/me/sender-addresses
curl
curl https://api.molted.email/v1/me/sender-addresses \
  -H "Cookie: YOUR_SESSION_COOKIE"
Response
[
  {
    "id": "addr_abc123",
    "localPart": "hello",
    "domain": "notifications.yourcompany.com",
    "isDefault": true,
    "status": "active"
  }
]

Update the local part

PATCH https://api.molted.email/v1/me/sender-address
curl
curl -X PATCH https://api.molted.email/v1/me/sender-address \
  -H "Cookie: YOUR_SESSION_COOKIE" \
  -H "Content-Type: application/json" \
  -d '{"localPart": "notifications"}'

Local part requirements

  • 2 to 64 characters
  • Lowercase alphanumeric characters, dots (.), and hyphens (-)
  • No leading or trailing dots/hyphens
  • No consecutive dots or hyphens
  • No reserved names (e.g., postmaster, abuse, noreply)

Domain rate limits

Per-domain rate limits throttle how many emails your tenant sends to any single recipient domain (e.g., gmail.com) within an hour. This protects your sender reputation when sending to large consumer domains.

Get domain rate limits

GET https://api.molted.email/v1/agent/domains/:domainId/rate-limits
curl
curl "https://api.molted.email/v1/agent/domains/DOMAIN_UUID/rate-limits" \
  -H "Authorization: Bearer YOUR_API_KEY"
Response
{
  "domainHourlyLimit": 500,
  "domainHourlyLimitTransactional": null
}
FieldDescription
domainHourlyLimitMax emails per recipient domain per hour (all sends).
domainHourlyLimitTransactionalSeparate limit for transactional sends. null means no limit is applied.

Update domain rate limits

PATCH https://api.molted.email/v1/agent/domains/:domainId/rate-limits
curl
curl -X PATCH "https://api.molted.email/v1/agent/domains/DOMAIN_UUID/rate-limits" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "domainHourlyLimit": 1000,
    "domainHourlyLimitTransactional": 200
  }'

Set a field to null to remove that limit.

Portal endpoints

Domain rate limits can also be managed from the portal using cookie auth:

MethodPathDescription
GET/v1/me/domains/:domainId/rate-limitsGet domain rate limits.
PATCH/v1/me/domains/:domainId/rate-limitsUpdate domain rate limits.

What happens when a domain rate limit is exceeded

Sends blocked by a domain rate limit are rejected with reason domain_throttled:

{
  "requestId": "req_abc123",
  "status": "blocked",
  "reason": "domain_throttled"
}

Transactional sends with no transactional limit set are exempt from domain throttling.