Lettermint

App · 20 actions

Send transactional email one at a time or in batches of up to 500, follow each message's delivery events, read sending statistics, and manage sending domains, webhooks and the suppression list.

Actions

ActionWhat it does
Add suppressionsStop Lettermint sending to up to 1,000 addresses, for the whole team or one project.
Create domainAdd a sending domain.
Create webhookHave Lettermint call a URL when messages are delivered, bounce, are opened and so on.
Delete domainRemove a sending domain from Lettermint.
Delete webhookDelete a webhook and its delivery history.
Get domainGet a sending domain with the DNS records to publish and each record's verification status.
Get messageGet one message: its status, sender, recipients, tags, metadata, attachments and spam score.
Get sending statisticsGet totals and a day-by-day count of emails sent, delivered, bounced, complained about, opened and clicked, for up to 90 days.
Get webhookGet a webhook's URL, events, scope and status.
List domainsList sending domains and their verification status.
List message eventsList a message's delivery timeline: queued, delivered, bounced, opened, clicked and so on, with timestamps.
List messagesList sent and received messages, newest first, filtered by status, sender, subject, tag, project, domain or date.
List projectsList the team's projects with their message volumes and deliverability over the last 28 days.
List suppressionsList the addresses Lettermint will not send to - bounces, spam complaints, unsubscribes and manual blocks.
List webhooksList webhooks with their URL, events and status.
Remove suppressionLet Lettermint send to a suppressed address again.
Send batch emailsSend up to 500 emails in one request: either the same email to each recipient separately, or a list of different emails.
Send emailSend one email to up to 50 recipients, with an optional attachment, tags and metadata.
Update webhookChange a webhook's name, URL, events, scope or status.
Verify domain DNS recordsCheck a domain's DNS records now.

Add suppressions

Stop Lettermint sending to up to 1,000 addresses, for the whole team or one project. Addresses already suppressed are skipped.

Inputs

AddressesemailslistRequired
The addresses to suppress.
Reasonreasontext
Why they are suppressed.One of: manual (Added manually), unsubscribe, hard_bounce (Hard bounce), spam_complaint (Spam complaint). Default: manual.
Applies acrossscopetext
The whole team, one project, or one route.One of: team (Whole team), project (One project), route (One route). Default: team.
Projectproject_idtext
The project to suppress them in.Only when Applies across is One project.
Route IDroute_idtext
The id of the route to suppress them in.Only when Applies across is One route.
Blockapplies_totext
All email, or only broadcasts (transactional email still goes through).One of: all (All email), broadcast (Broadcasts only).

Outputs

createdlist
created_countnumber
messagetext
skippedlist
skipped_countnumber
Example output
{
  "created": [
    "blocked@example.com"
  ],
  "created_count": 1,
  "message": "Suppression processed.",
  "skipped": [],
  "skipped_count": 0
}

Create domain

Add a sending domain. Returns the DNS records to publish at your DNS provider before verifying it. The Free plan allows one domain.

Inputs

DomaindomaintextRequired
The domain to send from, e.g. mail.example.com.

Outputs

created_attext
dkim_modetext
dns_recordslist
domaintext
idtext
projectslist
rotation_readytrue/false
status_changed_attext
Example output
{
  "created_at": "2026-10-01T09:30:00.000000Z",
  "dkim_mode": "managed_cname",
  "dns_records": [
    {
      "content": "lm1._domainkey.lettermint.co",
      "fqdn": "lm1._domainkey.example.com",
      "hostname": "lm1._domainkey",
      "id": "1d2e3f4a-5b6c-4d7e-8f9a-0b1c2d3e4f5a",
      "last_checked_at": null,
      "purpose": "dkim_primary",
      "required_for_verification": true,
      "status": "pending",
      "type": "CNAME",
      "verification_scope": "required",
      "verified_at": null
    }
  ],
  "domain": "example.com",
  "id": "3c4d5e6f-7a8b-4c9d-8e0f-1a2b3c4d5e6f",
  "projects": [
    {
      "id": "9a1f3c2e-4b5d-4e6f-8a7b-1c2d3e4f5a6b",
      "name": "Production"
    }
  ],
  "rotation_ready": false,
  "status_changed_at": null
}

Create webhook

Have Lettermint call a URL when messages are delivered, bounce, are opened and so on. Returns the signing secret - the only time Lettermint shows it.

Inputs

NamenametextRequired
A name to recognise it by.
URLurltextRequired
The address Lettermint calls, e.g. https://example.com/hooks/lettermint.
EventseventstextRequired
The events that call the URL.One or more of: message.created (Message created), message.sent (Message sent), message.delivered (Message delivered), message.auto_replied (Message auto-replied), message.hard_bounced (Message hard bounced), message.soft_bounced (Message soft bounced), message.spam_complaint (Spam complaint), message.failed (Message failed), message.suppressed (Message suppressed), message.unsubscribed (Recipient unsubscribed), and 11 more.
Enabledenabledtrue/false
Start sending events straight away.Default: true.
Include machine eventsinclude_machine_eventstrue/false
Also send opens and clicks made by mail scanners and proxies.
Messagesdelivery_mode_filtertext
Live messages, sandbox messages, or both.One of: live (Live messages), sandbox (Sandbox messages), both.
Applies toscopetext
Events from the whole team, chosen projects, or chosen routes. Defaults to the whole team.One of: team (Whole team), project (Chosen projects), route (Chosen routes).
Projectsproject_idstext
The projects whose events it receives.Only when Applies to is Chosen projects.
Route IDsroute_idslist
The ids of the routes whose events it receives.Only when Applies to is Chosen routes.
Basic auth usernamebasic_auth_usernametext
If your endpoint needs HTTP basic auth.
Basic auth passwordbasic_auth_passwordtext
The password for that username.

Outputs

created_attext
delivery_mode_filtertext
enabledtrue/false
eventslist
has_basic_authtrue/false
idtext
include_machine_eventstrue/false
last_called_attext
messagetext
nametext
project_idslist
route_idslist
scopetext
secrettext
updated_attext
urltext
Example output
{
  "created_at": "2026-10-01T09:30:00.000000Z",
  "delivery_mode_filter": "live",
  "enabled": true,
  "events": [
    "message.delivered",
    "message.hard_bounced"
  ],
  "has_basic_auth": false,
  "id": "5e6f7a8b-9c0d-4e1f-a2b3-c4d5e6f7a8b9",
  "include_machine_events": false,
  "last_called_at": null,
  "message": "Webhook created.",
  "name": "Delivery events",
  "project_ids": [],
  "route_ids": [],
  "scope": "team",
  "secret": "whsec_7f3a9c1e5b2d4f6a8c0e",
  "updated_at": "2026-10-01T09:30:00.000000Z",
  "url": "https://example.com/hooks/lettermint"
}

Delete domain

Remove a sending domain from Lettermint.

Inputs

Domaindomain_idtextRequired
The sending domain. Pick one, or paste its id.

Outputs

deletedtrue/false
domain_idtext
messagetext
Example output
{
  "deleted": true,
  "domain_id": "3c4d5e6f-7a8b-4c9d-8e0f-1a2b3c4d5e6f",
  "message": "Domain deleted."
}

Delete webhook

Delete a webhook and its delivery history.

Inputs

Webhookwebhook_idtextRequired
The webhook. Pick one, or paste its id.

Outputs

deletedtrue/false
messagetext
webhook_idtext
Example output
{
  "deleted": true,
  "message": "Webhook deleted.",
  "webhook_id": "5e6f7a8b-9c0d-4e1f-a2b3-c4d5e6f7a8b9"
}

Get domain

Get a sending domain with the DNS records to publish and each record's verification status.

Inputs

Domaindomain_idtextRequired
The sending domain. Pick one, or paste its id.
Include DNS recordsinclude_dns_recordstrue/false
Return the DNS records and their status.Default: true.
Include projectsinclude_projectstrue/false
Return the projects that use the domain.Default: true.

Outputs

created_attext
dkim_modetext
dns_recordslist
domaintext
idtext
projectslist
rotation_readytrue/false
status_changed_attext
Example output
{
  "created_at": "2026-10-01T09:30:00.000000Z",
  "dkim_mode": "managed_cname",
  "dns_records": [
    {
      "content": "lm1._domainkey.lettermint.co",
      "fqdn": "lm1._domainkey.example.com",
      "hostname": "lm1._domainkey",
      "id": "1d2e3f4a-5b6c-4d7e-8f9a-0b1c2d3e4f5a",
      "last_checked_at": null,
      "purpose": "dkim_primary",
      "required_for_verification": true,
      "status": "pending",
      "type": "CNAME",
      "verification_scope": "required",
      "verified_at": null
    }
  ],
  "domain": "example.com",
  "id": "3c4d5e6f-7a8b-4c9d-8e0f-1a2b3c4d5e6f",
  "projects": [
    {
      "id": "9a1f3c2e-4b5d-4e6f-8a7b-1c2d3e4f5a6b",
      "name": "Production"
    }
  ],
  "rotation_ready": false,
  "status_changed_at": null
}

Get message

Get one message: its status, sender, recipients, tags, metadata, attachments and spam score.

Inputs

Message IDmessage_idtextRequired
The message's id, as returned by Send email or List messages, or copied from the message's page in Lettermint.

Outputs

attachmentslist
bcclist
cclist
created_attext
delivery_modetext
from_emailtext
from_nametext
idtext
metadataobject
reply_tolist
route_idtext
sandbox_resulttext
scheduled_attext
spam_scorenumber
spam_symbolslist
statustext
status_changed_attext
subjecttext
tagtext
tagslist
tolist
typetext
Example output
{
  "attachments": [],
  "bcc": null,
  "cc": null,
  "created_at": "2026-10-01T09:30:00.000000Z",
  "delivery_mode": "live",
  "from_email": "onboarding@lettermint.dev",
  "from_name": "Acme",
  "id": "0b1c2d3e-4f5a-4b6c-9d7e-8f9a0b1c2d3e",
  "metadata": {
    "order_id": "1001"
  },
  "reply_to": null,
  "route_id": "2f3e4d5c-6b7a-4980-a1b2-c3d4e5f6a7b8",
  "sandbox_result": null,
  "scheduled_at": null,
  "spam_score": 0.4,
  "spam_symbols": [],
  "status": "delivered",
  "status_changed_at": "2026-10-01T09:30:04.000000Z",
  "subject": "Your receipt",
  "tag": "receipts",
  "tags": [
    {
      "name": "__lettermint_tag",
      "value": "receipts"
    }
  ],
  "to": [
    {
      "email": "ok@lettermint.dev",
      "name": null,
      "sandbox_result": null
    }
  ],
  "type": "outbound"
}

Get sending statistics

Get totals and a day-by-day count of emails sent, delivered, bounced, complained about, opened and clicked, for up to 90 days. Defaults to the last 7 days.

Inputs

Fromfrom_datedate
First day. Defaults to 6 days before To.
Toto_datedate
Last day. Defaults to today (UTC).
Projectproject_idtext
Only this project - adds a transactional/broadcast breakdown. Pick one, or paste its id.
Include machine opens and clicksinclude_machinetrue/false
Count opens and clicks made by mail scanners too.

Outputs

dailylist
fromtext
totext
totalsobject
Example output
{
  "daily": [
    {
      "broadcast": null,
      "clicked": null,
      "date": "2026-10-01",
      "delivered": 12,
      "effective_opened": null,
      "hard_bounced": 0,
      "human_opened": null,
      "inbound": {
        "received": 0
      },
      "machine_clicked": null,
      "machine_opened": null,
      "observed_opened": null,
      "opened": null,
      "privacy_opened": null,
      "sent": 12,
      "spam_complaints": 0,
      "transactional": null
    }
  ],
  "from": "2026-10-01",
  "to": "2026-10-07",
  "totals": {
    "broadcast": null,
    "clicked": null,
    "delivered": 12,
    "effective_opened": null,
    "hard_bounced": 0,
    "human_opened": null,
    "inbound": {
      "received": 0
    },
    "machine_clicked": null,
    "machine_opened": null,
    "observed_opened": null,
    "opened": null,
    "privacy_opened": null,
    "sent": 12,
    "spam_complaints": 0,
    "transactional": null
  }
}

Get webhook

Get a webhook's URL, events, scope and status.

Inputs

Webhookwebhook_idtextRequired
The webhook. Pick one, or paste its id.

Outputs

created_attext
delivery_mode_filtertext
enabledtrue/false
eventslist
has_basic_authtrue/false
idtext
include_machine_eventstrue/false
last_called_attext
nametext
project_idslist
route_idslist
scopetext
updated_attext
urltext
Example output
{
  "created_at": "2026-10-01T09:30:00.000000Z",
  "delivery_mode_filter": "live",
  "enabled": true,
  "events": [
    "message.delivered",
    "message.hard_bounced"
  ],
  "has_basic_auth": false,
  "id": "5e6f7a8b-9c0d-4e1f-a2b3-c4d5e6f7a8b9",
  "include_machine_events": false,
  "last_called_at": null,
  "name": "Delivery events",
  "project_ids": [],
  "route_ids": [],
  "scope": "team",
  "updated_at": "2026-10-01T09:30:00.000000Z",
  "url": "https://example.com/hooks/lettermint"
}

List domains

List sending domains and their verification status.

Inputs

Domain containsdomaintext
Part of the domain name.
Statusstatustext
Only domains in this verification status.One of: verified, partially_verified (Partially verified), pending_verification (Pending verification), failed_verification (Failed verification).
Projectproject_idtext
Only this project. Pick one, or paste its id.
Sort bysorttext
How to order the domains.One of: domain (Domain A-Z), -created_at (Newest first), created_at (Oldest first), -status_changed_at (Most recent status change first).
Page sizepage_sizenumber
How many to return on this page.From 1 to 100.
Page cursorcursortext
The next_cursor from a previous page. Leave empty for the first page.

Outputs

countnumber
domainslist
has_moretrue/false
next_cursortext
Example output
{
  "count": 1,
  "domains": [
    {
      "created_at": "2026-10-01T09:30:00.000000Z",
      "dkim_mode": "managed_cname",
      "domain": "example.com",
      "id": "3c4d5e6f-7a8b-4c9d-8e0f-1a2b3c4d5e6f",
      "status": "verified",
      "status_changed_at": "2026-10-01T09:30:00.000000Z"
    }
  ],
  "has_more": false,
  "next_cursor": null
}

List message events

List a message's delivery timeline: queued, delivered, bounced, opened, clicked and so on, with timestamps.

Inputs

Message IDmessage_idtextRequired
The message's id, as returned by Send email or List messages, or copied from the message's page in Lettermint.
Include machine eventsinclude_machine_eventstrue/false
Also list opens and clicks made by mail scanners and proxies.
Ordersorttext
Oldest or newest event first.One of: timestamp (Oldest first), -timestamp (Newest first).
Page sizepage_sizenumber
How many to return on this page.From 1 to 100.
Page cursorcursortext
The next_cursor from a previous page. Leave empty for the first page.

Outputs

countnumber
eventslist
has_moretrue/false
next_cursortext
Example output
{
  "count": 1,
  "events": [
    {
      "event": "delivered",
      "message_id": "0b1c2d3e-4f5a-4b6c-9d7e-8f9a0b1c2d3e",
      "metadata": null,
      "tag": "receipts",
      "tags": [],
      "timestamp": "2026-10-01T09:30:04.000000Z"
    }
  ],
  "has_more": false,
  "next_cursor": null
}

List messages

List sent and received messages, newest first, filtered by status, sender, subject, tag, project, domain or date.

Inputs

Searchsearchtext
Find messages by address or subject.
Statusstatustext
Only messages in this status.One of: scheduled, pending, queued, quarantined, suppressed, processed, delivered, opened, clicked, soft_bounced (Soft bounced), and 7 more.
Directionmessage_typetext
Only sent or only received messages.One of: outbound (Outbound (sent)), inbound (Inbound (received)).
Sender containsfrom_emailtext
Part of the sender address.
Subject containssubjecttext
Part of the subject.
Tagtagtext
Only messages with exactly this tag. Use _none for untagged.
Tag pairstagsobject
Only messages carrying every one of these name/value tags.
Projectproject_idtext
Only this project. Pick one, or paste its id.
Domaindomain_idtext
Only messages sent from this domain.
Created on or afterfrom_datedate
Earliest creation date.
Created on or beforeto_datedate
Latest creation date.
Sort bysorttext
How to order the messages.One of: -created_at (Newest first), created_at (Oldest first), -status_changed_at (Most recent status change first), subject (Subject A-Z), from_email (Sender A-Z), status (Status A-Z). Default: -created_at.
Page sizepage_sizenumber
How many to return on this page.From 1 to 100.
Page cursorcursortext
The next_cursor from a previous page. Leave empty for the first page.

Outputs

countnumber
has_moretrue/false
messageslist
next_cursortext
Example output
{
  "count": 1,
  "has_more": false,
  "messages": [
    {
      "bcc": null,
      "cc": null,
      "created_at": "2026-10-01T09:30:00.000000Z",
      "delivery_mode": "live",
      "from_email": "onboarding@lettermint.dev",
      "from_name": "Acme",
      "id": "0b1c2d3e-4f5a-4b6c-9d7e-8f9a0b1c2d3e",
      "reply_to": null,
      "sandbox_result": null,
      "scheduled_at": null,
      "spam_score": 0.4,
      "status": "delivered",
      "status_changed_at": "2026-10-01T09:30:04.000000Z",
      "subject": "Your receipt",
      "tag": "receipts",
      "tags": [
        {
          "name": "__lettermint_tag",
          "value": "receipts"
        }
      ],
      "to": [
        {
          "email": "ok@lettermint.dev",
          "name": null,
          "sandbox_result": null
        }
      ],
      "type": "outbound"
    }
  ],
  "next_cursor": null
}

List projects

List the team's projects with their message volumes and deliverability over the last 28 days.

Inputs

Searchsearchtext
Find projects by name.
Sort bysorttext
How to order the projects.One of: name (Name A-Z), -created_at (Newest first), created_at (Oldest first).
Page sizepage_sizenumber
How many to return on this page.From 1 to 100.
Page cursorcursortext
The next_cursor from a previous page. Leave empty for the first page.

Outputs

countnumber
has_moretrue/false
next_cursortext
projectslist
Example output
{
  "count": 1,
  "has_more": false,
  "next_cursor": null,
  "projects": [
    {
      "created_at": "2026-10-01T09:30:00.000000Z",
      "delivery_mode": "live",
      "domains_count": 1,
      "id": "9a1f3c2e-4b5d-4e6f-8a7b-1c2d3e4f5a6b",
      "last_28_days": {
        "deliverability": 99.2,
        "messages_broadcast": 0,
        "messages_inbound": 0,
        "messages_transactional": 120
      },
      "name": "Production",
      "routes_count": 2,
      "smtp_enabled": false,
      "updated_at": "2026-10-01T09:30:00.000000Z"
    }
  ]
}

List suppressions

List the addresses Lettermint will not send to - bounces, spam complaints, unsubscribes and manual blocks.

Inputs

Address containsvaluetext
Part of the address.
Reasonreasontext
Only suppressions for this reason.One of: spam_complaint (Spam complaint), hard_bounce (Hard bounce), unsubscribe, manual (Added manually), disposable_email (Disposable email).
Scopescopetext
Only suppressions at this level.One of: team (Whole team), project (One project), route (One route).
Projectproject_idtext
Only this project. Pick one, or paste its id.
Added on or afterstart_datedate
Earliest date.
Added on or beforeend_datedate
Latest date.
Sort bysorttext
How to order the suppressions.One of: -created_at (Newest first), created_at (Oldest first), value (Address A-Z), reason (Reason A-Z). Default: -created_at.
Page sizepage_sizenumber
How many to return on this page.From 1 to 100.
Page cursorcursortext
The next_cursor from a previous page. Leave empty for the first page.

Outputs

countnumber
has_moretrue/false
next_cursortext
suppressionslist
Example output
{
  "count": 1,
  "has_more": false,
  "next_cursor": null,
  "suppressions": [
    {
      "applies_to": "all",
      "created_at": "2026-10-01T09:30:00.000000Z",
      "id": "7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d",
      "project_id": null,
      "reason": "hard_bounce",
      "route_id": null,
      "scope": "team",
      "source_message": null,
      "type": "email",
      "value": "bounced@example.com"
    }
  ]
}

List webhooks

List webhooks with their URL, events and status.

Inputs

Searchsearchtext
Find webhooks by name or URL.
Statusenabledtext
Only enabled or only disabled webhooks.One of: enabled, disabled.
Eventeventtext
Only webhooks that receive this event.One of: message.created (Message created), message.sent (Message sent), message.delivered (Message delivered), message.auto_replied (Message auto-replied), message.hard_bounced (Message hard bounced), message.soft_bounced (Message soft bounced), message.spam_complaint (Spam complaint), message.failed (Message failed), message.suppressed (Message suppressed), message.unsubscribed (Recipient unsubscribed), and 11 more.
Scopescopetext
Only webhooks at this level.One of: team (Whole team), project (Chosen projects), route (Chosen routes).
Projectproject_idtext
Only this project. Pick one, or paste its id.
Sort bysorttext
How to order the webhooks.One of: -created_at (Newest first), created_at (Oldest first), name (Name A-Z), url (URL A-Z).
Page sizepage_sizenumber
How many to return on this page.From 1 to 100.
Page cursorcursortext
The next_cursor from a previous page. Leave empty for the first page.

Outputs

countnumber
has_moretrue/false
next_cursortext
webhookslist
Example output
{
  "count": 1,
  "has_more": false,
  "next_cursor": null,
  "webhooks": [
    {
      "created_at": "2026-10-01T09:30:00.000000Z",
      "delivery_mode_filter": "live",
      "enabled": true,
      "events": [
        "message.delivered",
        "message.hard_bounced"
      ],
      "has_basic_auth": false,
      "id": "5e6f7a8b-9c0d-4e1f-a2b3-c4d5e6f7a8b9",
      "last_called_at": null,
      "name": "Delivery events",
      "project_ids": [],
      "route_ids": [],
      "scope": "team",
      "updated_at": "2026-10-01T09:30:00.000000Z",
      "url": "https://example.com/hooks/lettermint"
    }
  ]
}

Remove suppression

Let Lettermint send to a suppressed address again. A spam complaint is sent to Lettermint support for review instead of being removed - removed tells you which happened.

Inputs

Suppression IDsuppression_idtextRequired
The suppression's id, from List suppressions.

Outputs

messagetext
removedtrue/false
statustext
suppression_idtext
ticket_identifiertext
Example output
{
  "message": "Suppression removed.",
  "removed": true,
  "status": "removed",
  "suppression_id": "7a8b9c0d-1e2f-4a3b-8c4d-5e6f7a8b9c0d",
  "ticket_identifier": null
}

Send batch emails

Send up to 500 emails in one request: either the same email to each recipient separately, or a list of different emails. Returns one message id per email, in order.

Inputs

Recipientsrecipientslist
Send the email below to each of these addresses separately (they do not see each other).
Fromsendertext
The sender, as an address or Name <address>, on a domain verified in Lettermint. Until you verify one, use Your App <onboarding@lettermint.dev>, which can send to your team's verified members and test addresses such as ok@lettermint.dev.
Subjectsubjecttext
The subject line.
HTML bodyhtmltext
The email as HTML. Give this, a text body, or both.
Text bodytexttext
The plain-text version. Give this, an HTML body, or both.
Tagtagtext
A label to find these emails by later (letters, digits, - and _), e.g. password-reset.
Emails (advanced)emailslist
A list of email objects, each with from, to, subject and html and/or text, plus any of cc, bcc, reply_to, tag, tags, metadata, headers, route and scheduled_at - e.g. [{"from": "Acme <hello@acme.com>", "to": ["a@example.com"], "subject": "Hi", "text": "Hello there"}]. Leave empty to send one email to each recipient below instead.
Idempotency keyidempotency_keytext
Optional. Lettermint ignores a repeat with the same key and body for 24 hours, so a retried step cannot send twice. Use something unique to this email, such as an order id.

Outputs

countnumber
messageslist
Example output
{
  "count": 1,
  "messages": [
    {
      "message_id": "0b1c2d3e-4f5a-4b6c-9d7e-8f9a0b1c2d3e",
      "status": "pending"
    }
  ]
}

Send email

Send one email to up to 50 recipients, with an optional attachment, tags and metadata. Returns the message id to follow its delivery.

Inputs

FromsendertextRequired
The sender, as an address or Name <address>, on a domain verified in Lettermint. Until you verify one, use Your App <onboarding@lettermint.dev>, which can send to your team's verified members and test addresses such as ok@lettermint.dev.
TotolistRequired
One or more recipients, as addresses or Name <address>.
SubjectsubjecttextRequired
The subject line.
HTML bodyhtmltext
The email as HTML. Give this, a text body, or both.
Text bodytexttext
The plain-text version. Give this, an HTML body, or both.
Cccclist
Copy these recipients.
Bccbcclist
Blind-copy these recipients.
Reply toreply_tolist
Where replies should go.
Attachmentattachmenttext
A file to attach.
Attachment file nameattachment_nametext
The name the recipient sees, e.g. invoice.pdf. Defaults to the uploaded file's name.
Tagtagtext
A label to find these emails by later (letters, digits, - and _), e.g. password-reset.
Tag pairstagsobject
Name/value tags to filter by later, e.g. plan = pro (each 1-32 / 1-64 letters, digits, - or _).
Metadatametadataobject
Your own values stored with the message and sent to your webhooks, not added to the email.
Custom headersheadersobject
Extra email headers, e.g. X-Campaign = autumn.
Routeroutetext
The route slug to send through. Leave empty for the project's default route.
Send atscheduled_atdate and time
Deliver later instead of now. Scheduling needs a Lettermint Growth or Pro plan.
Track openstrack_openstrue/false
Track when the email is opened (paid plans).
Track clickstrack_clickstrue/false
Track clicks on links (paid plans).
TLS policytlstext
Whether delivery must use an encrypted connection.One of: opportunistic (Opportunistic (use TLS when the receiver offers it)), enforced (Enforced (do not deliver without TLS)).
Idempotency keyidempotency_keytext
Optional. Lettermint ignores a repeat with the same key and body for 24 hours, so a retried step cannot send twice. Use something unique to this email, such as an order id.

Outputs

message_idtext
scheduled_attext
statustext
Example output
{
  "message_id": "0b1c2d3e-4f5a-4b6c-9d7e-8f9a0b1c2d3e",
  "status": "pending"
}

Update webhook

Change a webhook's name, URL, events, scope or status. Fields left empty are not changed.

Inputs

Webhookwebhook_idtextRequired
The webhook. Pick one, or paste its id.
Namenametext
A new name.
URLurltext
A new address for Lettermint to call.
Eventseventstext
Replace the events it receives.One or more of: message.created (Message created), message.sent (Message sent), message.delivered (Message delivered), message.auto_replied (Message auto-replied), message.hard_bounced (Message hard bounced), message.soft_bounced (Message soft bounced), message.spam_complaint (Spam complaint), message.failed (Message failed), message.suppressed (Message suppressed), message.unsubscribed (Recipient unsubscribed), and 11 more.
Statusenabledtext
Turn the webhook on or off.One of: enabled, disabled.
Machine eventsinclude_machine_eventstext
Send opens and clicks made by mail scanners and proxies, or not.One of: enabled, disabled.
Messagesdelivery_mode_filtertext
Live messages, sandbox messages, or both.One of: live (Live messages), sandbox (Sandbox messages), both.
Applies toscopetext
Events from the whole team, chosen projects, or chosen routes.One of: team (Whole team), project (Chosen projects), route (Chosen routes).
Projectsproject_idstext
The projects whose events it receives.Only when Applies to is Chosen projects.
Route IDsroute_idslist
The ids of the routes whose events it receives.Only when Applies to is Chosen routes.
Basic auth usernamebasic_auth_usernametext
Set new HTTP basic auth credentials.
Basic auth passwordbasic_auth_passwordtext
The password for that username.
Remove basic authremove_basic_authtrue/false
Stop sending basic auth credentials.

Outputs

created_attext
delivery_mode_filtertext
enabledtrue/false
eventslist
has_basic_authtrue/false
idtext
include_machine_eventstrue/false
last_called_attext
messagetext
nametext
project_idslist
route_idslist
scopetext
updated_attext
urltext
Example output
{
  "created_at": "2026-10-01T09:30:00.000000Z",
  "delivery_mode_filter": "live",
  "enabled": true,
  "events": [
    "message.delivered",
    "message.hard_bounced"
  ],
  "has_basic_auth": false,
  "id": "5e6f7a8b-9c0d-4e1f-a2b3-c4d5e6f7a8b9",
  "include_machine_events": false,
  "last_called_at": null,
  "message": "Webhook updated.",
  "name": "Delivery events",
  "project_ids": [],
  "route_ids": [],
  "scope": "team",
  "updated_at": "2026-10-01T09:30:00.000000Z",
  "url": "https://example.com/hooks/lettermint"
}

Verify domain DNS records

Check a domain's DNS records now. Returns verified true or false, with the records that still fail. Lettermint allows only a few checks a minute.

Inputs

Domaindomain_idtextRequired
The sending domain. Pick one, or paste its id.

Outputs

domain_idtext
errorslist
failed_countnumber
failed_recordslist
messagetext
recommended_failed_recordslist
total_countnumber
verifiedtrue/false
Example output
{
  "domain_id": "3c4d5e6f-7a8b-4c9d-8e0f-1a2b3c4d5e6f",
  "errors": [
    {
      "error": "Record not found.",
      "record_id": "1d2e3f4a-5b6c-4d7e-8f9a-0b1c2d3e4f5a"
    }
  ],
  "failed_count": 1,
  "failed_records": [
    {
      "id": "1d2e3f4a-5b6c-4d7e-8f9a-0b1c2d3e4f5a",
      "name": "lm1._domainkey",
      "type": "CNAME"
    }
  ],
  "message": "Some required DNS records could not be verified.",
  "recommended_failed_records": [],
  "total_count": 4,
  "verified": false
}

On this page