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.

4 min readSume
All posts

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?

sendVideoNote parameters, from the Telegram Bot API, read 2026-09-29.
ParameterWhat the page says
video_note (required)A file_id, or a new upload with multipart/form-data; URLs are unsupported
durationDuration of the sent video in seconds
lengthVideo width and height, i.e. the diameter of the video message
thumbnailJPEG 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

All Media tools posts

Written by Sume