Documentation menu

Networks

X (Twitter)

View .md

Publishing to X with Dravo: scopes, text and media, the chunked v2 media upload, and the media.write caveat.

What you can post

X supports text posts, image posts and video posts. Dravo posts with an OAuth 2.0 user token via the X API v2.

Scopes

ScopeWhy
tweet.writeCreate posts.
media.writeUpload images and video.
users.readRead the connected account identity.
offline.accessRefresh the token without re-consent.

Media uploads

Dravo uploads media with the X v2 chunked flow: initialize, append the file in chunks, finalize, then poll processing status for video before attaching the media id to the post. You do not manage any of this; you pass a media_urls entry and Dravo handles the upload.

The media.write caveat

OAuth 2.0 does work for X media upload, but the user token must include media.write and must have been issued after that scope was granted. Tokens minted before media.write was added return a 403 on the upload endpoints. If media upload fails on an older connection, reconnect the account so it gets a fresh token with the right scope.

Plan limits

On X's Free tier, media upload and posting are tightly rate limited (single digit requests per day for some endpoints). For real usage you will need a paid X API tier. These limits are set by X, not Dravo.