Skip to main content

X (Twitter) — Data Mapping

B
Written by Ben Keeling

The objects we sync from your X account, the exact fields we read for each, and how they map into Medialake.


Medialake reads the connected account's own post timeline and syncs the media attached to those posts — all read-only, via the official X API v2. We only read the fields listed on this page, nothing else. Engagement metrics reporting arrives with the upcoming organic-posts phase; no metrics are surfaced yet.


Objects at a glance

X object

What it is

Why we sync it

The connected account

The entry point — identifies whose posts we read

An entry on the account's timeline

Carries the media and the context each file belongs to

A photo, video, or animated GIF attached to a post

Medialake ingests these as files


The connected account

Read live from GET /2/users/me to identify the account and present it as the selectable source.

Fields we read:id, name, username, profile_image_url


Posts

The account's own timeline is read from GET /2/users/{id}/tweets, page by page. Replies and reposts are excluded — only original posts (including quote posts) are synced. The API reaches roughly the account's 3,200 most recent posts; older history is not available at this access level.

Fields we read:id, text, created_at, attachments (the post's media keys), public_metrics

Posts aren't stored as records themselves — each ingested file carries its post's context: the post id, a snippet of its text, its permalink, and its published date. (public_metrics is read in preparation for the organic-posts phase; nothing is reported from it yet.)


Media

Each media object attached to a post becomes a file in Medialake:

  • Photos are ingested from their direct url (also used as the thumbnail).

  • Videos and animated GIFs list several renditions (variants); Medialake ingests the highest-bitrate MP4 and uses preview_image_url as the thumbnail.

  • X media objects carry no timestamps of their own — the post's created_at provides the publish date context.

  • If a stored media URL stops working, a fresh one is fetched from the API and the download is retried automatically.

Fields we read:media_key, type, url, variants, preview_image_url, width, height, duration_ms, alt_text


How it maps into Medialake

X account
 └─ Post (id, text, permalink, date — stored as context on each file)
     ├─ File (photo: direct URL + thumbnail)
     └─ File (video / GIF: best MP4 rendition + preview thumbnail)

Everything on this page is read-only — see Authentication for the permissions behind it.


Further reading (X documentation)


Questions about a specific field? Contact [email protected].

Did this answer your question?