Documentation Index
Fetch the complete documentation index at: https://docs.letmepost.dev/llms.txt
Use this file to discover all available pages before exploring further.
What it checks
AfteruploadVideo, the publisher polls app.bsky.video.getJobStatus. If the response carries state: "JOB_STATE_FAILED", the upload made it onto the service but transcoding (or scanning) decided not to keep it.
Why
Bluesky’s video service runs an encode pass + a scanning pass. Either can reject a file. Common causes:- Codec other than h.264 video / AAC audio
- Corrupt mp4 container (often happens when re-muxing without
+faststart) - Clip exceeds Bluesky’s 60 s duration cap (caught here, not in size preflight, because duration isn’t in the byte length)
- Content scanning rejected the file
Failure response
Remediation
Re-encode to a known-good profile:platformResponse.message is your best lead — it’s the verbatim string from Bluesky’s transcoder.