Bluesky adds video posts: one video per post, up to 60 seconds
What changed
On September 11, 2024 Bluesky launched video posts: one video per post, up to 60 seconds, in .mp4, .mpeg, .webm or .mov, with optional subtitles. Uploads were capped at 25 videos or 10 GB per day, a limit Bluesky said it may tweak, and accounts must verify their email first. Posting video rolled out gradually and needed app version 1.91. The developer docs describe the app.bsky.embed.video embed and a video service that processes uploads before the post goes out.
What it means
Posts can carry one video of up to 60 seconds, so scheduling tools can publish video to Bluesky, within a daily upload cap and only for accounts with a verified email.
Who is affected
Scheduling and cross-posting tools that publish to Bluesky, and anyone posting short video there.
What to do by 11 Sept 2024
Upload video with uploadBlob or, better, through the video service at video.bsky.app, attach it as an app.bsky.embed.video embed with an aspect ratio, and check email verification with com.atproto.server.getSession before offering video.
What this means for you
Since September 2024 you can post a video on Bluesky. Each post can hold one video up to 60 seconds long. You must confirm your email address first, and there is a daily cap of 25 videos. Apps that schedule posts for you can now include video on Bluesky too, as long as your email is confirmed.
The details
- Launch post (September 11, 2024): one video per post, up to 60 seconds, file types .mp4, .mpeg, .webm and .mov. Videos auto-play by default and can carry subtitles. Viewing needed app version 1.91; the ability to post rolled out gradually.
- Daily limit at launch: "you can upload 25 videos / 10 GB of video per day. We may tweak this limit." Check the current docs before you rely on this figure.
- Email verification: "You must verify your email before you can upload a video." The developer docs say Bluesky-hosted accounts need a verified email and that apps can check this with
com.atproto.server.getSessionon the PDS. - Labels: posters can apply self-labels to their own videos, for example for adult content. Deleting a post deletes its video.
- Simple upload: call
com.atproto.repo.uploadBlobon the PDS and put the blob in anapp.bsky.embed.videoembed with anaspectRatio. Processing then only starts after the post appears in the firehose, so viewers can see a missing video for a few seconds. - Recommended upload: get a service token from
com.atproto.server.getServiceAuth(audience your PDS,lxmset tocom.atproto.repo.uploadBlob, about 30 minutes expiry), upload tohttps://video.bsky.appwithapp.bsky.video.uploadVideo, pollapp.bsky.video.getJobStatusuntil it returns a blob ref, then post. If the same video was processed before,getJobStatusreturnsalready_existstogether with the existing blob ref, so check for a blob ref even on an error. - Related: OAuth apps need a blob permission to upload media; see AT Protocol OAuth permissions.
What to do next
- Business owners: Confirm the email on your Bluesky account so you, and any app you use, can post video.
- Marketers and agencies: Plan Bluesky video in clips of 60 seconds or less and keep the daily upload cap in mind for big campaign days.
- Developers: Use the video service flow, show processing status before posting, send an aspect ratio, and handle
already_existsand unverified-email errors.
Primary sources
Get an email when a new API change is added
Follow new entries with the RSS feed. Each platform also has its own feed, for example X or Meta.