Settings
Manage account settings — IP pools, email signatures, SMTP pools, unsubscribe pages, and whitelabel configuration
The settings API covers account-level configuration. All endpoints require an active dashboard session.
Requires active session (dashboard only).
Audit Log
GET /api/settings/audit
Retrieve the compliance audit log. Records include consent events, domain verification results, and billing actions.
Query parameters:
| Parameter | Type | Description |
|---|---|---|
page | integer | Page number, default 1 |
limit | integer | Records per page, default 50, max 100 |
event_type | string | Filter by event type (e.g. consent_granted, domain_verified) |
{
"entries": [
{
"id": "audit_01hx9k",
"action": "consent_granted",
"timestamp": "2025-06-14T09:00:00Z",
"metadata": { "analytics": true, "marketing": true }
}
],
"pagination": { "page": 1, "limit": 50, "total": 214 }
}IP Pools
GET /api/settings/ip-pools
List all IP pools with current capacity.
[
{ "id": "pool_t01", "name": "transactional", "pool_type": "transactional", "ips": ["198.51.100.42"], "capacity": 50000 }
]POST /api/settings/ip-pools
Create a custom IP pool.
{
"name": "my-transactional-pool",
"ips": ["198.51.100.42", "198.51.100.43"],
"pool_type": "transactional"
}Email Signatures
GET /api/settings/signatures
List all saved email signatures.
[
{ "id": "sig_abc1", "name": "Default Signature", "html": "<p>Best, Jane</p>", "is_default": true }
]POST /api/settings/signatures
Create a new signature.
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Display name for the signature |
html | string | Yes | HTML content of the signature |
is_default | boolean | No | Set as the default signature. Unsets any existing default |
curl -X POST /api/settings/signatures \
-H "Content-Type: application/json" \
-d '{
"name": "Sales Signature",
"html": "<p>Thanks,<br><strong>Jane Doe</strong><br>Sales · example.com</p>",
"is_default": false
}'DELETE /api/settings/signatures?id=:id
Delete a signature by ID. If the deleted signature was the default, no signature becomes default — you must explicitly set a new one.
SMTP Pools
GET /api/settings/smtp-pools
List SMTP pool configurations. Passwords are never returned.
POST /api/settings/smtp-pools
Create an SMTP pool.
| Field | Type | Description |
|---|---|---|
name | string | Display name |
host | string | SMTP server hostname |
port | integer | SMTP port (typically 587 or 465) |
username | string | SMTP username |
password | string | SMTP password (stored encrypted, never returned) |
encryption | tls | ssl | none | Connection encryption |
POST /api/settings/smtp-pools/:id/test
Test an SMTP connection. No body needed. Returns { success, latencyMs, error? }.
For the dedicated SMTP Pools public API surface, see the SMTP Pools reference page.
Unsubscribe Page
GET /api/settings/unsubscribe-page
Get the current unsubscribe page configuration.
{ "type": "default", "url": null, "templateId": null }POST /api/settings/unsubscribe-page
Configure a custom unsubscribe experience.
| Field | Type | Description |
|---|---|---|
type | default | custom_url | template | default uses MisarMail's built-in page |
url | string | Required when type is custom_url |
templateId | string | Required when type is template |
{ "type": "custom_url", "url": "https://app.example.com/unsubscribe" }Whitelabel
Whitelabel configuration requires the Max plan.
GET /api/settings/whitelabel
{
"brandName": "Acme Mail",
"logoUrl": "https://cdn.example.com/logo.png",
"primaryColor": "#22c55e",
"customDomain": "mail.example.com",
"hideFooterBranding": true
}POST /api/settings/whitelabel
Update whitelabel settings. All fields are optional — only provided fields are updated.
| Field | Type | Description |
|---|---|---|
brandName | string | Replaces "MisarMail" in the UI |
logoUrl | string | URL to your logo (PNG/SVG, max 500 KB) |
primaryColor | string | Hex colour for buttons and accents |
customDomain | string | Custom sending domain shown in footers |
hideFooterBranding | boolean | Remove "Powered by MisarMail" footer |