Browse docs

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.

connection

OAuth

prerequisite

No additional Postdom prerequisite is recorded beyond an eligible account.

current source surface

post

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.

CURRENT SOURCE ADAPTER OUTPUT · NOT TOOL INPUT
{
  "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.

Postdom enforced

caption max chars

4000

Postdom contract · verified 2026-08-21T00:00:00.000Z

Evidence reference retained in the core registry.

Postdom enforced

media max bytes

524,288,000 bytes

Postdom contract · verified 2026-08-21T00:00:00.000Z

Evidence reference retained in the core registry.

Postdom enforced

video max seconds

600

Postdom contract · verified 2026-08-21T00:00:00.000Z

Evidence reference retained in the core registry.

Postdom enforced

video mime types

video/mp4, video/quicktime

Postdom contract · verified 2026-08-21T00:00:00.000Z

Evidence reference retained in the core registry.

Postdom enforced

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.

Documented, not enforced

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.

Official source
Postdom enforced

video max seconds

1200

Platform evidence · verified 2026-09-02T00:00:00.000Z

Official source
Not published

video mime types

Not published

Platform evidence · verified 2026-09-02T00:00:00.000Z

Official source
Postdom enforced

resolution min pixels

width: 32; height: 32

Platform evidence · verified 2026-09-02T00:00:00.000Z

Official source
Recommendation

resolution recommended

width: 1280; height: 720

Platform evidence · verified 2026-09-02T00:00:00.000Z

Official source
Recommendation

aspect ratio recommended

16:9, 1:1

Platform evidence · verified 2026-09-02T00:00:00.000Z

Official source
Documented, not enforced

resolution 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.

Official source
Documented, not enforced

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.

Official source
Documented, not enforced

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.

Official source

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.

MetricStateBaselineValue behavior
viewsViews

Required view count in a normalized snapshot.

available

2026-09-02T00:00:00.000Z

Numeric when a snapshot exists. Zero remains zero.

likesLikes

Required like count in a normalized snapshot.

available

2026-09-02T00:00:00.000Z

Numeric when a snapshot exists. Zero remains zero.

commentsComments

Required comment count in a normalized snapshot.

available

2026-09-02T00:00:00.000Z

Numeric when a snapshot exists. Zero remains zero.

sharesShares

Required share count in a normalized snapshot.

available

2026-09-02T00:00:00.000Z

Numeric when a snapshot exists. Zero remains zero.

savesSaves

Nullable saved or favorited count.

unverified

Not verified

Always null with an explicit reason.

watch_time_sWatch time

Nullable total watch time in seconds.

unverified

Not verified

Always null with an explicit reason.

avg_watch_pctAverage watch

Nullable average watched percentage.

unverified

Not verified

Always null with an explicit reason.

completion_pctCompletion

Nullable completion percentage.

unverified

Not verified

Always null with an explicit reason.

follower_deltaFollower delta

Nullable follower-change field.

estimable

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.

VERIFIED · 23 SEPTEMBER 2026Current source adapter · Core evidence registries · Modeled metric availability

Private identifiers and unverified publication claims are excluded. External links are limited to first-party platform sources.