No output yet. Submit the form to generate content.
Transparent pricing with no hidden fees. Pay as you go.
| Rule & Modality | Channel | Credits | Price (USD) | Official / Reference Price | Daily Savings |
|---|---|---|---|---|---|
user-media otherTwitter | Starter | 0.01per post | $0.00005 | - | - |
Competitor pricing costs $45.450 more
ApiPass is 90.90% lower, estimated at multiple calls returning 10,000 returned posts total
user-media
ApiPass Price
$0.0005
0.1 credits per post
Competitor Prices
Complete guide to using twitter-api-graphql
Retrieve any Twitter user's complete media timeline — photos, videos, and GIFs — through a single asynchronous API call.

The Twitter Graphql User Media API on ApiPass is a managed endpoint that lets you fetch the full media timeline of any public Twitter (X) account by simply providing a user ID. Built on top of Twitter's internal GraphQL infrastructure, it returns a structured JSON payload containing every photo, video, and GIF posted by the target user, along with rich metadata such as post timestamps, engagement metrics, and media URLs. ApiPass wraps this functionality into an asynchronous task-based workflow: you submit a request to /api/v1/jobs/createTask with the model twitter/graphql/user-media, receive a taskId, and then either poll /api/v1/jobs/recordInfo or register a callback URL to receive the results once processing completes. This design eliminates the headaches of token management, rate limits, and scraping infrastructure, letting developers focus on building features rather than maintaining pipelines.
Skip the lengthy approval process, enterprise paywalls, and quota restrictions of the official X API. A single ApiPass API key unlocks immediate access.
The default auto channel automatically allocates tasks across available providers based on real-time pricing and stability metrics, balancing minimal cost and reliable performance without manual configuration.
Choose between starter (ultra-low-cost), regular (standard tier priced far below official APIs), or official (native Twitter API with high stability) depending on your budget and reliability needs.
Submit jobs and receive results via webhook callbacks or polling, making it ideal for high-volume batch processing where blocking calls would be impractical.
Get back the same deeply nested data Twitter's own web client consumes, including media variants, bitrates, dimensions, and tweet context — far more detailed than REST alternatives.
Pay only for successful tasks, with transparent costs and built-in failover across providers, eliminating surprise overage bills common with official tiers.
Use the count parameter to fetch anywhere from a handful of recent media items to large batches in a single request, optimizing for either freshness or coverage.
Toggle fields like includePromotedContent, withBirdwatchNotes, withVoice, withClientEventToken, and withV2Timeline to include or exclude specific data layers, keeping payloads lean and relevant.
Every task surfaces a clear lifecycle status — waiting, queuing, generating, success, or fail — so your application can react intelligently to processing progress and handle errors gracefully.
Automatically pull and showcase a creator's entire visual feed on portfolio websites, fan pages, or personal brand hubs without manual uploads.
Track competitor or partner brands by continuously syncing their media posts into your analytics platform for visual sentiment and campaign analysis.
Collect large-scale, topic-targeted image and video datasets directly from public Twitter accounts to fine-tune computer vision or multimodal models.
Power newsfeed apps, mood boards, or trend-spotting platforms that surface the freshest visual content from influencers, journalists, or niche communities.
See how ApiPass's User Media endpoint stacks up against Twitter's official API in terms of accessibility, cost, and data richness — and why developers are switching.
The official Twitter API v2 /users/:id/tweets endpoint with media expansions requires a paid developer account, with the Basic tier alone costing $200/month and strict monthly post caps. ApiPass's User Media endpoint requires no Twitter approval, charges per task, and offers an official channel for users who still want native-API stability at competitive pricing.
Twitter's official REST API requires multiple expansion parameters and stitching of includes.media arrays to assemble a clean media timeline. ApiPass exposes the underlying GraphQL UserMedia operation directly, returning the same dense, pre-joined structure Twitter's own web client uses — including v2 timeline modules, voice metadata, and Birdwatch notes — all toggleable via simple boolean flags.
Audit an influencer's visual content history to evaluate brand alignment, posting cadence, and engagement quality before signing partnerships.
Build automated backup systems for journalists, public figures, or organizations that need durable records of their Twitter media in case of account loss or platform changes.
Investigators and reporters can systematically retrieve media evidence from key accounts during breaking events, preserving visual context with timestamps and metadata.
Brands can pull customer or ambassador media tagging their products into shoppable galleries, reviews pages, or social proof widgets.
Sign up on ApiPass, generate a Bearer token from your dashboard, and you're ready to authenticate every request.
Send a POST to /api/v1/jobs/createTask with "model": "twitter/graphql/user-media", the target userId (e.g., "44196397"), and any optional flags like count or withV2Timeline. You'll instantly receive a taskId in response.
Either poll GET /api/v1/jobs/recordInfo?taskId=... until state becomes success, or provide a callBackUrl during task creation to have ApiPass push the completed resultJson directly to your server the moment generation finishes.
All APIs require authentication via Bearer Token.
Authorization: Bearer
Get user media timeline
The API accepts a JSON payload with the following structure:
1{
2 "model": "string",
3 "callBackUrl": "string (optional)",
4 "channel": "auto",
5 "input": {
6 "variables": {
7 "userId": "string",
8 "count": "number",
9 "includePromotedContent": "boolean",
10 "withClientEventToken": "boolean",
11 "withBirdwatchNotes": "boolean",
12 "withVoice": "boolean",
13 "withV2Timeline": "boolean"
14 }
15 }
16}modelRequiredstringThe model name to use for generation
"twitter/graphql/user-media"
callBackUrlOptionalstringCallback URL for task completion notifications. If omitted, no callback will be sent.
"https://your-domain.com/api/callback"
channelOptionalstringYou may specify the corresponding provider within APIPASS via the channel parameter; these providers handle the actual image and video generation tasks. APIPASS currently offers three provider options:
The default value for the channel parameter is auto. When enabled, APIPASS automatically allocates tasks across available providers based on real-time pricing and stability metrics to balance minimal cost and reliable performance. Retain the default auto value unless you have custom routing requirements.
Available options:
auto
The input object contains the following parameters:
input.variables.userIdRequiredstring44196397
input.variables.countOptionalnumber20
input.variables.includePromotedContentOptionalbooleanfalse
input.variables.withClientEventTokenOptionalbooleanfalse
input.variables.withBirdwatchNotesOptionalbooleanfalse
input.variables.withVoiceOptionalbooleantrue
input.variables.withV2TimelineOptionalbooleantrue
1curl -X POST "https://api.apipass.dev/api/v1/jobs/createTask" \
2 -H "Content-Type: application/json" \
3 -H "Authorization: Bearer YOUR_API_KEY" \
4 -d '{
5 "model": "twitter/graphql/user-by-screen-name",
6 "callBackUrl": "https://your-domain.com/api/callback",
7 "input": {
8 "variables": {
9 "userId": "44196397",
10 "count": 20,
11 "includePromotedContent": false,
12 "withClientEventToken": false,
13 "withBirdwatchNotes": false,
14 "withVoice": true,
15 "withV2Timeline": true,
16 }
17 }
18 }'1{
2 "code": 200,
3 "message": "success",
4 "data": {
5 "taskId": "task_12345678"
6 }
7}codeStatus code, 200 for success, others for failure
messageResponse message, error description when failed
data.taskIdTask ID for querying task status and results