Reference
Routes below are on Mursil.Server. The versioned group is /api/v1/mursil. Preference and tracking routes are on the site root.
Roles and scopes
Claim role | Notes |
|---|
| SystemAdmin | Platform owner. SuperAdmin is an alias. |
| TenantOwner | Can create providers and applications. |
| TenantAdmin | Tenant administration. Included in transactional send. |
| TemplateEditor | Template catalog and versions. |
| Operator | Delivery actions, audit, provider pause. |
| Viewer | Dashboards. |
Scopes: mursil.messages.send, mursil.templates.manage. Audience: mursil-api.
Recipient routes
| Method and path | Auth |
|---|
GET /p/{token} | Anonymous. Signed preference center. |
POST /p/{token} | Anonymous. Signed preference update. |
GET /t/o/{token} | Anonymous. Open pixel. |
GET /t/c/{token} | Anonymous. Signed click redirect. |
POST /api/v1/mursil/preferences/one-click | Anonymous. |
Send and delivery
| Method and path | Purpose |
|---|
POST /messages/email | Template send. |
POST /messages/email/batch | Batch send. |
POST /messages/email/test | Test-send. |
GET /messages/status | Redacted status. |
POST /messages/{messageRequestId}/cancel | Cancel scheduled. |
POST /messages/{messageRequestId}/engagement | Record engagement. |
POST /messages/replies | Inbound reply. No mailbox. |
GET /messages/deliveries/triage | Failure list. |
GET /messages/deliveries/{deliveryId} | One delivery. |
POST /messages/deliveries/{deliveryId}/retry | Retry. |
POST /messages/deliveries/{deliveryId}/suppress | Suppress. |
POST /messages/deliveries/{deliveryId}/resolve | Resolve. |
Prefix every row in this table and the tables below with /api/v1/mursil unless the path already starts with /p/ or /t/.
Templates
| Method and path | Purpose |
|---|
GET /templates | List. |
POST /templates | Create. |
GET /templates/{templateId} | One template. |
POST /templates/{templateId}/versions | New draft version. |
POST /templates/{templateId}/versions/{versionId}/submit-review | Submit for review. |
POST /templates/{templateId}/versions/{versionId}/approve | Approve. |
POST /templates/{templateId}/versions/{versionId}/publish | Publish. |
POST /templates/{templateId}/versions/{versionId}/pause | Pause. |
POST /templates/{templateId}/versions/{versionId}/resume | Resume. |
PUT /templates/{templateId}/versions/{versionId}/branding | Brand binding. |
GET /templates/{templateId}/diff | Version diff. |
GET /templates/{templateId}/locale-coverage | Locale coverage. |
POST /templates/{templateId}/locale-preview | Side-by-side locale preview. |
POST /templates/preview | Preview. |
POST /templates/lint | Lint. |
POST /templates/catalog/import | Import starter catalog. |
GET /templates/{templateId}/bundle | Export bundle. |
POST /templates/bundles | Import bundle. |
POST /templates/push | Push a draft template from the integration package. |
Brand, provider, domain, application
| Method and path | Purpose |
|---|
GET /brand-profiles | List. |
POST /brand-profiles | Create. |
PUT /brand-profiles/{brandProfileId} | Update. |
POST /brand-profiles/{brandProfileId}/activate | Activate. |
GET /providers | List connections. |
GET /providers/kinds | List kinds. |
POST /providers | Create connection. |
POST /providers/{providerConnectionId}/pause | Pause. |
POST /providers/{providerConnectionId}/resume | Resume. |
POST /providers/{providerConnectionId}/routing | Routing policy. |
POST /providers/{providerConnectionId}/events | Signed provider callback. |
GET /sender-domains | List. |
POST /sender-domains | Create. |
GET /sender-domains/{senderDomainId} | One domain. |
GET /sender-domains/{senderDomainId}/lookup | DNS lookup. |
POST /sender-domains/{senderDomainId}/verify | Verify. |
POST /applications | Register an application. |
GET /applications/controls | Sandbox, rate, default provider. |
POST /applications/sandbox | Set sandbox. |
POST /applications/rate-limit | Set sends per minute. |
POST /applications/default-provider | Set default connection. |
Operations
| Method and path | Purpose |
|---|
GET /dashboard | Summary. |
GET /dashboard/watchlist | Watch list. |
GET /dashboard/operator-action-queue | Operator queue. |
GET /dashboard/delivery-health | Delivery health. |
GET /dashboard/recipient-domain-failures | Failures by domain. |
GET /audit | Audit records. |
GET /suppressions/export | Export. |
POST /suppressions/import | Import hashed rows. |
POST /tenants/engagement-tracking | Tracking switch. |
POST /retention/rendered-content/purge | Purge rendered content past retention. |
Health for the process is GET /health on the server port, not under /api/v1/mursil.
Glossary
| Term | Meaning |
|---|
| Template key | Stable id callers send. Not the display name. |
| Published version | The immutable content production send resolves. |
| Brand profile | Visual identity applied at render time. |
| Provider connection | A configured transport plus a secret reference. |
| Sender domain | From-domain verified with SPF, DKIM, and DMARC. |
| Idempotency key | Caller key that makes a repeated send the same message request. |
| Dead letter | A delivery that exhausted retries. |
| Suppression | A hashed recipient the platform will not mail for a scope. |
| Outbox | Transactional store of integration events. Delivery to subscribers is outside Mursil. |
| Dev issuer | Local-only token mint. Not part of a published image. |
| Multi-tenancy switch | Mursil:MultiTenancy. False until one deployment serves many organizations. |