The error#
AuthRequired builds {auth} needed to access {resource} when you pass auth. These are the messages the X extractor raises in 1.32.19:
'twid' cookie needed to access this resource
authenticated cookies needed to access this timeline
NSFW Tweet
Protected TweetThe first is AuthRequired("'twid' cookie"), so the resource falls back to this resource. The second is AuthRequired("authenticated cookies", "timeline"). NSFW Tweet and Protected Tweet are passed as message, so they are not wrapped in needed to access.
A tweet that is unavailable for another reason is AbortExtraction with Tweet unavailable ('{reason}'). An account lock is AuthorizationError with Account temporarily locked.
What triggers it#
Likes for i/history need a twid cookie. A GraphQL timeline that returns 403 or 404 with no x-twitter-auth-type header asks for authenticated cookies. A tweet result whose __typename is TweetUnavailable and whose reason is NsfwLoggedOut or NsfwViewerHasNoStatedAge uses NSFW Tweet. Reason Protected uses Protected Tweet.
How to confirm#
Match the exception text to the four lines above. Account temporarily locked is the lock path: unless the extractor config locked is wait, it raises immediately. wait logs the warning and calls input("Press ENTER to retry.").
Fixes#
The messages name cookies, not a password flag. Export the browser cookies the extractor already documents for X (twid is the one the likes path reads) and pass them the way you pass cookies for other gallery-dl sites. Protected tweets stay unavailable unless that account follows the author. NSFW logged-out is the same class of wall: the reason string is NsfwLoggedOut.
Could not authenticate you inside an API error becomes AbortExtraction of that message, and the session is not reused as a success.
SocialScrape#
X profile, one post and profile posts read the logged-out pages. Protected posts are not part of that. Suspended accounts come back as removed.
Failed requests cost 0 credits. New accounts get 100 credits on signup, no card.