SES message size: 10 MB on v1, 40 MB on v2 - what a video clip needs
Amazon SES caps a message at 10 MB on v1 and 40 MB on v2 or SMTP, after base64. Size a Sume video trim to fit and avoid the throttled large-message path.

Amazon SES allows 10 MB per message, attachments included and measured after base64 encoding, if you send through the v1 API. Through the v2 API or SMTP the limit is 40 MB. Messages above 10 MB are also subject to bandwidth throttling, so a video attachment is usually better kept small even when v2 would accept it.
The numbers are from AWS's Amazon SES service quotas, read 2026-10-03. The clip-shrinking side uses Sume's video trim docs.
What are the SES message limits?
The quota page lists the limit by API. It marks neither as adjustable, so you cannot ask for more. For workloads over 10 MB it points v1 users at the v2 API.
| API | Maximum message size | Adjustable |
|---|---|---|
| SES v1 API | 10 MB per message, after base64 encoding | No |
| SES v2 API or SMTP | 40 MB per message, after base64 encoding | No |
| Any API, above 10 MB | Subject to bandwidth throttling | Not applicable |
What the throttling note means
AWS says messages larger than 10 MB are subject to bandwidth throttling and that, depending on your sending rate, you may be throttled to as low as 40 MB/s. Its example is one 40 MB message per second, or two 20 MB messages per second.
For a campaign this matters more than the per-message cap. A 30 MB clip sent to a long list ties up sending capacity that small messages would not, so a shorter clip helps twice: it fits, and it moves faster.
Fitting a clip with Sume video trim
Sume's video trim takes one clip that is already on media.sume.com, so import the source first with POST /v1/media-imports. One trim job costs $0.02.
Trim the clip first. Send start and either end or duration, plus output with a smaller width and height (256-2160) and an fps of 24, 25, 30 or 60. precision has to stay exact, the default, for output to be accepted. Add audio: "drop" for a silent loop. Sume's docs offer no file-size or bitrate target, so you steer size with length, frame size and audio, then measure the result.
durationruns from 0.2 s to 900 s, so cut to the moment that sells.output.widthandoutput.heightaccept 256 to 2160, and a smaller frame is the biggest size lever after length.- The result is a new MP4 and the source stays untouched, so you can try several sizes.
A practical order of work
Decide the budget first. If you send on v1, target well below 10 MB, since the figure includes base64 growth and the rest of the message. Download the trimmed MP4, check its byte size, and compare against the budget with some margin. Base64 turns three bytes into four characters, which is general arithmetic rather than an SES figure, so a real test send is the proof.
If the clip will not fit, hosting it and linking from the email avoids the attachment limit entirely, as described in embed video in email.
Choosing the API before the clip
If your code already calls the SES v1 API, the 10 MB ceiling applies and AWS says it cannot be raised. AWS suggests moving workloads with larger messages to the v2 API. Moving APIs is a bigger change than shortening a clip, so decide which is cheaper for you.
Either way, treat the limit as a budget for the whole message. Headers, the HTML body and every attachment draw on it, so a clip that is 9 MB on disk is a risk on v1 once base64 growth is added.
Sources
Related posts
More in Media tools
- Apple Podcasts transcript speaker names: VTT, and Sume STT gaps
Apple shows speaker names when you provide a VTT. Sume STT has no speaker labels, so transcribe each track and merge with voice tags. Script included.
- audio_detach_range_empty and detach_start_past_source: what they mean
audio_detach_range_empty: range.end is not after start, or span over 900 s. detach_start_past_source: start is past the source length.
- Audio-only cut of a 5 minute episode: mp3 for $0.01
Turn a finished 5 minute video into a 128 kbps mp3 for $0.01 with audio-detach. Source up to 1800 s, output up to 900 s, and the silent-source error.
- audio_spine_low_fidelity: why a 16 kHz transcript wav warns
Sume warns audio_spine_low_fidelity when a render's audio.url is a 16 kHz mono speech-to-text wav. Detach the track at its source rate instead.
Written by Sume