Docs
Connect a product in three steps.
Create a key, verify a domain, change one line.
Last reviewed
On this page (4)
Step 1: Create a key
In your project, open API keys and start with a sandbox key. It captures messages without delivering them, so you can wire up your code before your DNS is ready. Sandbox keys start with
lp_test_, live keys withlp_live_, and each key is shown once.Step 2: Verify a domain
Add your domain, or a dedicated subdomain, under Domains and publish the records it shows: ownership, DKIM, SPF, return path and DMARC, plus MX if you turn receiving on. The domain page checks them on its own (or select Check now). Live sending starts once the sending records match.
Step 3: Set baseUrl
Keep the Resend SDK you already use and point it at Letterpier. That is the one line that changes.
lib/mail.ts import { Resend } from 'resend';const mail = new Resend(process.env.LETTERPIER_API_KEY, { baseUrl: 'https://app.letterpier.com',});
- QuickstartConnect your domain, send with the Resend SDK you already use, receive catch-all mail and follow every delivery.
- SendingSend one message or a batch of up to 100, schedule up to 30 days ahead, and retry safely with idempotency keys.
- ReceivingTurn receiving on for a verified domain and mail to any address on it arrives in its project. Fetch the body, attachments and original message with a full-access live key.
- WebhooksSigned events for sending and receiving, retried up to 8 times over about 27½ hours, and at least once.
- Domains and DNSFive DNS records prove the domain is yours and authenticate your mail; an MX record adds receiving if you want it. Verify them once; Letterpier keeps checking.
- API keysEvery key belongs to one project and one environment, and either sends only or has full access.
- Message statusesEvery message carries one of 14 statuses. Each says where the message is, whether its story is over, and which webhook reports it.
- Limits and windowsEvery limit and time window in one table, from 50 recipients per message to 100 API requests per minute.
- Resend compatibilityLetterpier answers the Resend HTTP API for the endpoints it covers, tested with resend@6.30.0.
Letterpier answers the Resend HTTP API for the endpoints it covers, tested with the unmodified resend@6.30.0 SDK. Operations it doesn’t cover return an explicit error.
Supported
- Send one message or a batch with
emails.sendandbatch.send - List, retrieve, reschedule and cancel sent messages
- Retrieve received mail and its attachments
- Create, list, get and verify domains
- Create, list and revoke API keys
- Create, list and delete webhooks; verify their signatures with
webhooks.verify
Not supported
- Templates, contacts, audiences, segments, topics and broadcasts
- Automations and other marketing APIs
- Open and click tracking
- Updating or deleting domains; getting or updating webhooks
- API keys scoped to one domain
- Forwarding received mail
- recipients per message
- 50
- messages per batch
- 100
- furthest scheduling ahead
- 30 days
- idempotency window
- 24 hours
- API requests per minute, per project and environment
- 100
- webhook attempts over about 27½ hours
- 8