canonical: https://jentic.com/apis/lettr.com/lettr

# Lettr API

The Lettr API sends transactional email with tracking, attachments, and personalization, either from raw html and text or from a stored template_slug filled with substitution_data. A send takes up to 50 recipients plus cc and bcc, and accepts an Idempotency-Key header so retries never deliver the same message twice; messages can also be scheduled for a later time and cancelled before they go out. Delivery is observable through sent-email lists and an event stream covering delivery, bounce, open, click, and unsubscribe events, and the same API manages sending domains, webhooks, templates, audience contacts, lists, topics, segments, and marketing campaigns.

## For AI agents

Send and schedule transactional emails from HTML or templates, track delivery, bounce, open, and click events, and manage sending domains, templates, audience contacts, and campaigns in Lettr.

## Scope

Does not handle SMS, push notifications, inbound email parsing, or inbox hosting. Use for sending and tracking transactional and campaign email only.

## Capabilities

- Send a transactional email to up to 50 recipients from html, text, or a template_slug with substitution_data, with an Idempotency-Key for safe retries
- Schedule an email for a set scheduled_at time and cancel it by transmission id before it sends
- Filter email events by type such as delivery, bounce, spam_complaint, open, or click, and by recipient and date range
- Add and verify a sending domain, then subscribe a webhook to message events such as message.delivery and message.bounce
- Create, update, and fetch templates, and read a template's merge tags before filling them
- Add contacts singly or in bulk, attach them to lists and topics, and build segments from conditions
- Create a marketing campaign, send it now or schedule it, and read its engagement events

## Use cases

### Agent-sent transactional email through Jentic

An AI agent handling customer requests can send a templated email with the right merge data and then check its delivery events to confirm it arrived. Through Jentic the agent finds the send operation by intent and the bearer key is injected at execution time, and a rule can allow sending and event reads while leaving domain deletion and campaign sends out of reach.

Example prompt: Call POST /emails with from 'support@example.com', to ['jane@example.com'], template_slug 'order-confirmation', and substitution_data containing the order number, then call GET `/emails/events` with recipients 'jane@example.com' and events 'delivery,bounce'

### Reliable transactional sends

Receipts, password resets, and alerts must arrive once and only once. Lettr sends from html or text or a stored template, tags messages and attaches metadata for later lookup, and honours an Idempotency-Key so a retried request returns the original result instead of sending again, with open and click tracking toggled per message.

Example prompt: Call POST /emails with Idempotency-Key 'reset-8841', from 'no-reply@example.com', to ['user@example.com'], subject 'Reset your password', and html containing the reset link

### Deliverability monitoring

Bounces and spam complaints need attention before they damage sender reputation. The Lettr events operation filters by event type, recipient, date range, transmission, and bounce class, and webhooks push events such as message.delivery and message.bounce to your endpoint with basic or OAuth authentication.

Example prompt: Call GET `/emails/events` with events 'bounce,spam_complaint' for the last day and list the affected recipients

### Newsletter audiences and campaigns

Lettr also covers marketing email. Contacts can be added in bulk with properties, attached to lists and subscription topics, and grouped into condition-based segments, and a campaign built from html content or a template can be sent at once or scheduled with scheduled_at, with engagement events available per campaign.

Example prompt: Call POST `/audience/contacts` with email 'new.subscriber@example.com' and the newsletter list_id, then POST `/campaigns/{campaignId}/schedule` with scheduled_at '2026-11-09T09:00:00Z'

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/emails` | Send an email |
| POST | `/emails/scheduled` | Schedule an email |
| GET | `/emails/events` | List email events |
| GET | `/emails/{requestId}` | Get email detail |
| POST | `/domains/{domain}/verify` | Verify a sending domain |
| POST | `/webhooks` | Create a webhook |
| POST | `/audience/contacts` | Create a contact |
| POST | `/campaigns/{campaignId}/send` | Send a campaign |

## Key resources

- **Emails** — Send, schedule, cancel, list, and inspect emails, and list delivery and engagement events
- **Domains and webhooks** — Add, verify, and delete sending domains; create, update, and delete event webhooks
- **Templates** — Create, update, fetch, and delete templates, read their HTML and merge tags, and list folders and projects
- **Audience** — Contacts, lists, topics, properties, and segments, with bulk add, attach, and subscribe operations
- **Campaigns** — Create, send, schedule, and unschedule campaigns, and list their engagement events

## AI readiness

This API is usable in Jentic One now. Its AI-readiness score against Jentic's framework shows where it stands today and where improvements would make it even easier for agents to use.

- **Score:** 70 / 100
- **Maturity:** AI-Aware
- **Dimensions:**
  - Foundational Compliance: 62 / 100
  - Developer Experience & Jentic Compatibility: 77 / 100
  - AI-Readiness & Agent Experience: 61 / 100
  - Agent Usability: 91 / 100
  - Security: 60 / 100
  - AI Discoverability: 81 / 100
- **View full report:** https://jentic.com/apis/lettr.com/lettr/scorecard
- **How the score is calculated:** https://docs.jentic.com/reference/api-readiness-framework/overview/
- **More about the dimensions:** https://docs.jentic.com/reference/api-readiness-framework/specification/#dimensional-model-overview

### Score it yourself

Every API in the directory is allowlisted, so you can re-score it with no key required.

- **Score your own API:** https://jentic.com/scorecard.md
- **Scoring CLI agent skill:** https://github.com/jentic/jentic-api-scorecard/blob/main/skills/jentic-api-scorecard/SKILL.md

```sh
npx @jentic/api-scorecard-cli score <openapi-url>
```

## Why Jentic

- **Setup:** Wiring Lettr by hand means managing a bearer key, setting an Idempotency-Key on retries, verifying sending domains, and choosing between html, text, and template_slug content on each send. Through Jentic you install once, import Lettr from the API Directory, store the key once, and your agent calls it.
- **Permission scoping:** Lettr carries recipients and content in the request body, so for sends, rules bound which operations your agent may call, not who it emails. Templates, campaigns, domains, and audience lists carry their ids in the URL path (`/templates/{slug}`, `/campaigns/{campaignId}/send`), so those operations can be pinned to one template, campaign, or list. You choose the operations it may call, so destructive ones like deleting a domain or sending a campaign are not included unless you add them.
- **Credential handling:** Your Lettr API key is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'send a transactional email' or 'check if an email bounced', and Jentic returns the matching Lettr operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Resend API** — Developer-focused transactional email API
- **SparkPost API** — High-volume email delivery with transmissions, templates, and events
- **Postmark Server API** — Transactional email with message streams and bounce handling
- **Mailchimp API** — Email marketing audiences, campaigns, and automations

## FAQ

### Is there a Lettr MCP server?

You don't need an MCP server to give your agent the Lettr API. Jentic connects it directly from the API Directory: import it, store your API key once, and your agent calls it. Operations are discovered on demand, so your agent's context carries no tool definitions it will not use.

### What authentication does the Lettr API use?

Per its OpenAPI spec, the Lettr API uses HTTP bearer authentication with your Lettr API key, and GET `/auth/check` confirms a key is valid. The health check is declared open. Through Jentic, the key is stored encrypted by your own Jentic One instance and injected at execution time, so it never enters the agent's context.

### Can I retry a Lettr send without sending the email twice?

Yes. Send an Idempotency-Key header with POST /emails. Repeating the same payload with the same key returns the original result without another delivery, while a conflicting payload or a transmission still in progress returns 409.

### What are the rate limits for the Lettr API?

The OpenAPI spec does not specify rate limits, though it notes Lettr checks your sending quota before each send. Check https://docs.lettr.com for current limits.

### How do I send a templated email with Lettr through Jentic?

Install Jentic One with `curl -fsSL https://raw.githubusercontent.com/jentic/jentic-one/main/tools/install.sh | sh`, import the Lettr API from the directory, and store your API key. Your agent then searches for 'send a transactional email' and Jentic returns POST /emails, which requires from and to and accepts a template_slug with substitution_data. To run it on your own infrastructure, install Jentic One from its GitHub repo.

### How do I find out whether a Lettr email bounced?

Call GET `/emails/events` with events set to bounce and recipients set to the address, optionally narrowed by a from and to date range and by bounce_classes. For push delivery, create a webhook with POST /webhooks subscribed to events such as message.bounce.

### Can I limit what my agent is allowed to do with the Lettr API?

Yes. For a support assistant, write a rule that allows only POST /emails and GET `/emails/events`: the agent can send transactional emails and check their delivery, but cannot send or schedule campaigns, delete domains, or edit your audience, and every call it makes is logged.
