Lettermint Team API

AnalyticsBreakdownRow

Metric values for one group of dimension values.
​AnalyticsMetricValues · required

Values of the selected metrics. Rates are fractions; null when not available.

​AnalyticsRateBases · required

Numerators and denominators of the selected rate metrics.

​object · required

Metric values for the comparison period.

​object
first_seen
​string | null · date-time

For a row grouped by smtp_response_group: when a deferral or bounce of the team first returned this reply within the last 90 days, in any project and regardless of the query window and filters.

last_seen
​string | null · date-time

For a row grouped by smtp_response_group: when a deferral or bounce of the team last returned this reply, in any project and regardless of the query window and filters.

AnalyticsComparison

string · enum
Enum values:
previous_period

A comparison period.

AnalyticsComparisonValues

Metric values for the comparison period.
​AnalyticsMetricValues · required

Values of the selected metrics. Rates are fractions; null when not available.

​AnalyticsRateBases · required

Numerators and denominators of the selected rate metrics.

AnalyticsDimension

anyOf
At least one variant must match. Multiple variants may match simultaneously.

Decision Table

VariantMatching Criteria
type = string
type = string
Properties for Variant 1:
string · enum
Enum values:
project_id
route_id
message_type
sending_domain
recipient_domain
provider_family
provider_subtype
from_address

AnalyticsFilter

A dimension filter.
​AnalyticsDimension · required

A catalogue dimension or tag: to filter by. is_human, is_privacy, is_bot and is_scanner select an engagement class: filter them with the value 1 to restrict engagement metrics to that class.

operator
​AnalyticsFilterOperator · enum · required

eq requires one value; in and not_in require one or more values; is_null and is_not_null require no values.

Enum values:
eq
in
not_in
is_null
is_not_null
values
​string[] · maxItems: 100

String values to match. Supply one for eq, one or more for in/not_in, and none for null checks. project_id and route_id take UUIDs; smtp_code takes a three-digit reply code.

AnalyticsFilterOperator

string · enum
Enum values:
eq
in
not_in
is_null
is_not_null

A filter operator.

AnalyticsGroupDimension

anyOf
At least one variant must match. Multiple variants may match simultaneously.

Decision Table

VariantMatching Criteria
type = string
type = string
Properties for Variant 1:
string · enum
Enum values:
project_id
route_id
message_type
sending_domain
recipient_domain
provider_family
provider_subtype
from_address

AnalyticsInterval

string · enum
Enum values:
hour
day
week

A time-series bucket size.

AnalyticsMeta

The time window and data availability of the results.
time_basis
​string · enum · required
Enum values:
event
timezone
​string · required
interval
​AnalyticsInterval · enum · required

A time-series bucket size.

Enum values:
hour
day
week
from
​string · date-time · required

Start of the window read, aligned down to the alignment grain.

to
​string · date-time · required

Exclusive end of the window, aligned up to the alignment grain.

effective_to
​string · date-time · required

Exclusive end of the counted data: to, or generated_at while the window is ongoing.

alignment
​string · enum · required

Grain the requested boundaries were widened to: whole UTC hours, or whole UTC days for personal-data dimensions. Counts cover exactly from to effective_to.

Enum values:
hour
day
generated_at
​string · date-time · required
available_since
​string · date-time · required
partial
​boolean · required
ongoing
​boolean · required
collection_completeness
​string · enum · required
Enum values:
best_effort
last_ingested_at
​string | null · date-time · required

Latest ingestion among matching rollup rows. This is not a completeness watermark.

metric_definition_version
​string · required
ranked_group_limit
​integer · min: 0 · required
​object

AnalyticsMetric

string · enum
Enum values:
accepted
processed
suppressed
policy_rejected
application_failed
mta_accepted
canceled
messages

A metric from the analytics catalogue.

AnalyticsMetricChange

Change of a metric against the comparison period.
absolute
​number | null
relative
​number | null
percentage_points
​number | null

AnalyticsMetricValues

Values of the selected metrics. Rates are fractions; null when not available.
accepted
​integer | null
processed
​integer | null
suppressed
​integer | null
policy_rejected
​integer | null
application_failed
​integer | null
mta_accepted
​integer | null
canceled
​integer | null
messages
​integer | null
delivered
​integer | null
bounced
​integer | null
soft_bounced
​integer | null
administratively_bounced
​integer | null
deferred_recipients
​integer | null
deferred_events
​integer | null
delivery_attempts
​integer | null
attempted_recipients
​integer | null
transport_outcome_recipients
​integer | null
effective_delivered
​integer | null
open_tracked_delivered
​integer | null
click_tracked_delivered
​integer | null
out_of_band_bounced_recipients
​integer | null
out_of_band_bounce_events
​integer | null
complained
​integer | null
unsubscribed
​integer | null
human_opens
​integer | null
human_opens_events
​integer | null
human_clicks
​integer | null
human_clicks_events
​integer | null
machine_opens
​integer | null
machine_opens_events
​integer | null
machine_clicks
​integer | null
machine_clicks_events
​integer | null
privacy_opens
​integer | null
privacy_opens_events
​integer | null
privacy_clicks
​integer | null
privacy_clicks_events
​integer | null
bot_opens
​integer | null
bot_opens_events
​integer | null
bot_clicks
​integer | null
bot_clicks_events
​integer | null
scanner_opens
​integer | null
scanner_opens_events
​integer | null
scanner_clicks
​integer | null
scanner_clicks_events
​integer | null
observed_opens
​integer | null
observed_opens_events
​integer | null
observed_clicks
​integer | null
observed_clicks_events
​integer | null
delivery_rate
​number | null
effective_delivery_rate
​number | null
bounce_rate
​number | null
deferral_rate
​number | null
complaint_rate
​number | null
human_open_rate
​number | null
human_click_rate
​number | null
processing_latency_p50_ms
​number | null
processing_latency_p95_ms
​number | null
processing_latency_p99_ms
​number | null
processing_latency_samples
​integer | null
delivery_latency_p50_ms
​number | null
delivery_latency_p95_ms
​number | null
delivery_latency_p99_ms
​number | null
delivery_latency_samples
​integer | null
total_latency_p50_ms
​number | null
total_latency_p95_ms
​number | null
total_latency_p99_ms
​number | null
total_latency_samples
​integer | null

AnalyticsPagination

Breakdown pagination.
total_groups
​integer · min: 0 · required
returned_groups
​integer · min: 0 · required
next_cursor
​string | null · required
truncated
​boolean · required

AnalyticsQuery

An analytics query.
metrics
​AnalyticsMetric[] · minItems: 1 · required

Every count is attributed to the time its event occurred, so a message accepted in one bucket can be delivered in the next. Delivery outcomes happen once per recipient, so their event counts equal recipient counts. messages counts accepted messages; mta_accepted and attempted_recipients count recipients the MTA received. Under provider, infrastructure and diagnosis dimensions, sent/attempted count delivery attempts: mta_accepted and attempted_recipients equal delivery_attempts when a query groups or filters by provider_family, provider_subtype, dedicated_ip, dedicated_pool_id, infrastructure_state or an SMTP diagnosis dimension, because the MTA assigns those values at the delivery attempt; the other lifecycle metrics return null there, and a breakdown by those dimensions omits the unknown group; provider_subtype is null for providers without subtypes. deferred_recipients counts recipients delayed on the first attempt; deferred_events counts every deferral. delivery_attempts counts delivered, deferred and in-band bounced attempts. transport_outcome_recipients = delivered + bounced + soft_bounced. effective_delivered = delivered minus out-of-band bounces in the same period and can be negative for a single bucket or group. Engagement counts per class are unique per recipient, counted when the first qualifying open or click occurred; _events variants count every observation. Rates are fractions; zero denominators return null, and event-time rates can exceed 1. Latency percentiles are milliseconds read from log-scale histograms (error below 15 percent); _samples returns the sample count. Personal message dimensions support daily buckets over the message retention period. delivery_rate = delivered / transport_outcome_recipients. effective_delivery_rate = effective_delivered / transport_outcome_recipients. bounce_rate = bounced / transport_outcome_recipients. deferral_rate = deferred_events / delivery_attempts. complaint_rate = complained / delivered. human_open_rate = human_opens / open_tracked_delivered. human_click_rate = human_clicks / click_tracked_delivered.

Enum values:
accepted
processed
suppressed
policy_rejected
application_failed
mta_accepted
canceled
messages
from
​string

Inclusive calendar date or RFC 3339 instant. Default: 30 calendar days including today. Instants are aligned outward to whole UTC hours, or whole UTC days when from_address or subject is grouped or filtered; meta.from, meta.to, meta.effective_to and meta.alignment report the exact window used.

to
​string

Inclusive calendar date or exclusive RFC 3339 instant. Maximum window: 90 days. Instants are aligned outward to whole UTC hours, or whole UTC days when from_address or subject is grouped or filtered; meta.from, meta.to, meta.effective_to and meta.alignment report the exact window used.

timezone
​string

IANA time zone. Default: UTC.

include
​AnalyticsSection[]

Result sections. Default: summary only. breakdown requires group_by, and group_by requires breakdown.

Enum values:
summary
time_series
breakdown
​AnalyticsGroupDimension[] · maxItems: 3

Up to three grouping dimensions for breakdown rows. Requires breakdown in include. Default: no grouping.

​AnalyticsFilter[] · maxItems: 20

Dimension filters combined with AND. Default: no filters. Each metric must support every filter dimension.

interval
​AnalyticsInterval · enum

Time-series bucket size: an hour, a calendar day, or a week from Monday, in the query time zone. Default: day.

Enum values:
hour
day
week
compare
​AnalyticsComparison · enum

Compares with the preceding period of the same duration. Omit for no comparison.

Enum values:
previous_period
include_trend
​boolean

Includes trends for breakdown rows. Requires breakdown and group_by. Default: false.

​AnalyticsSort

Optional breakdown sort. Omit to use the default row order.

limit
​integer · min: 1 · max: 200

Maximum breakdown rows per page. Default: 50; maximum: 200.

cursor
​string

Repeat the same query with this cursor. It expires within 60 seconds.

AnalyticsRateBase

Numerator and denominator of a rate metric.
numerator
​integer | null · required
denominator
​integer | null · required

AnalyticsRateBases

Numerators and denominators of the selected rate metrics.
​AnalyticsRateBase

Numerator and denominator of a rate metric.

​AnalyticsRateBase

Numerator and denominator of a rate metric.

​AnalyticsRateBase

Numerator and denominator of a rate metric.

​AnalyticsRateBase

Numerator and denominator of a rate metric.

​AnalyticsRateBase

Numerator and denominator of a rate metric.

​AnalyticsRateBase

Numerator and denominator of a rate metric.

​AnalyticsRateBase

Numerator and denominator of a rate metric.

AnalyticsResponse

Analytics results with their window metadata and pagination.
​AnalyticsResults · required

The selected result sections.

​AnalyticsMeta · required

The time window and data availability of the results.

​AnalyticsPagination · required

Breakdown pagination.

AnalyticsResults

The selected result sections.
​AnalyticsSummary

Metric values for the whole window.

​AnalyticsTimeSeriesPoint[]
​AnalyticsBreakdownRow[]

AnalyticsSection

string · enum
Enum values:
summary
time_series
breakdown

A result section.

AnalyticsSort

A breakdown sort order.
metric
​AnalyticsMetric · enum · required

Metric used to sort breakdown rows. Must also be selected in metrics.

Enum values:
accepted
processed
suppressed
policy_rejected
application_failed
mta_accepted
canceled
messages
direction
​string · enum · required

Ascending or descending order for the selected sort metric.

Enum values:
asc
desc

AnalyticsSummary

Metric values for the whole window.
​AnalyticsMetricValues · required

Values of the selected metrics. Rates are fractions; null when not available.

​AnalyticsRateBases · required

Numerators and denominators of the selected rate metrics.

Metric values for the comparison period.

​object

AnalyticsTimeSeriesPoint

Metric values for one time-series bucket.
​AnalyticsMetricValues · required

Values of the selected metrics. Rates are fractions; null when not available.

​AnalyticsRateBases · required

Numerators and denominators of the selected rate metrics.

from
​string · date-time · required
to
​string · date-time · required
available
​boolean · required
partial
​boolean · required

Metric values for the comparison period.

​object

ApiError

Structured API error.
​object · required

ApiTokenSource

string · enum
Enum values:
dashboard
api
cli
mcp

Where an API token was created.

AttachmentDelivery

string · enum
Enum values:
inline
url

BlockedFileTypes

File types that cannot be sent as email attachments.
extensions
​string[] · required

Blocked file extensions, without the leading dot

mime_types
​string[] · required

Blocked MIME types

BuiltInTeamRole

string · enum
Enum values:
owner
admin
member

CreateTeamInviteData

email
​string · email · maxLength: 255 · required
role_id
​string · uuid · required
​object · required

CreateTeamRoleData

name
​string · maxLength: 100 · required
permissions
​RbacPermission[] · minItems: 1 · maxItems: 100 · unique · required
Enum values:
team:manage
billing:manage
security:manage
audit:read
support:manage
members:read
members:manage
roles:manage
description
​string | null · maxLength: 255

DeliveryMode

string · enum
Enum values:
live
sandbox

DkimMode

string · enum
Enum values:
legacy_txt
managed_cname

DmarcPolicy

string · enum
Enum values:
none
quarantine
reject

DnsRecordPurpose

string · enum
Enum values:
return_path
dmarc
dkim_legacy
dkim_primary
dkim_secondary

DnsRecordStatus

string · enum
Enum values:
active
failed
pending
active
The record is active and verified.
failed
The record could not be verified.
pending
The record is pending verification.

DnsRecordVerificationFailureResponse

A DNS record that did not pass verification, with the verification details.
message
​string · required

Human-readable verification error

​DnsVerificationResultData · required

DnsVerificationError

Why a DNS record did not pass verification.
record_id
​string · required

The DNS record ID

error
​string · required

DnsVerificationFailedRecord

A DNS record that did not pass verification.
id
​string · required

The DNS record ID

type
​RecordType · enum · required
Enum values:
TXT
CNAME
MX
name
​string · required

The record hostname

DnsVerificationFailureResponse

One or more required DNS records of the domain did not pass verification.
message
​string · required

Human-readable verification result

​DnsVerificationFailedRecord[] · required

Required records that did not pass verification

​DnsVerificationError[] · required

Verification errors of every failed record, including recommended records

failed_count
​integer · required

The number of required records that failed

total_count
​integer · required

The number of required records

DnsVerificationResultData

dmarc_spf_alignment_issue
​object | null · required
verified
​boolean · required
error
​string | null · required
expected_record
​string | null · required
found_record
​string | null · required
dmarc_policy_domain
​string | null · required
​required

DnsVerificationScope

string · enum
Enum values:
required
recommended
migration
deprecated

DnsVerificationSuccessResponse

All required DNS records of the domain passed verification.
message
​string · required

Human-readable verification result

​DnsVerificationFailedRecord[] · required

Recommended records that did not pass verification. They do not block verification

DomainData

id
​string · required
domain
​string · required
dkim_mode
​DkimMode · enum · required
Enum values:
legacy_txt
managed_cname
rotation_ready
​boolean · required
status_changed_at
​string | null · date-time · required
created_at
​string · date-time · required
​DomainDnsRecordData[]
​object[]

DomainDnsRecordData

id
​string · required
type
​RecordType · enum · required
Enum values:
TXT
CNAME
MX
hostname
​string · required
fqdn
​string · required
content
​string · required
status
​DnsRecordStatus · enum · required
active
The record is active and verified.
failed
The record could not be verified.
pending
The record is pending verification.
Enum values:
active
failed
pending
purpose
​DnsRecordPurpose · enum · required
Enum values:
return_path
dmarc
dkim_legacy
dkim_primary
dkim_secondary
verification_scope
​DnsVerificationScope · enum · required
Enum values:
required
recommended
migration
deprecated
required_for_verification
​boolean · required
verified_at
​string | null · required
last_checked_at
​string | null · date-time · required

DomainListData

id
​string · required
domain
​string · required
status
​DomainStatus · enum · required
verified
The domain is active and verified.
partially_verified
Some DNS records of the domain could not be verified.
pending_verification
The domain is new and verification is pending.
failed_verification
The domain verification failed.
Enum values:
verified
partially_verified
pending_verification
failed_verification
dkim_mode
​DkimMode · enum · required
Enum values:
legacy_txt
managed_cname
status_changed_at
​string | null · date-time · required
created_at
​string · date-time · required

DomainMutationResponse

The domain after a change, with a confirmation message.
​DomainData · required
message
​string · required

Human-readable confirmation

DomainStatus

string · enum
Enum values:
verified
partially_verified
pending_verification
failed_verification
verified
The domain is active and verified.
partially_verified
Some DNS records of the domain could not be verified.
pending_verification
The domain is new and verification is pending.
failed_verification
The domain verification failed.

DuplicateTeamRoleData

name
​string · maxLength: 100 · required
description
​string | null · maxLength: 255

ErrorMessage

Error with only a message.
message
​string · required

Error overview.

InboundDomainVerification

Whether the inbound domain MX records point to Lettermint. The MX record lists are only returned when verification fails.
verified
​boolean · required
message
​string · required

Human-readable verification result

expected_mx_records
​string[]

The MX records the inbound domain must publish

found_mx_records
​string[]

The MX records found for the inbound domain

InboundDomainVerificationResponse

The result of an inbound domain MX verification.
​InboundDomainVerification · required

Whether the inbound domain MX records point to Lettermint. The MX record lists are only returned when verification fails.

InitialRoutes

string · enum
Enum values:
both
transactional
broadcast

MessageAttachmentData

size
​integer · required
Default: 0
filename
​string · required
Default: unknown
content_id
​string | null · required
content_type
​string · required
Default: application/octet-stream

MessageData

id
​string · required
type
​MessageType · enum · required
Enum values:
inbound
outbound
status
​MessageStatus · enum · required
Enum values:
scheduled
pending
queued
quarantined
suppressed
processed
delivered
opened
delivery_mode
​DeliveryMode · enum · required
Enum values:
live
sandbox
​required
status_changed_at
​string | null · date-time · required
scheduled_at
​string | null · date-time · required
tag
​string | null · required
​object[] · required
from_email
​string · required
from_name
​string | null · required
reply_to
​array | null · required
subject
​string | null · required
​array | null · required
​array | null · required
​array | null · required
​array | null · required
​object | null · required
route_id
​string · required
created_at
​string · date-time · required
retained_until
​string | null · date-time · required

Until when the message is available. Null while a scheduled message waits to be sent, because its retention period starts when it is sent

resent_from_message_id
​string | null · required

The ID of the message this message resent. Null when it is not a resend

spam_score
​number | null

Overall spam assessment score. Scores below 5 are clean, 5 through 10 indicate potential spam, scores above 10 and below 15 are likely spam, and 15 or higher is definite spam. Null means no assessment is available. Available on plans with Spam Insights

​SpamSymbol[]

Detailed rules that contributed to the spam assessment. Available on plans with Spam Insights in individual-message responses

MessageEventData

message_id
​string · required
event
​MessageEventType · enum · required
Enum values:
scheduled
rescheduled
canceled
released
queued
processed
suppressed
delivered
tag
​string | null · required
​object[] · required
​object | null · required

Event-specific metadata. For opened and clicked events, reason_codes and engagement.reason_codes list broad categories behind the bot classification: privacy_proxy, image_proxy, link_protection, known_bot, security_network, timing, link_pattern, request_shape, unconfirmed, confirmed, sandbox or other. New categories can be added. Use classification and counts_for_metrics for decisions

timestamp
​string · date-time · required

MessageEventType

string · enum
Enum values:
scheduled
rescheduled
canceled
released
queued
processed
suppressed
delivered

MessageListData

id
​string · required
type
​MessageType · enum · required
Enum values:
inbound
outbound
status
​MessageStatus · enum · required
Enum values:
scheduled
pending
queued
quarantined
suppressed
processed
delivered
opened
delivery_mode
​DeliveryMode · enum · required
Enum values:
live
sandbox
​required
scheduled_at
​string | null · date-time · required
from_email
​string · required
from_name
​string | null · required
subject
​string | null · required
​array | null · required
​array | null · required
​array | null · required
reply_to
​array | null · required
tag
​string | null · required
​object[] · required
status_changed_at
​string | null · required
created_at
​string · required
retained_until
​string | null · date-time · required

Until when the message is available. Null while a scheduled message waits to be sent, because its retention period starts when it is sent

spam_score
​number | null

Overall spam assessment score. Scores below 5 are clean, 5 through 10 indicate potential spam, scores above 10 and below 15 are likely spam, and 15 or higher is definite spam. Null means no assessment is available. Available on plans with Spam Insights

MessageRecipientData

email
​string · required
name
​string | null · required
​required

MessageResponse

Confirmation that a request succeeded.
message
​string · required

Human-readable confirmation

MessageStatsData

messages_transactional
​integer · required
messages_broadcast
​integer · required
messages_inbound
​integer · required
deliverability
​number · required

MessageStatus

string · enum
Enum values:
scheduled
pending
queued
quarantined
suppressed
processed
delivered
opened

MessageType

string · enum
Enum values:
inbound
outbound

PendingSendMailResponse

An accepted message that is queued for delivery.
message_id
​string · required
status
​string · const · required
Const value: pending
sandbox
​boolean · const

Present when the project uses Sandbox delivery

Const value:
sandbox_result
​SandboxResult · enum

The simulated delivery result. Present when the project uses Sandbox delivery

Enum values:
delivered
hard_bounced
soft_bounced
deferred
failed
suppressed
spam_complaint
auto_replied

Plan

string · enum
Enum values:
free
starter
growth
pro

ProcessInboundMessageResponse

The queued release of a quarantined inbound message.
​ProcessInboundMessageResult · required

A quarantined inbound message that was queued for webhook delivery.

ProcessInboundMessageResult

A quarantined inbound message that was queued for webhook delivery.
message_id
​string · required
status
​string · const · required
Const value: queued
webhook_target_count
​integer · required

The number of webhooks the message is delivered to

ProjectAccessScope

string · enum
Enum values:
all
selected

ProjectApiToken

A Project API token without its value.
id
​string · required
project_id
​string · required
name
​string · required
short_token
​boolean · required

Whether the token uses the shorter format for devices that limit password length

​required
allowed_ips
​string[] · required

IP addresses and ranges allowed to use the token. Empty means any address

last_used_at
​string | null · date-time · required
created_at
​string · date-time · required

ProjectApiTokenCreatedResponse

The new Project API token. Its value is only returned once.
​ProjectApiTokenSecret · required

A new Project API token with its value, which is only returned once.

​required
message
​string · required

Human-readable confirmation

ProjectApiTokenSecret

A new Project API token with its value, which is only returned once.
id
​string · required
project_id
​string · required
name
​string · required
short_token
​boolean · required

Whether the token uses the shorter format for devices that limit password length

​required
allowed_ips
​string[] · required

IP addresses and ranges allowed to use the token. Empty means any address

last_used_at
​string | null · date-time · required
created_at
​string · date-time · required
token
​string · required

The Project API token. It is only returned once. Use it as the API token and as the SMTP password

ProjectCreatedData

​ProjectData · required
message
​string · required
api_token
​string

ProjectData

id
​string · required
name
​string · required
delivery_mode
​DeliveryMode · enum · required
Enum values:
live
sandbox
smtp_enabled
​boolean · required
redact_email_content
​boolean · required
default_route_id
​string | null · required
token_generated_at
​string | null · date-time · required
token_last_used_at
​string | null · date-time · required
token_last_used_ip
​string | null · required
created_at
​string · required
updated_at
​string · required
​RouteData[]
routes_count
​integer
​DomainData[]
domains_count
​integer
​

ProjectListData

id
​string · required
name
​string · required
delivery_mode
​DeliveryMode · enum · required
Enum values:
live
sandbox
smtp_enabled
​boolean · required
routes_count
​integer · required
domains_count
​integer · required
​MessageStatsData · required
created_at
​string · required
updated_at
​string · required

ProjectMutationResponse

The project after a change, with a confirmation message.
​ProjectData · required
message
​string · required

Human-readable confirmation

RbacConflictCode

string · enum
Enum values:
stale_resource
owner_protected
last_owner
built_in_role_immutable
custom_role_requires_pro

RbacPermission

string · enum
Enum values:
team:manage
billing:manage
security:manage
audit:read
support:manage
members:read
members:manage
roles:manage

RecordType

string · enum
Enum values:
TXT
CNAME
MX

ReportForwardingRequest

destination
​string · email · maxLength: 254 · pattern: ^[\x21-\x7e]+$ · required

ReportForwardingResource

destination
​string | null · required
verified
​boolean · required
verified_at
​string | null · required

RescheduleMessageRequest

scheduled_at
​string · maxLength: 255 · required

ResendMessageRequest

recipients
​string[] · minItems: 1 · maxItems: 150 · unique

Recipients of the original message to resend to. Omit to resend to every original recipient.

Example: ["recipient@example.com"]

RetryWebhookDeliveryResponse

Confirmation that a manual retry of a delivery was queued.
message
​string · required

Human-readable confirmation

delivery_id
​string · required

The ID of the delivery that is retried

RotateProjectTokenResponse

The project and its new legacy Project API token.
​ProjectData · required
new_token
​string · required

The new Project API token. It is only returned once

message
​string · required

Human-readable confirmation

RouteData

id
​string · required
project_id
​string · required
slug
​string · required
name
​string · required
route_type
​RouteType · enum · required
Enum values:
transactional
broadcast
inbound
is_default
​boolean · required
created_at
​string · date-time · required
updated_at
​string · date-time · required
inbound_address
​string | null

Permanent compatibility address for this inbound route (<route-uuid-without-hyphens>@inbound.lettermint.co). It keeps working alongside the catch-all route domain

inbound_route_domain
​string | null

Catch-all receiving domain for this inbound route. Mail to any address at this domain reaches the route. Null for non-inbound routes

inbound_mx_hostname
​string
inbound_domain
​string | null
inbound_domain_verified_at
​string | null · date-time
inbound_spam_threshold
​number | null
attachment_delivery
​AttachmentDelivery · enum
Enum values:
inline
url
settings
​object | null

Route settings available for this route type and team feature access

​ProjectData
webhooks_count
​integer
suppressed_recipients_count
​integer
​RouteStatisticData[]

RouteListData

id
​string · required
slug
​string · required
name
​string · required
route_type
​RouteType · enum · required
Enum values:
transactional
broadcast
inbound
is_default
​boolean · required
webhooks_count
​integer · required
suppressed_recipients_count
​integer · required
created_at
​string · date-time · required
updated_at
​string · date-time · required

RouteMutationResponse

The route after it was created or changed, with a confirmation message.
​RouteData · required
message
​string · required

Human-readable confirmation

RouteStatisticData

date
​string · required
sent_count
​integer · required
delivered_count
​integer · required
opened_count
​integer · required
clicked_count
​integer · required
hard_bounce_count
​integer · required
spam_complaint_count
​integer · required
inbound_received_count
​integer · required
effective_opened_count
​integer | null · required
machine_opened_count
​integer | null · required
machine_clicked_count
​integer | null · required
observed_opened_count
​integer | null
human_opened_count
​integer | null
privacy_opened_count
​integer | null

RouteType

string · enum
Enum values:
transactional
broadcast
inbound

SandboxResult

string · enum
Enum values:
delivered
hard_bounced
soft_bounced
deferred
failed
suppressed
spam_complaint
auto_replied

ScheduledMessage

The schedule state of a message after it was rescheduled or canceled.
message_id
​string · required
​required
scheduled_at
​string | null · required

The scheduled delivery time in ISO 8601 format

SmtpCredentials

SMTP settings for the project. The password is the Project API token.
host
​string · required
ports
​integer[] · required

Port 465 uses implicit TLS, port 587 uses STARTTLS

username
​string · required

SpamSymbol

name
​string · required
score
​number · required
options
​string[] · minItems: 1 · required
Default: []
description
​string | null · required

StatsDailyData

date
​string · required
sent
​integer · required
delivered
​integer · required
hard_bounced
​integer · required
spam_complaints
​integer · required
opened
​integer | null · required

Null when tracking is not enabled for this context

clicked
​integer | null · required

Null when tracking is not enabled for this context

​StatsInboundData · required
​required
​required
effective_opened
​integer | null · required
machine_opened
​integer | null · required
machine_clicked
​integer | null · required
observed_opened
​integer | null

Human opens plus unresolved privacy-proxy opens

human_opened
​integer | null
privacy_opened
​integer | null

StatsData

from
​string · required
to
​string · required
​StatsTotalsData · required
​StatsDailyData[] · required

StatsInboundData

received
​integer · required

StatsTotalsData

sent
​integer · required
delivered
​integer · required
hard_bounced
​integer · required
spam_complaints
​integer · required
opened
​integer | null · required

Null when tracking is not enabled for this context

clicked
​integer | null · required

Null when tracking is not enabled for this context

​StatsInboundData · required
​required
​required
effective_opened
​integer | null · required
machine_opened
​integer | null · required
machine_clicked
​integer | null · required
observed_opened
​integer | null

Human opens plus unresolved privacy-proxy opens

human_opened
​integer | null
privacy_opened
​integer | null

StatsTypeData

sent
​integer · required
hard_bounced
​integer · required
spam_complaints
​integer · required

StoreDomainData

domain
​string · maxLength: 255 · pattern: ^(?!:\/\/)(?=.{1,255… · required

StoreProjectApiTokenData

name
​string · maxLength: 255 · required

A name that identifies where the token is used

Example: Production
short_token
​boolean

Creates a shorter token for devices that limit password length

Default: false

StoreProjectData

name
​string · maxLength: 255 · required
smtp_enabled
​boolean
Default: false
delivery_mode
​DeliveryMode · enum
Enum values:
live
sandbox
Default: live
initial_routes
​InitialRoutes · enum
Enum values:
both
transactional
broadcast
Default: both
short_token
​boolean
Default: false
redact_email_content
​boolean
Default: false

StoreRouteData

name
​string · maxLength: 255 · required
route_type
​RouteType · enum · required
Enum values:
transactional
broadcast
inbound
slug
​string | null · maxLength: 255
​
​
inbound_domain
​string | null · maxLength: 255
inbound_spam_threshold
​number | null · min: 0 · max: 10
​

StoreSuppressionData

reason
​SuppressionCreateReason · enum · required

Reason that the recipient is suppressed. The disposable_email reason is reserved for route policies.

Enum values:
spam_complaint
hard_bounce
unsubscribe
manual
scope
​SuppressionCreateScope · enum · required

Where the suppression applies. The global and subscription_group scopes cannot be created through the API.

Enum values:
team
project
route
email
​string | null · email · maxLength: 255
emails
​array | null · minItems: 1 · maxItems: 1000
route_id
​string | null · uuid
project_id
​string | null · uuid
​
domain
​string | null · maxLength: 255

Domain to suppress. Blocks every address at this exact domain, so subdomains need their own entry. Domains accept the manual and hard_bounce reasons

domains
​array | null · minItems: 1 · maxItems: 1000

Domains to suppress. Each blocks every address at that exact domain, so subdomains need their own entry. Domains accept the manual and hard_bounce reasons

StoreTeamApiTokenData

name
​string · maxLength: 255 · required

A name that identifies where the token is used

Example: Terraform
abilities
​string[] · required

Abilities for the new token. Each one must also be held by the token that makes the request

Example: ["read:projects","write:projects"]
expires_at
​string | null · date-time

When the token expires, as an ISO 8601 date-time. Defaults to, and can't be later than, the expiry of the token that makes the request

Example: 2027-01-01T00:00:00Z

StoreWebhookData

name
​string · maxLength: 255 · required
url
​string · uri · maxLength: 500 · required
events
​WebhookEvent[] · minItems: 1 · required
Enum values:
message.created
message.sent
message.delivered
message.auto_replied
message.hard_bounced
message.soft_bounced
message.spam_complaint
message.failed
enabled
​boolean | null
Default: true
include_machine_events
​boolean | null
Default: false
​
​
project_ids
​string[] · maxItems: 1000 · unique
Default: []
route_ids
​string[] · maxItems: 1000 · unique
Default: []
route_id
​string | null · uuid
​

SuppressedRecipientData

id
​string · required
type
​SuppressionType · enum · required
Enum values:
email
domain
extension
value
​string · required
reason
​SuppressionReason · enum · required

Reason that the recipient is suppressed.

Enum values:
spam_complaint
hard_bounce
unsubscribe
manual
disposable_email
scope
​SuppressionScope · enum · required

Where the suppression applies.

Enum values:
global
team
project
route
subscription_group
applies_to
​SuppressionAppliesTo · enum · required

Mail category blocked by the suppression. all blocks transactional and broadcast mail. broadcast blocks broadcast mail only.

Enum values:
all
broadcast
project_id
​string | null · required
route_id
​string | null · required
created_at
​string · date-time · required
​

SuppressionAppliesTo

string · enum
Enum values:
all
broadcast

Mail category blocked by the suppression. all blocks transactional and broadcast mail. broadcast blocks broadcast mail only.

SuppressionCreateReason

string · enum
Enum values:
spam_complaint
hard_bounce
unsubscribe
manual

Reason that the recipient is suppressed. The disposable_email reason is reserved for route policies.

SuppressionCreateScope

string · enum
Enum values:
team
project
route

Where the suppression applies. The global and subscription_group scopes cannot be created through the API.

SuppressionDeletedResponse

Confirmation that a suppression was removed.
success
​boolean · const · required
Const value:
status
​string · const · required
Const value: removed
message
​string · required

Human-readable confirmation

confidence
​number

Confidence of the automated removal assessment, when one ran

SuppressionReason

string · enum
Enum values:
spam_complaint
hard_bounce
unsubscribe
manual
disposable_email

Reason that the recipient is suppressed.

SuppressionReviewResponse

A suppression that stays active while a support ticket reviews its removal.
success
​boolean · const · required
Const value:
status
​string · enum · required
Enum values:
review_ticket_created
review_ticket_exists
message
​string · required

Human-readable confirmation

ticket_identifier
​string · required

The identifier of the support ticket that reviews the removal

confidence
​number

Confidence of the automated removal assessment, when one ran

SuppressionScope

string · enum
Enum values:
global
team
project
route
subscription_group

Where the suppression applies.

SuppressionSourceMessageData

id
​string · required
available
​boolean · required
subject
​string | null · required
created_at
​string | null · date-time · required

SuppressionStoreResponse

The outcome of adding addresses or domains to the suppression list.
message
​string · required

Human-readable summary

​SuppressionStoreResult · required

The addresses and domains that were added and those that were already suppressed.

SuppressionStoreResult

The addresses and domains that were added and those that were already suppressed.
created
​string[] · required
skipped
​string[] · required

SuppressionType

string · enum
Enum values:
email
domain
extension

TeamAddonData

type
​string | null · required
expires_at
​string | null · required

TeamApiToken

A Team API token without its value.
id
​string · required
name
​string · required
abilities
​string[] · required

The token's abilities. * grants every ability

allowed_ips
​string[] · required

IP addresses and ranges allowed to use the token. Empty means any address

​required
expires_at
​string | null · date-time · required
last_used_at
​string | null · date-time · required
created_at
​string · date-time · required

TeamApiTokenCreatedResponse

The new Team API token. Its value is only returned once.
​TeamApiTokenSecret · required

A new Team API token with its value, which is only returned once.

message
​string · required

Human-readable confirmation

TeamApiTokenSecret

A new Team API token with its value, which is only returned once.
id
​string · required
name
​string · required
abilities
​string[] · required

The token's abilities. * grants every ability

allowed_ips
​string[] · required

IP addresses and ranges allowed to use the token, copied from the token that created it. Empty means any address

​required
expires_at
​string | null · date-time · required
last_used_at
​string | null · date-time · required
created_at
​string · date-time · required
token
​string · required

The Team API token. It is only returned once

TeamData

id
​string · required
name
​string · required
type
​TeamType · enum · required
Enum values:
personal
business
plan
​Plan · enum · required
Enum values:
free
starter
growth
pro
included_volume
​integer · required

Number of emails included in the team's monthly plan

verified_at
​string | null · date-time · required
created_at
​string · date-time · required
features
​string[]
​TeamAddonData[]
domains_count
​integer
projects_count
​integer
members_count
​integer

TeamInviteData

id
​string · required
email
​string · required
​object · required
​TeamMemberProjectAccessData · required
created_at
​string · date-time · required

TeamMemberData

id
​string · required
name
​string · required
email
​string · required
​object · required
​TeamMemberProjectAccessData · required
joined_at
​string | null · date-time · required

TeamMemberProjectAccessData

scope
​ProjectAccessScope · enum · required
Enum values:
all
selected
​object[] · required

TeamMutationResponse

The team after a settings change, with a confirmation message.
​TeamData · required
message
​string · required

Human-readable confirmation

TeamRoleData

id
​string · required
name
​string · required
description
​string | null · required
​required
permissions
​RbacPermission[] · required
Enum values:
team:manage
billing:manage
security:manage
audit:read
support:manage
members:read
members:manage
roles:manage
assignable
​boolean · required

TeamRoleListResponse

The reusable roles of the team.
​TeamRoleData[] · required

TeamType

string · enum
Enum values:
personal
business

TeamUsageDetailData

​TeamUsagePeriodData · required
​TeamUsagePeriodData[] · required

TeamUsagePeriodData

usage
​integer · required
last_incremented_at
​string | null · date-time · required
period_start
​string · date-time · required
period_end
​string · date-time · required

TestWebhookResponse

Confirmation that a test delivery was queued.
message
​string · required

Human-readable confirmation

delivery_id
​string · required

The ID of the queued test delivery

TlsPolicy

string · enum
Enum values:
opportunistic
enforced

UpdateDomainProjectsData

project_ids
​string[] · minItems: 1 · required

UpdateProjectData

name
​string | null · maxLength: 255
smtp_enabled
​boolean | null
redact_email_content
​boolean | null
​
default_route_id
​string | null · uuid

UpdateRouteData

name
​string | null · maxLength: 255
​
​
inbound_domain
​string | null · maxLength: 255
inbound_spam_threshold
​number | null · min: 0 · max: 10
​

UpdateRouteInboundSettingsData

inbound_domain
​string | null · maxLength: 255

Custom receiving domain for inbound routes, such as support.example.com or *.m.example.com. Address patterns such as @.m.example.com are normalized

inbound_spam_threshold
​number | null · min: 0 · max: 10

Inbound spam threshold for inbound routes. Higher values are more permissive

​

UpdateRouteSettingsData

track_opens
​boolean | null

Enable open tracking for transactional and broadcast routes. Requires email tracking access

track_clicks
​boolean | null

Enable click tracking for transactional and broadcast routes. Requires email tracking access

generate_plaintext_fallback
​boolean | null

Opt in to generated plaintext fallbacks for HTML-only outbound messages on transactional and broadcast routes. Customer-provided plaintext is always preserved

suppress_auto_responders
​boolean | null

Add outbound headers that suppress auto-responders for transactional and broadcast routes. Customer-provided header values are preserved

suppress_disposable_recipients
​boolean | null

Skip disposable email recipients for transactional and broadcast routes. This check applies to each message and does not add recipients to suppression lists

​
disable_hosted_unsubscribe
​boolean | null

Disable Lettermint-hosted unsubscribe link injection for broadcast routes. Available only when enabled for the team

redact_email_content
​boolean | null

Redact email content in the dashboard for this route. Requires email redaction access

UpdateTeamApiTokenData

name
​string · maxLength: 255

A name that identifies where the token is used

Example: Terraform
abilities
​string[]

The token's complete list of abilities. Replaces its current abilities. Each one must also be held by the token that makes the request

Example: ["read:projects","write:projects"]

UpdateTeamData

name
​string · maxLength: 255

UpdateTeamInviteData

email
​string · email · maxLength: 255 · required
role_id
​string · uuid · required
​object · required

UpdateTeamMemberAssignmentData

role_id
​string · uuid · required
​object · required

UpdateTeamRoleData

name
​string · maxLength: 100 · required
permissions
​RbacPermission[] · minItems: 1 · maxItems: 100 · unique · required
Enum values:
team:manage
billing:manage
security:manage
audit:read
support:manage
members:read
members:manage
roles:manage
description
​string | null · maxLength: 255

UpdateWebhookData

name
​string · maxLength: 255
url
​string · uri · maxLength: 500
events
​WebhookEvent[] · minItems: 1
Enum values:
message.created
message.sent
message.delivered
message.auto_replied
message.hard_bounced
message.soft_bounced
message.spam_complaint
message.failed
enabled
​boolean
include_machine_events
​boolean
delivery_mode_filter
​WebhookDeliveryModeFilter · enum
Enum values:
live
sandbox
both
scope
​WebhookScope · enum
Enum values:
team
project
route
project_ids
​string[] · maxItems: 1000 · unique
route_ids
​string[] · maxItems: 1000 · unique
route_id
​string | null · uuid
​

ValidationError

message
​string · required

Errors overview.

​object · required

A detailed description of each field that failed validation.

VerifyReportForwardingRequest

code
​string · pattern: ^[0-9]{6}$ · required

WebhookBasicAuthData

username
​string · required
password
​string · required

WebhookData

id
​string · required
scope
​WebhookScope · enum · required
Enum values:
team
project
route
project_ids
​string[] · required
route_ids
​string[] · required
name
​string · required
url
​string · required
has_basic_auth
​boolean · required
events
​string[] · required
enabled
​boolean · required
include_machine_events
​boolean · required
delivery_mode_filter
​WebhookDeliveryModeFilter · enum · required
Enum values:
live
sandbox
both
last_called_at
​string | null · date-time · required
created_at
​string · date-time · required
updated_at
​string · date-time · required

WebhookDeliveryData

id
​string · required
webhook_id
​string · required
event_type
​WebhookEvent · enum · required
Enum values:
message.created
message.sent
message.delivered
message.auto_replied
message.hard_bounced
message.soft_bounced
message.spam_complaint
message.failed
source_scope
​string | null · required
source_project_id
​string | null · required
source_route_id
​string | null · required
status
​WebhookDeliveryStatus · enum · required
Enum values:
pending
success
failed
client_error
server_error
timeout
sandbox
​boolean · required
payload_retained
​boolean · required

False when only the event type, message ID and Sandbox flag of the payload are stored, because the message is kept 7 days or less. Such a delivery cannot be retried

attempt_number
​integer · required
http_status_code
​integer | null · required
duration_ms
​integer | null · required
delivered_at
​string | null · date-time · required
timestamp
​string · date-time · required
next_retry_at
​string | null · date-time · required

When the next automatic retry is due. Null when none is scheduled

payload
​string[]

Omitted when the user cannot view the delivery's content

response_body
​string | null

Omitted when the user cannot view the delivery's content

response_headers
​array | null

Omitted when the user cannot view the delivery's content

error_message
​string | null

Omitted when the user cannot view the delivery's content

WebhookDeliveryListData

id
​string · required
webhook_id
​string · required
event_type
​WebhookEvent · enum · required
Enum values:
message.created
message.sent
message.delivered
message.auto_replied
message.hard_bounced
message.soft_bounced
message.spam_complaint
message.failed
source_scope
​string | null · required
source_project_id
​string | null · required
source_route_id
​string | null · required
status
​WebhookDeliveryStatus · enum · required
Enum values:
pending
success
failed
client_error
server_error
timeout
sandbox
​boolean · required
payload_retained
​boolean · required

False when only the event type, message ID and Sandbox flag of the payload are stored, because the message is kept 7 days or less. Such a delivery cannot be retried

attempt_number
​integer · required
http_status_code
​integer | null · required
duration_ms
​integer | null · required
delivered_at
​string | null · date-time · required
created_at
​string · date-time · required
next_retry_at
​string | null · date-time · required

When the next automatic retry is due. Null when none is scheduled

WebhookDeliveryModeFilter

string · enum
Enum values:
live
sandbox
both

WebhookDeliveryStatus

string · enum
Enum values:
pending
success
failed
client_error
server_error
timeout

WebhookEvent

string · enum
Enum values:
message.created
message.sent
message.delivered
message.auto_replied
message.hard_bounced
message.soft_bounced
message.spam_complaint
message.failed

WebhookListData

id
​string · required
scope
​WebhookScope · enum · required
Enum values:
team
project
route
project_ids
​string[] · required
route_ids
​string[] · required
name
​string · required
url
​string · required
has_basic_auth
​boolean · required
events
​string[] · required
enabled
​boolean · required
delivery_mode_filter
​WebhookDeliveryModeFilter · enum · required
Enum values:
live
sandbox
both
last_called_at
​string | null · date-time · required
created_at
​string · date-time · required
updated_at
​string · date-time · required

WebhookMutationResponse

The webhook after a change, with a confirmation message.
​WebhookData · required
message
​string · required

Human-readable confirmation

WebhookScope

string · enum
Enum values:
team
project
route

WebhookSecretData

id
​string · required
scope
​WebhookScope · enum · required
Enum values:
team
project
route
project_ids
​string[] · required
route_ids
​string[] · required
name
​string · required
url
​string · required
has_basic_auth
​boolean · required
events
​string[] · required
enabled
​boolean · required
include_machine_events
​boolean · required
delivery_mode_filter
​WebhookDeliveryModeFilter · enum · required
Enum values:
live
sandbox
both
secret
​string · required
last_called_at
​string | null · date-time · required
created_at
​string · date-time · required
updated_at
​string · date-time · required

WebhookSecretResponse

The webhook with its signing secret, which is only returned when the secret is created or regenerated.
​WebhookSecretData · required
message
​string · required

Human-readable confirmation