Limits
| Limit | Value | When it is reached |
|---|---|---|
| Token lifetime | 60–900 seconds (default 900) | The editor asks your getToken for a new one first |
| One design | 2 MB as stored (images are links, so this is a great deal of content) | message_too_large; the editor says so |
| One uploaded image | 10 MB | message_too_large |
| Image types | PNG, JPEG, GIF, WebP, or an SVG with no scripts in it | image_unsupported, naming the rule it broke |
| Restore points | 50 per design | The oldest is dropped |
| Email width | Up to 800px (600px is usual) | — |
| Landing page width | Up to 1600px | — |
| Popup width | Up to 1200px | — |
| Webhooks | 5 per project | Adding a sixth is refused |
| Webhook answer | 10 seconds, any 2xx | Retried, eight tries in all |
| Allowed sites | No fixed limit | — |
| End users, designs | No fixed limit | — |
Requests per minute, per secret key
| Calls | Limit |
|---|---|
| Token requests | 600 |
Lists and reads (designs.list, designs.get) | 600 |
| Exports | 120 |
| Renders | 120 |
| Erasures | 60 |
Over a limit: 429 rate_limited with a Retry-After header in seconds (retryAfter on
LettroveApiError). Spread batch work out, or contact support for more.
Email size
Gmail clips an email past about 102 KB behind "View entire message". Every export of a larger
email carries a warning in warnings. Images do not count — they are loaded from their addresses.
AI
Image generation uses credits from the plan of the Lettrove account that owns your workspace.
When they run out, it stops until the next period; everything else keeps working. Switch it off for
a whole project in Settings → Embed → your project → AI, or for one page with
features: { ai: { images: false } }.