Skip to main content
GET
X news story API with every version of a story
1 credit per request · All plans from $0.00012/credit · Supports guest paid reads

How did an X news story change?

X writes a news story for each topic under Explore and News, and rewrites it as the topic moves. Use GET /x/news/{id}/versions to read every version of 1 story, oldest first.
  • headline is the story’s headline in that version.
  • text is the story’s text in that version.
  • createdAt is when X wrote the version, in UTC.
X lists every version at once, so 1 request returns the whole history. A story from 2 hours ago may have 1 version, and a story that ran all day may have 8 or more.

Path parameters

string
required
Story ID, such as 2110209733533598095. The URL-encoded story link also works, such as x.com/i/trending/2110209733533598095. Open a story on x.com to copy its link.

Query parameters

string
Fields to keep in each row, comma-separated, such as id,text,author.username. Use dots for nested fields. Case & underscores do not matter. A row that lacks a field leaves it out. Cursors, counts & diagnostics always stay. An unknown name returns 400 unknown_field with the valid names, before any read. The price stays the same.
string
Fields to drop from each row, comma-separated, such as entities,media. It takes the same names as fields. With fields, it drops from the kept fields.

Headers

string
Full account key. Sessions and OAuth also work.
string
Bearer xq_your_guest_key_here for paid_reads.

Response

200 OK

string
The story ID the request named.
number
Versions returned.
object[]
The story’s versions, oldest first.
string
The version’s ID.
string
When X wrote the version, in UTC. Xquik reads it from the version’s ID.
string
The story’s headline in this version.
string
The story’s text in this version. X writes the time above it in each reader’s time zone, so Xquik leaves that line out and serves createdAt.

400 Invalid story ID

The path named no story. This answer is free.

404 Story not found

X lists no version for the ID. This answer is free.

401 Unauthenticated

Anonymous requests get WWW-Authenticate: Bearer and a guest wallet checkout action. This is not a Payment challenge.

402 Payment required

Account keys get account options. Guest keys get guest top-up only. No checkout starts automatically. Confirm any payment action.

502 X API unavailable

The read service returned an error. Retry after a short delay.