Your AWS SES. Your dedicated Mailat. See how it works
Documentation

Save Filter

Request, response and authentication details for your Mailat instance.

← All API operations
PUT/api/v1/inbox/filters/{uuid}

SaveFilter Explicit user filter destinations override the automatic DMARC report folder. actionFolder accepts dmarc-reports; label-only and mark-read filters retain the automatically selected folder. Spam and virus decisions are preserved.

Authentication & compatibility

Use a scoped bearer API key with email:manage. The key is bound to its user and organization.

SES email workflow and its stored mailbox/configuration data. Provider actions require configured AWS permissions and verified owned domains; receiving is opt-in.

Contract 2026-10-04. Your running instance's /api/v1/openapi.json is authoritative for its deployed release.

Request

Set MAILAT_BASE_URL to your instance origin (without /api/v1) and MAILAT_TOKEN to an appropriate credential. Replace path placeholders and example data before running. These examples do not execute in this page.

cURL request
curl --request PUT "$MAILAT_BASE_URL/api/v1/inbox/filters/{uuid}" \
  --header "Authorization: Bearer $MAILAT_TOKEN" \
  --header 'Content-Type: application/json' \
  --data '{
  "actionFolder": "archive",
  "active": true,
  "conditionLogic": "all",
  "conditions": [
    {
      "field": "subject",
      "operator": "contains",
      "value": "invoice"
    }
  ],
  "name": "Invoice mail"
}'

Parameters

path
uuidstringrequired

Request body (required)

application/json

bodyobjectrequired
Fields
actionArchiveboolean
actionFolderstring

An explicit destination overrides automatic DMARC organization. Empty leaves the selected folder unchanged.

Allowed: "" | "inbox" | "archive" | "spam" | "trash" | "dmarc-reports"

actionForwardstring
actionLabelsarray
Each itemstring
actionMarkReadboolean
actionStarboolean
actionTrashboolean
activeboolean
conditionLogicstring

all, any

conditionsarray
Each itemobject
Fields · model.FilterCondition
fieldstring

from, to, subject, body, hasAttachment

operatorstring

contains, equals, startsWith, endsWith, regex

valuestring
identityIdall of · nullable
Variant 1integer (int64)
namestring
priorityinteger (int64)

Responses

HTTP statuses and body shapes below come from the pinned contract. Not every shared error applies to every request. Retain the original idempotency key when retrying a send.

200 · Success
Header: X-RateLimit-Remaininginteger

Remaining requests in this API key's current minute window (present for API-key authentication).

minimum: 0

application/json

responseobject
Fields
codeintegerrequired
dataall of · nullable
Variant 1object
Fields · model.InboxFilter
actionArchiveboolean
actionFolderstring

An explicit destination overrides automatic DMARC organization. Empty leaves the selected folder unchanged.

Allowed: "" | "inbox" | "archive" | "spam" | "trash" | "dmarc-reports"

actionForwardstring
actionLabelsarray
Each itemstring
actionMarkReadboolean
actionStarboolean
actionTrashboolean
activeboolean
conditionLogicstring

all, any

conditionsarray
Each itemobject
Fields · model.FilterCondition
fieldstring

from, to, subject, body, hasAttachment

operatorstring

contains, equals, startsWith, endsWith, regex

valuestring
createdAtstring (date-time)
idinteger (int64)
identityIdall of · nullable
Variant 1integer (int64)
lastMatchedAtall of · nullable
Variant 1string (date-time)
matchCountinteger (int64)
namestring
orgIdinteger (int64)
priorityinteger (int64)
updatedAtstring (date-time)
userIdinteger (int64)
uuidstring
messagestringrequired
400 · Invalid input

application/json

responseobject
Fields
codeintegerrequired
messagestringrequired
401 · Missing, expired or revoked authentication

application/json

responseobject
Fields
codeintegerrequired
messagestringrequired
403 · Insufficient permission

application/json

responseobject
Fields
codeintegerrequired
messagestringrequired
404 · Resource not found

application/json

responseobject
Fields
codeintegerrequired
messagestringrequired
409 · Conflict or changed idempotency payload

application/json

responseobject
Fields
codeintegerrequired
messagestringrequired
410 · Recovery cursor expired; resynchronize

application/json

responseobject
Fields
codeintegerrequired
messagestringrequired
429 · Rate limit exceeded; respect Retry-After
Header: Retry-Afterinteger

Seconds until the next fixed-minute request window.

minimum: 1

application/json

responseobject
Fields
codeintegerrequired
messagestringrequired
500 · Internal failure; retain the idempotency key

application/json

responseobject
Fields
codeintegerrequired
messagestringrequired
Download the full OpenAPI contract