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
After the FINALIZE leg of the chunked upload (command=FINALIZE on /1.1/media/upload.json), X may return processing_info.state: "failed" either inline or on a subsequent STATUS poll. We surface that terminal state with the upstream error message intact.
Why
X’s video pipeline does its own validation: codec must be H.264, audio AAC, the mp4 container must be playable, duration ≤ 140 s for thetweet_video category, etc. None of these are byte-counted preflight checks — only the upload pipeline can verify them. When it rejects, this rule fires.
Failure response
Remediation
Re-encode to a known-good profile:error.message field — that’s the verbatim reason from X’s transcoder. “Invalid video” usually means codec or container; “duration too long” means trim under 140 s.
Related
twitter.media.video_size_max— file-size captwitter.media.processing_timeout— STATUS poll deadline