> ## Documentation Index
> Fetch the complete documentation index at: https://docs.keyapi.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# User's Media

<div className="inline-flex items-center gap-2 px-4 py-2 bg-yellow-50 dark:bg-yellow-900/20 border border-yellow-200 dark:border-yellow-800 rounded-lg">
  <span className="text-base">🪙</span>
  <span className="text-sm font-medium text-yellow-900 dark:text-yellow-100"><span className="font-semibold">1 credit</span><span className="text-yellow-700 dark:text-yellow-300 ml-1">per request</span></span>
</div>

## Copy for AI

<div className="my-6 rounded-xl border border-gray-200 bg-gray-50 p-5 dark:border-gray-800 dark:bg-gray-900/40">
  <div className="min-w-0">
    <p className="text-base font-semibold text-gray-900 dark:text-gray-100">🤖 Why Code When AI Can Do It For You?</p>
    <p className="mt-1 text-sm text-gray-700 dark:text-gray-300">Stop writing code like it's 1970! Let AI do the heavy lifting - click the sparkles to copy a perfectly formatted prompt for ChatGPT, Claude, or your favorite AI assistant.</p>
  </div>

  <div className="mt-4">
    <button
      type="button"
      className="inline-flex items-center gap-2 rounded-md border border-emerald-300 bg-emerald-50 px-3 py-2 text-sm font-medium text-emerald-800 hover:bg-emerald-100 dark:border-emerald-700 dark:bg-emerald-900/30 dark:text-emerald-100 dark:hover:bg-emerald-900/50"
      onClick={() => navigator.clipboard.writeText(`I want to make an API call to https://api.keyapi.ai/v1/twitter/usermedia.

Please help me write code to make this API call and handle the response appropriately. Include error handling and best practices.

Here are the details:

Endpoint: GET https://api.keyapi.ai/v1/twitter/usermedia

Description: User's Media

Required Headers:
--header 'Authorization: Bearer <YOUR_API_KEY>'

Parameters:
- screenname (Required): . Example: elonmusk
- rest_id (Optional): 
- cursor (Optional): 

Example Response:
{
"code": 0,
"message": "success",
"data": {
"timeline": [
  {
    "tweet_id": "2053181971644416080",
    "bookmarks": 16532,
    "created_at": "Sat May 09 18:35:02 +0000 2026",
    "favorites": 212590,
    "text": "The human-perceived RGB is image 1 and the Tesla AI photon count reconstruction is image 2. \n\nThis is why Tesla FSD can see so well at night or through extreme glare. https://t.co/ttBMzgpJtd",
    "lang": "en",
    "source": "<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone</a>",
    "views": "39841529",
    "quotes": 1065,
    "replies": 6196,
    "retweets": 18438,
    "conversation_id": "2053181971644416080",
    "media": {
      "photo": [
        {
          "media_url_https": "https://pbs.twimg.com/media/HH5eH0kbYAE6TjX.jpg",
          "id": "2053181968591052801"
        },
        {
          "media_url_https": "https://pbs.twimg.com/media/HH5eH0pbAAABYsv.jpg",
          "id": "2053181968611999744"
        }
      ]
    },
    "author": {
      "rest_id": "44196397",
      "name": "Elon Musk",
      "screen_name": "elonmusk",
      "avatar": null,
      "blue_verified": true
    }
  },
  {
    "tweet_id": "2052890115421417647",
    "bookmarks": 596,
    "created_at": "Fri May 08 23:15:19 +0000 2026",
    "favorites": 17550,
    "text": "https://t.co/CrThu6GaBY",
    "lang": "zxx",
    "source": "<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone</a>",
    "reply_to": "2052864667836649722",
    "views": "1535717",
    "quotes": 218,
    "replies": 1428,
    "retweets": 2908,
    "conversation_id": "2052864667836649722",
    "media": {
      "photo": [
        {
          "media_url_https": "https://pbs.twimg.com/media/HH1Urh9bIAASNtb.jpg",
          "id": "20528901119
... (truncated)`)}
    >
      <span>✨</span>
      <span>Copy for AI</span>
    </button>
  </div>
</div>


## OpenAPI

````yaml en/twitter.openapi.json GET /v1/twitter/usermedia
openapi: 3.0.1
info:
  title: Twitter/X API english documentation
  description: >-
    The english reference documentation of the Twitter/X API includes the
    interface's purpose, parameter description, response status, and sample
    structure.
  version: 1.0.0
servers:
  - url: https://api.keyapi.ai
    description: Twitter/X
security:
  - JWT Bearer: []
tags: []
paths:
  /v1/twitter/usermedia:
    get:
      tags: []
      summary: User's Media
      parameters:
        - name: screenname
          in: query
          description: ''
          required: true
          example: elonmusk
          schema:
            type: string
            example: elonmusk
        - name: rest_id
          in: query
          description: ''
          required: false
          example: ''
          schema:
            type: string
        - name: cursor
          in: query
          description: ''
          required: false
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties: {}
              example:
                code: 0
                message: success
                data:
                  timeline:
                    - tweet_id: '2053181971644416080'
                      bookmarks: 16532
                      created_at: Sat May 09 18:35:02 +0000 2026
                      favorites: 212590
                      text: >-
                        The human-perceived RGB is image 1 and the Tesla AI
                        photon count reconstruction is image 2. 


                        This is why Tesla FSD can see so well at night or
                        through extreme glare. https://t.co/ttBMzgpJtd
                      lang: en
                      source: >-
                        <a href="http://twitter.com/download/iphone"
                        rel="nofollow">Twitter for iPhone</a>
                      views: '39841529'
                      quotes: 1065
                      replies: 6196
                      retweets: 18438
                      conversation_id: '2053181971644416080'
                      media:
                        photo:
                          - media_url_https: https://pbs.twimg.com/media/HH5eH0kbYAE6TjX.jpg
                            id: '2053181968591052801'
                          - media_url_https: https://pbs.twimg.com/media/HH5eH0pbAAABYsv.jpg
                            id: '2053181968611999744'
                      author:
                        rest_id: '44196397'
                        name: Elon Musk
                        screen_name: elonmusk
                        avatar: null
                        blue_verified: true
                    - tweet_id: '2052890115421417647'
                      bookmarks: 596
                      created_at: Fri May 08 23:15:19 +0000 2026
                      favorites: 17550
                      text: https://t.co/CrThu6GaBY
                      lang: zxx
                      source: >-
                        <a href="http://twitter.com/download/iphone"
                        rel="nofollow">Twitter for iPhone</a>
                      reply_to: '2052864667836649722'
                      views: '1535717'
                      quotes: 218
                      replies: 1428
                      retweets: 2908
                      conversation_id: '2052864667836649722'
                      media:
                        photo:
                          - media_url_https: https://pbs.twimg.com/media/HH1Urh9bIAASNtb.jpg
                            id: '2052890111977922560'
                      author:
                        rest_id: '44196397'
                        name: Elon Musk
                        screen_name: elonmusk
                        avatar: null
                        blue_verified: true
                    - tweet_id: '2051189101043523709'
                      bookmarks: 4869
                      created_at: Mon May 04 06:36:05 +0000 2026
                      favorites: 74627
                      text: Rivers of Blood https://t.co/U34C9AVOEl
                      lang: en
                      source: >-
                        <a href="http://twitter.com/download/iphone"
                        rel="nofollow">Twitter for iPhone</a>
                      views: '18518976'
                      quotes: 531
                      replies: 3985
                      retweets: 9491
                      conversation_id: '2051189101043523709'
                      media:
                        photo:
                          - media_url_https: https://pbs.twimg.com/media/HHdJncwa4AAoqz4.jpg
                            id: '2051189097373556736'
                      author:
                        rest_id: '44196397'
                        name: Elon Musk
                        screen_name: elonmusk
                        avatar: null
                        blue_verified: true
                      quoted:
                        tweet_id: '2051058601553207610'
                        bookmarks: 523
                        created_at: Sun May 03 21:57:32 +0000 2026
                        favorites: 7292
                        text: >-
                          This parasitic idea stems from the anthropologists of
                          peace who preached the Noble Savage canard (as per
                          Jean-Jacques Rousseau).  @elonmusk is exactly right. 
                          History is paved with rivers of blood and conflict. 
                          Violence has shaped our phylogenetic history.
                        lang: en
                        views: '18481039'
                        quotes: 59
                        replies: 418
                        retweets: 674
                        conversation_id: '2051058601553207610'
                        author:
                          rest_id: '116579971'
                          name: Gad Saad
                          screen_name: GadSaad
                          avatar: null
                          blue_verified: true
                        media: []
                  next_cursor: DAABCgABHILeT3t___0KAAIcd0meptogfQgAAwAAAAIAAA
                  status: ok
                  user:
                    status: active
                    profile: null
                    rest_id: '44196397'
                    blue_verified: true
                    verification_type: null
                    affiliates:
                      label:
                        badge:
                          url: >-
                            https://pbs.twimg.com/profile_images/1955359038532653056/OSHY3ewP_bigger.jpg
                        description: X
                        url:
                          url: https://twitter.com/X
                          urlType: DeepLink
                        userLabelDisplayType: Badge
                        userLabelType: BusinessLabel
                    business_account: []
                    avatar: >-
                      https://pbs.twimg.com/profile_images/2053244804520427520/m8mdWZCG_normal.jpg
                    header_image: https://pbs.twimg.com/profile_banners/44196397/1774145451
                    desc: https://t.co/dDtDyVssfm
                    name: Elon Musk
                    protected: false
                    location: ''
                    friends: 1325
                    sub_count: 239955338
                    statuses_count: 102416
                    media_count: 4487
                    created_at: Tue Jun 02 20:12:29 +0000 2009
                    pinned_tweet_ids_str: null
                    id: '44196397'
                requestId: 313c0677-d321-4ad7-9031-61d776a1b2dd
          headers: {}
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                example:
                  code: 400
                  data: null
                  message: Missing required parameter
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                example:
                  code: 401
                  data: null
                  message: apiKey is null
        '402':
          description: Payment Required
          content:
            application/json:
              schema:
                type: object
                example:
                  code: 402
                  data: null
                  message: apiKey quota is not enough
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                type: object
                example:
                  code: 429
                  data: null
                  message: qps limit exceeded
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                example:
                  code: 500
                  data: null
                  message: Internal server error
      deprecated: false
      security:
        - JWT Bearer: []
      x-codeSamples:
        - lang: curl
          label: cURL
          source: |-
            curl --request GET \
              --url 'https://api.keyapi.ai/v1/twitter/usermedia?screenname=elonmusk&rest_id=' \
              --header 'Authorization: Bearer <YOUR_API_KEY>'
        - lang: python
          label: Python
          source: |-
            import requests

            response = requests.get(
                'https://api.keyapi.ai/v1/twitter/usermedia',
                params={"screenname": "elonmusk", "rest_id": ""},
                headers={'Authorization': 'Bearer <YOUR_API_KEY>'}
            )
            print(response.json())
        - lang: javascript
          label: JavaScript
          source: >-
            const params = new URLSearchParams({"screenname": "elonmusk",
            "rest_id": ""});


            const response = await
            fetch(`https://api.keyapi.ai/v1/twitter/usermedia?${params}`, {
              method: 'GET',
              headers: { 'Authorization': 'Bearer <YOUR_API_KEY>' }
            });

            const data = await response.json();

            console.log(data);
components:
  securitySchemes:
    JWT Bearer:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: |-
        API key for authentication. Format: `sk_live_xxxxxxxxxxxxx`
        Get your API key from the [Dashboard](http://keyapi.ai/app/dashboard).

````