Destination · publishing reference
X publishing reference for Postdom
This X publishing reference explains the OAuth connection, empty settings contract, media checks, account-tier caveat, and returned outcome.
Human authorization boundary
X publishing reference connection requirements
A human completes the destination connection. The agent receives the resulting account ID—not the social credential—and supplies that exact account ID to publish_video.
connectionOAuth
prerequisiteNo additional Postdom prerequisite is recorded beyond an eligible account.
current source surfacepost
Configured output
What Postdom sends to X
The public tool accepts product-level publishing fields. Postdom builds destination settings after validation; callers cannot smuggle an undocumented settings object through publish_video.
settings- omitted
Postdom sends no X-specific settings or audience field.
Postdom sends no X-specific settings. An accepted Postdom request does not establish the account's X upload entitlement.
{
"platform": "twitter",
"settings": {}
}Enforced, documented, or unknown
X publishing limits
Every row comes from the current @postdom/core registry. “Postdom enforced” means the source contract checks the fact. A recommendation, documented-but-unenforced fact, or unpublished value must not be presented as a passed validation.
caption max chars
4000
Postdom contract · verified 2026-08-21T00:00:00.000Z
Evidence reference retained in the core registry.
media max bytes
524,288,000 bytes
Postdom contract · verified 2026-08-21T00:00:00.000Z
Evidence reference retained in the core registry.
video max seconds
600
Postdom contract · verified 2026-08-21T00:00:00.000Z
Evidence reference retained in the core registry.
video mime types
video/mp4, video/quicktime
Postdom contract · verified 2026-08-21T00:00:00.000Z
Evidence reference retained in the core registry.
image mime types
image/jpeg, image/png, image/gif, image/webp
Postdom contract · verified 2026-08-21T00:00:00.000Z
Evidence reference retained in the core registry.
post text counting
280
Unit: weighted characters · Field: text · Scope: POST /2/tweets
Platform evidence · verified 2026-09-02T00:00:00.000Z
Qualification
X counts weighted characters - Latin text 1, CJK and emoji 2, and any URL a flat 23 regardless of its length - so a UTF-16 count both over-rejects captions carrying links and under-counts CJK. Enforcing it would need X's weighting and its URL extractor; until then the limit is reported, not gated.
video max seconds
1200
Platform evidence · verified 2026-09-02T00:00:00.000Z
Official sourcevideo mime types
Not published
Platform evidence · verified 2026-09-02T00:00:00.000Z
Official sourceresolution min pixels
width: 32; height: 32
Platform evidence · verified 2026-09-02T00:00:00.000Z
Official sourceresolution recommended
width: 1280; height: 720
Platform evidence · verified 2026-09-02T00:00:00.000Z
Official sourceaspect ratio recommended
16:9, 1:1
Platform evidence · verified 2026-09-02T00:00:00.000Z
Official sourceresolution max pixels
width: 1280; height: 1024
Platform evidence · verified 2026-09-02T00:00:00.000Z
Qualification
Was 1920x1200 from the provider; X's own advanced constraints say "between 32x32 and 1280x1024". Still not gated, and now for a second reason on top of the original one. The original: published as a single bound with no orientation stated, which would reject every standard vertical short, and Postdom's own control fixtures upload 1080x1920 to X. The second: the same X page says a subscribed user "can upload a 1080p video and get 1080p playback", and 1080x1920 does not fit inside 1280x1024. Two first-party statements that contradict each other do not make a limit, so this one is recorded and left unread.
aspect ratio
minimum: 0.3333333333333333; maximum: 3
Platform evidence · verified 2026-09-02T00:00:00.000Z
Qualification
"between 1:3 and 3:1", from X's advanced constraints. Sat in the enforcement snapshot as not_published, which was true of the provider's page - it gives the two recommended ratios and no range - and false of X's. Not gated because the X preflight branch reads resolution and duration, not ratio.
video min seconds
0.5
Platform evidence · verified 2026-09-02T00:00:00.000Z
Qualification
mediaUploadPreflightRequestSchema declares duration_seconds as a positive integer, so no request can express half a second. An enforced minimum no request can violate is unenforceable by construction.
Result boundary
How to verify the X outcome
X video rules can vary by account tier. This page states Postdom's current contract and recorded evidence boundary, not a successful public-post observation.
Never collapse a workflow state into success
Store the Postdom post ID, read the exact destination state with get_publish, and preserve a missing public URL, approval state, terminal refusal, or provider error exactly as returned.
Nine modeled fields
X metric availability
The matrix records evidence states, not guaranteed live values. Unverified and never remain null with a reason; zero remains a measured zero.
viewsViewsRequired view count in a normalized snapshot.
2026-09-02T00:00:00.000Z
Numeric when a snapshot exists. Zero remains zero.
likesLikesRequired like count in a normalized snapshot.
2026-09-02T00:00:00.000Z
Numeric when a snapshot exists. Zero remains zero.
commentsCommentsRequired comment count in a normalized snapshot.
2026-09-02T00:00:00.000Z
Numeric when a snapshot exists. Zero remains zero.
sharesSharesRequired share count in a normalized snapshot.
2026-09-02T00:00:00.000Z
Numeric when a snapshot exists. Zero remains zero.
savesSavesNullable saved or favorited count.
Not verified
Always null with an explicit reason.
watch_time_sWatch timeNullable total watch time in seconds.
Not verified
Always null with an explicit reason.
avg_watch_pctAverage watchNullable average watched percentage.
Not verified
Always null with an explicit reason.
completion_pctCompletionNullable completion percentage.
Not verified
Always null with an explicit reason.
follower_deltaFollower deltaNullable follower-change field.
2026-09-02T00:00:00.000Z
Currently normalized to null; derivation is not promised.
Verification scope
X evidence boundary
Contract evidence is not an observed publication
These pages describe source-backed product contracts. They do not represent an authenticated end-to-end publication or analytics test.
Inspect the connected tool schema before acting. Current source may be ahead of the separately published @postdom/mcp helper.
Use the contract
Publish with explicit authority and outcomes
Create a workspace, connect an eligible account, and let the agent use only the fields exposed by the connected schema.