Telegram video note limits: 1 minute, square, upload only
A Telegram video note is a rounded square MPEG4 up to 1 minute, and bots cannot send it by URL. What sendVideoNote takes and how to render a square clip.

A Telegram video note (the round video message) is a rounded square MPEG4 of up to 1 minute, and a bot sends one with sendVideoNote. The Bot API's video_note parameter takes a file_id or a new multipart/form-data upload; it says sending video notes by URL is currently unsupported. Details are from the Telegram Bot API, read 2026-09-29.
What does sendVideoNote accept?
| Parameter | What the page says |
|---|---|
video_note (required) | A file_id, or a new upload with multipart/form-data; URLs are unsupported |
duration | Duration of the sent video in seconds |
length | Video width and height, i.e. the diameter of the video message |
thumbnail | JPEG under 200 kB, width and height at most 320 |
Is there a size limit for a video note?
The sendVideoNote entry states a length limit (1 minute) but no byte limit. The Bot API's general rule for uploads with multipart/form-data is 50 MB for files other than photos, and the entry for sendVideo says bots can currently send video files of up to 50 MB. Treat 50 MB as the ceiling for an upload, and note that Telegram says the limit may change. The URL route has a 20 MB cap for other content, but that does not help here, because video notes cannot be sent by URL.
For the Telegram limits on ordinary videos and a bot that generates them, see Telegram bot AI video generation.
How do I render a square clip with Sume?
Set the frame on Timeline 1.0: output.width and output.height are even integers from 256 to 2160, so a matching pair such as 640 and 640 is valid. The length comes from audio.duration_seconds (1 to 1800), so use 60 or less. The default fit, cover, is a scale-and-crop mode. Telegram's page states no pixel size for a video note, so pick one yourself and keep it square.
curl -X POST https://api.sume.com/v1/timeline-1.0/render \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: video-note-001" \
-d '{
"audio": { "mode": "silence", "duration_seconds": 10 },
"output": { "width": 640, "height": 640, "fps": 30 },
"video": [
{ "source_url": "https://media.sume.com/artifacts/artf_demo/clip.mp4",
"start": 0, "duration": 10, "fit": "cover" }
]
}'How do I check the file and send it?
When the job is ready, GET /v1/jobs/:id/result returns a video_url and duration_seconds. Run the file through Video inspect 1.0, whose probe reports width, height, duration_seconds, container and size_bytes; confirm the width equals the height, the duration is 60 or less, and the size is under 50 MB. Download the file, then upload it yourself as multipart/form-data, because Telegram will not fetch a URL for a video note.
Set length to your square side and duration to the probed seconds. Sume's docs do not describe a Telegram delivery step, so the upload is your bot's job. Keep the sound in mind too: this render's audio comes from the spine you set, so a silent spine gives a silent note.
Sources
Related posts
More in Media tools
- TikTok TopView ad specs: size, length, and safe zones
TikTok TopView ads are vertical 9:16 videos of 540×960 px or more, 5–60 s (9–15 s recommended), up to 500 MB, 2,500 kbps or more, pre-approved.
- Timeline fit: cover, contain, stretch or blur?
In a Sume Timeline render, video[].fit sets how a clip fills the frame: cover crops, contain pads black, stretch distorts, blur pads with a blurred copy.
- render_strategy_unsafe: Timeline render single with over 12 slots
render_strategy_unsafe means render.strategy was single with more than 12 video slots. Use auto or chunked, or send 12 or fewer slots. Sume Timeline docs.
- Trim a video without re-encoding: precision keyframe in the Sume API
Sume's video trim with precision keyframe stream-copies the cut, with no re-encode. It can start a GOP early, so read actual_start_seconds in the result.
Written by Sume