I need to point out that I am not talking about the API that they provide but rather what they use to download the content when you are just scrolling the page.
I have managed to get the request which I believe is driving the whole thing, but I don't quite grasp how it works.
Here it is URL encoded:
https://twitter.com/i/api/graphql/u7I0lIRjA96yhblCP2akgA/UserTweetsAndReplies?variables=%7B%22userId%22%3A%221689053936%22%2C%22count%22%3A40%2C%22cursor%22%3A%22HBaKgLOFsoP%2BpykAAA%3D%3D%22%2C%22includePromotedContent%22%3Atrue%2C%22withCommunity%22%3Atrue%2C%22withSuperFollowsUserFields%22%3Atrue%2C%22withDownvotePerspective%22%3Afalse%2C%22withReactionsMetadata%22%3Afalse%2C%22withReactionsPerspective%22%3Afalse%2C%22withSuperFollowsTweetFields%22%3Atrue%2C%22withVoice%22%3Atrue%2C%22withV2Timeline%22%3Afalse%2C%22__fs_dont_mention_me_view_api_enabled%22%3Afalse%2C%22__fs_interactive_text_enabled%22%3Afalse%2C%22__fs_responsive_web_uc_gql_enabled%22%3Afalse%7D
And here are the decoded variables:
{
"userId": "1689053936",
"count": 40,
"cursor": "HBaKgLOFsoP+pykAAA==",
"includePromotedContent": true,
"withCommunity": true,
"withSuperFollowsUserFields": true,
"withDownvotePerspective": false,
"withReactionsMetadata": false,
"withReactionsPerspective": false,
"withSuperFollowsTweetFields": true,
"withVoice": true,
"withV2Timeline": false,
"__fs_dont_mention_me_view_api_enabled": false,
"__fs_interactive_text_enabled": false,
"__fs_responsive_web_uc_gql_enabled": false
}
So, what I don't understand here is u7I0lIRjA96yhblCP2akgA in the link and cursor In the variables. Where does this come from? How do they pass to the API which tweets in particular need to be loaded? How would one construct this request by themselves?