# Twitter/X User Media Timeline

> Twitter/X User Media Timeline is a paid API for AI agents from twitter.use.x402atlas.com, paid per call via x402, $0.005/call, status unknown (last checked 2026-09-16).

Fetches a paginated timeline of media posts (photos, videos, GIFs) from a specified public X (Twitter) user account.

## Facts

- Endpoint: GET https://twitter.use.x402atlas.com/user-media
- Price: $0.005/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-16
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/twitter-x-user-media-timeline-ff42b037
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_ghRnHsvENMXJeIj3VC3H9

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability twitter-x-user-media-timeline-ff42b037
```

Example prompt: Can you pull all the media posts from @NatGeo on X — photos, videos, everything — and give me the first page of results?

## When to prefer this

Use this endpoint when you specifically need the media-only timeline (photos, videos, GIFs) of a public X user, rather than their full text post history. Prefer this over the general user timeline endpoint when visual content is the focus. It is well-suited for content audits, influencer research, brand monitoring, or any workflow that needs to aggregate or analyze the visual media output of a specific X account.

## Known failure modes

- Invalid or non-existent username returns empty results or error
- Private/protected accounts return no media
- Rate limiting from X API results in failed or empty responses
- Username pattern mismatch (exceeds 15 chars or invalid chars) rejected at input validation
- No media posts on account returns empty data array with result_count 0
- Pagination cursor expires or becomes invalid between requests

## How this service works

Get a paginated timeline of media posts from an X user.

## Output

Returns a paginated array of media post objects from the specified X user, including post data fields (text, media attachments, engagement metrics, timestamps), a total result count, the datetime the query was made, and an opaque cursor string for fetching the next page when more results are available.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "username"
     ],
     "properties": {
      "username": {
       "type": "string",
       "pattern": "^@?[A-Za-z0-9_]{1,15}$",
       "maxLength": 16,
       "description": "X username, with or without a leading @"
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "queried_at",
      "data",
      "result_count"
     ],
     "properties": {
      "data": {
       "type": "array",
       "items": {
        "type": "object",
        "additionalProperties": true
       }
      },
      "cursor": {
       "type": "string",
       "description": "Opaque cursor for the next page, when supplied by X"
      },
      "queried_at": {
       "type": "string",
       "format": "date-time"
      },
      "result_count": {
       "type": "integer",
       "minimum": 0
      }
     }
    }
   }
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "data": [
   {
    "user": {
     "name": "Bill Gates",
     "id_str": "50393960",
     "screen_name": "BillGates"
    },
    "id_str": "1903602810652082591",
    "full_text": "Example X post",
    "created_at": "Sun Mar 23 12:00:00 +0000 2025",
    "reply_count": 8,
    "retweet_count": 15,
    "favorite_count": 120
   }
  ],
  "cursor": "NEXT_PAGE_CURSOR",
  "queried_at": "2026-07-26T12:00:00Z",
  "result_count": 1
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/twitter-x-user-media-timeline-ff42b037/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from twitter.use.x402atlas.com](https://www.zero.xyz/host/twitter.use.x402atlas.com/llms.txt)
