Chilkat Online Tools

PureBasic / Twitter API v2 / Recent search

Back to Collection Items

IncludeFile "CkJsonObject.pb"
IncludeFile "CkStringBuilder.pb"
IncludeFile "CkHttp.pb"
IncludeFile "CkHttpResponse.pb"

Procedure ChilkatExample()

    ; This example assumes the Chilkat API to have been previously unlocked.
    ; See Global Unlock Sample for sample code.

    http.i = CkHttp::ckCreate()
    If http.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success.i

    queryParams.i = CkJsonObject::ckCreate()
    If queryParams.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::ckUpdateString(queryParams,"query","")

    ; Adds the "Authorization: Bearer <access_token>" header.
    CkHttp::setCkAuthToken(http, "<access_token>")

    resp.i = CkHttp::ckQuickRequestParams(http,"GET","https://api.twitter.com/2/tweets/search/recent",queryParams)
    If CkHttp::ckLastMethodSuccess(http) = 0
        Debug CkHttp::ckLastErrorText(http)
        CkHttp::ckDispose(http)
        CkJsonObject::ckDispose(queryParams)
        ProcedureReturn
    EndIf

    sbResponseBody.i = CkStringBuilder::ckCreate()
    If sbResponseBody.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkHttpResponse::ckGetBodySb(resp,sbResponseBody)

    jResp.i = CkJsonObject::ckCreate()
    If jResp.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::ckLoadSb(jResp,sbResponseBody)
    CkJsonObject::setCkEmitCompact(jResp, 0)

    Debug "Response Body:"
    Debug CkJsonObject::ckEmit(jResp)

    respStatusCode.i = CkHttpResponse::ckStatusCode(resp)
    Debug "Response Status Code = " + Str(respStatusCode)
    If respStatusCode >= 400
        Debug "Response Header:"
        Debug CkHttpResponse::ckHeader(resp)
        Debug "Failed."
        CkHttpResponse::ckDispose(resp)

        CkHttp::ckDispose(http)
        CkJsonObject::ckDispose(queryParams)
        CkStringBuilder::ckDispose(sbResponseBody)
        CkJsonObject::ckDispose(jResp)
        ProcedureReturn
    EndIf

    CkHttpResponse::ckDispose(resp)

    ; Sample JSON response:
    ; (Sample code for parsing the JSON response is shown below)

    ; {
    ;   "data": [
    ;     {
    ;       "author_id": "1176828691365736451",
    ;       "created_at": "2020-06-24T17:19:07.000Z",
    ;       "entities": {
    ;         "mentions": [
    ;           {
    ;             "start": 3,
    ;             "end": 14,
    ;             "username": "skipbolden"
    ;           }
    ;         ]
    ;       },
    ;       "id": "1275840892285399041",
    ;       "lang": "en",
    ;       "possibly_sensitive": false,
    ;       "referenced_tweets": [
    ;         {
    ;           "type": "retweeted",
    ;           "id": "1275809336988557314"
    ;         }
    ;       ],
    ;       "source": "Twitter Web App",
    ;       "text": "RT @skipbolden: It's 1963 in The Bronx, NYC. The magic, the music, the mystery of growing up.\nKen Wahl, Karen Allen and John Friedrich in,…"
    ;     },
    ;     {
    ;       "author_id": "13524182",
    ;       "created_at": "2020-06-24T17:19:07.000Z",
    ;       "entities": {
    ;         "hashtags": [
    ;           {
    ;             "start": 25,
    ;             "end": 30,
    ;             "tag": "NY12"
    ;           }
    ;         ]
    ;       },
    ;       "id": "1275840892281249793",
    ;       "in_reply_to_user_id": "13524182",
    ;       "lang": "en",
    ;       "possibly_sensitive": false,
    ;       "referenced_tweets": [
    ;         {
    ;           "type": "replied_to",
    ;           "id": "1275781448855891968"
    ;         }
    ;       ],
    ;       "source": "Twitter Web App",
    ;       "text": "If Suraj Patel wins when #NY12 absentees get counted, Jerry Nadler and Max Rose will be the only white guys representing any part of NYC in Congress."
    ;     },
    ;     {
    ;       "author_id": "15004848",
    ;       "created_at": "2020-06-24T17:19:07.000Z",
    ;       "id": "1275840891014561796",
    ;       "lang": "en",
    ;       "possibly_sensitive": false,
    ;       "source": "Twitter for iPhone",
    ;       "text": "Started offering online camps this week and initially devastated by the swap. Now find out we have kids with allergies (not a worry in this setting) & kids from MD, NYC, and Zambia! Very cool to see the positives & the kids cooking their hearts out!"
    ;     },
    ;     {
    ;       "author_id": "956719622232924160",
    ;       "created_at": "2020-06-24T17:19:06.000Z",
    ;       "entities": {
    ;         "mentions": [
    ;           {
    ;             "start": 3,
    ;             "end": 18,
    ;             "username": "SoniaChanel617"
    ;           },
    ;           {
    ;             "start": 20,
    ;             "end": 28,
    ;             "username": "cvpayne"
    ;           }
    ;         ]
    ;       },
    ;       "id": "1275840886774075396",
    ;       "lang": "en",
    ;       "possibly_sensitive": false,
    ;       "referenced_tweets": [
    ;         {
    ;           "type": "retweeted",
    ;           "id": "1275840174296125440"
    ;         }
    ;       ],
    ;       "source": "Twitter Web App",
    ;       "text": "RT @SoniaChanel617: @cvpayne So many people are moving out of NYC. It’s crazy."
    ;     },
    ;     {
    ;       "author_id": "1235426387957370880",
    ;       "created_at": "2020-06-24T17:19:05.000Z",
    ;       "entities": {
    ;         "mentions": [
    ;           {
    ;             "start": 3,
    ;             "end": 18,
    ;             "username": "DavidYankovich"
    ;           }
    ;         ]
    ;       },
    ;       "id": "1275840884769259523",
    ;       "lang": "en",
    ;       "possibly_sensitive": false,
    ;       "referenced_tweets": [
    ;         {
    ;           "type": "retweeted",
    ;           "id": "1275834637437276165"
    ;         }
    ;       ],
    ;       "source": "Twitter for iPhone",
    ;       "text": "RT @DavidYankovich: A man who admitted his own guilt twice is getting freed from prison while black folks who jump a turnstile in NYC subwa…"
    ;     },
    ;     {
    ;       "author_id": "3031898016",
    ;       "created_at": "2020-06-24T17:19:04.000Z",
    ;       "entities": {
    ;         "hashtags": [
    ;           {
    ;             "start": 0,
    ;             "end": 4,
    ;             "tag": "NYC"
    ;           },
    ;           {
    ;             "start": 20,
    ;             "end": 35,
    ;             "tag": "OccupyCityHall"
    ;           },
    ;           {
    ;             "start": 209,
    ;             "end": 217,
    ;             "tag": "protest"
    ;           },
    ;           {
    ;             "start": 218,
    ;             "end": 229,
    ;             "tag": "NycProtest"
    ;           },
    ;           {
    ;             "start": 230,
    ;             "end": 247,
    ;             "tag": "NoJusticeNoPeace"
    ;           },
    ;           {
    ;             "start": 248,
    ;             "end": 259,
    ;             "tag": "BLMprotest"
    ;           },
    ;           {
    ;             "start": 260,
    ;             "end": 277,
    ;             "tag": "blacklivesmatter"
    ;           }
    ;         ]
    ;       },
    ;       "id": "1275840878238552064",
    ;       "lang": "de",
    ;       "possibly_sensitive": false,
    ;       "source": "Twitter Web App",
    ;       "text": "#NYC protests 6/24\n\n#OccupyCityHall \n(City Hall)\nWash Sq (kids) 1\nCarl Schurz (vigil) 7\nJackie Robinson Pk (vigil) 730\n\nMcCarren vigil & march 7\nGAP 730\nNicholas Hayward Jr Park vigil 8\n\n277 W 231st St 1\n\n#protest #NycProtest #NoJusticeNoPeace #BLMprotest #blacklivesmatter"
    ;     },
    ;     {
    ;       "author_id": "939165988435607552",
    ;       "created_at": "2020-06-24T17:19:03.000Z",
    ;       "entities": {
    ;         "mentions": [
    ;           {
    ;             "start": 3,
    ;             "end": 16,
    ;             "username": "jonrappoport"
    ;           }
    ;         ]
    ;       },
    ;       "id": "1275840877651546113",
    ;       "lang": "en",
    ;       "possibly_sensitive": false,
    ;       "referenced_tweets": [
    ;         {
    ;           "type": "retweeted",
    ;           "id": "1275794225309921285"
    ;         }
    ;       ],
    ;       "source": "Twitter for Android",
    ;       "text": "RT @jonrappoport: Forget about coffee and doughnuts, Welcome back to the office! \n\nThat 'socially distant' elevator ride. Gives new meaning…"
    ;     },
    ;     {
    ;       "author_id": "110578919",
    ;       "created_at": "2020-06-24T17:19:03.000Z",
    ;       "entities": {
    ;         "mentions": [
    ;           {
    ;             "start": 3,
    ;             "end": 13,
    ;             "username": "zerohedge"
    ;           }
    ;         ],
    ;         "urls": [
    ;           {
    ;             "start": 68,
    ;             "end": 91,
    ;             "url": "https://t.co/wqV97PbtF9",
    ;             "expanded_url": "https://www.zerohedge.com/political/de-blasio-considers-laying-22000-nyc-employees",
    ;             "display_url": "zerohedge.com/political/de-b…",
    ;             "images": [
    ;               {
    ;                 "url": "https://pbs.twimg.com/news_img/1275839982771539968/xZNipbjm?format=jpg&name=orig",
    ;                 "width": 650,
    ;                 "height": 447
    ;               },
    ;               {
    ;                 "url": "https://pbs.twimg.com/news_img/1275839982771539968/xZNipbjm?format=jpg&name=150x150",
    ;                 "width": 150,
    ;                 "height": 150
    ;               }
    ;             ],
    ;             "status": 200,
    ;             "title": "De Blasio Considers Laying Off 22,000 NYC Employees ",
    ;             "description": "\"The city may have to lay off workers...\"",
    ;             "unwound_url": "https://www.zerohedge.com/political/de-blasio-considers-laying-22000-nyc-employees"
    ;           }
    ;         ]
    ;       },
    ;       "id": "1275840876997050369",
    ;       "lang": "en",
    ;       "possibly_sensitive": false,
    ;       "referenced_tweets": [
    ;         {
    ;           "type": "retweeted",
    ;           "id": "1275839979772665861"
    ;         }
    ;       ],
    ;       "source": "Twitter for iPhone",
    ;       "text": "RT @zerohedge: De Blasio Considers Laying Off 22,000 NYC Employees  https://t.co/wqV97PbtF9"
    ;     },
    ;     {
    ;       "author_id": "186075913",
    ;       "created_at": "2020-06-24T17:19:03.000Z",
    ;       "entities": {
    ;         "mentions": [
    ;           {
    ;             "start": 3,
    ;             "end": 15,
    ;             "username": "AmyJacobson"
    ;           },
    ;           {
    ;             "start": 67,
    ;             "end": 81,
    ;             "username": "LoriLightfoot"
    ;           }
    ;         ]
    ;       },
    ;       "id": "1275840876074369025",
    ;       "lang": "en",
    ;       "possibly_sensitive": false,
    ;       "referenced_tweets": [
    ;         {
    ;           "type": "retweeted",
    ;           "id": "1275760016402849792"
    ;         }
    ;       ],
    ;       "source": "Twitter for Android",
    ;       "text": "RT @AmyJacobson: I called it! NYC reopens beaches BEFORE Chicago. \u2066@LoriLightfoot\u2069 sunbathing allowed since Memorial Day and now they can S…"
    ;     },
    ;     {
    ;       "author_id": "4421576056",
    ;       "created_at": "2020-06-24T17:19:03.000Z",
    ;       "entities": {
    ;         "mentions": [
    ;           {
    ;             "start": 3,
    ;             "end": 19,
    ;             "username": "hirosemaryhello"
    ;           }
    ;         ]
    ;       },
    ;       "id": "1275840875466305542",
    ;       "lang": "en",
    ;       "possibly_sensitive": false,
    ;       "referenced_tweets": [
    ;         {
    ;           "type": "quoted",
    ;           "id": "1275622383555133440"
    ;         },
    ;         {
    ;           "type": "retweeted",
    ;           "id": "1275837188715020290"
    ;         }
    ;       ],
    ;       "source": "Twitter for Android",
    ;       "text": "RT @hirosemaryhello: NYC! can you help the protestors currently occupying City Hall to demand the defunding of the NYPD? they need supplies…"
    ;     }
    ;   ],
    ;   "meta": {
    ;     "newest_id": "1275840892285399041",
    ;     "oldest_id": "1275840875466305542",
    ;     "result_count": 10,
    ;     "next_token": "b26v89c19zqg8o3fo7gesq314zlbjb2xlwutmy72r47lp"
    ;   }
    ; }

    ; Sample code for parsing the JSON response...
    ; Use this online tool to generate parsing code from sample JSON: Generate JSON Parsing Code

    author_id.s
    created_at.s
    id.s
    lang.s
    possibly_sensitive.i
    source.s
    text.s
    in_reply_to_user_id.s
    j.i
    count_j.i
    start.i
    v_end.i
    username.s
    v_type.s
    tag.s
    url.s
    expanded_url.s
    display_url.s
    status.i
    title.s
    description.s
    unwound_url.s
    k.i
    count_k.i
    width.i
    height.i

    Newest_id.s = CkJsonObject::ckStringOf(jResp,"meta.newest_id")
    Oldest_id.s = CkJsonObject::ckStringOf(jResp,"meta.oldest_id")
    Result_count.i = CkJsonObject::ckIntOf(jResp,"meta.result_count")
    Next_token.s = CkJsonObject::ckStringOf(jResp,"meta.next_token")
    i.i = 0
    count_i.i = CkJsonObject::ckSizeOfArray(jResp,"data")
    While i < count_i
        CkJsonObject::setCkI(jResp, i)
        author_id = CkJsonObject::ckStringOf(jResp,"data[i].author_id")
        created_at = CkJsonObject::ckStringOf(jResp,"data[i].created_at")
        id = CkJsonObject::ckStringOf(jResp,"data[i].id")
        lang = CkJsonObject::ckStringOf(jResp,"data[i].lang")
        possibly_sensitive = CkJsonObject::ckBoolOf(jResp,"data[i].possibly_sensitive")
        source = CkJsonObject::ckStringOf(jResp,"data[i].source")
        text = CkJsonObject::ckStringOf(jResp,"data[i].text")
        in_reply_to_user_id = CkJsonObject::ckStringOf(jResp,"data[i].in_reply_to_user_id")
        j = 0
        count_j = CkJsonObject::ckSizeOfArray(jResp,"data[i].entities.mentions")
        While j < count_j
            CkJsonObject::setCkJ(jResp, j)
            start = CkJsonObject::ckIntOf(jResp,"data[i].entities.mentions[j].start")
            v_end = CkJsonObject::ckIntOf(jResp,"data[i].entities.mentions[j].end")
            username = CkJsonObject::ckStringOf(jResp,"data[i].entities.mentions[j].username")
            j = j + 1
        Wend
        j = 0
        count_j = CkJsonObject::ckSizeOfArray(jResp,"data[i].referenced_tweets")
        While j < count_j
            CkJsonObject::setCkJ(jResp, j)
            v_type = CkJsonObject::ckStringOf(jResp,"data[i].referenced_tweets[j].type")
            id = CkJsonObject::ckStringOf(jResp,"data[i].referenced_tweets[j].id")
            j = j + 1
        Wend
        j = 0
        count_j = CkJsonObject::ckSizeOfArray(jResp,"data[i].entities.hashtags")
        While j < count_j
            CkJsonObject::setCkJ(jResp, j)
            start = CkJsonObject::ckIntOf(jResp,"data[i].entities.hashtags[j].start")
            v_end = CkJsonObject::ckIntOf(jResp,"data[i].entities.hashtags[j].end")
            tag = CkJsonObject::ckStringOf(jResp,"data[i].entities.hashtags[j].tag")
            j = j + 1
        Wend
        j = 0
        count_j = CkJsonObject::ckSizeOfArray(jResp,"data[i].entities.urls")
        While j < count_j
            CkJsonObject::setCkJ(jResp, j)
            start = CkJsonObject::ckIntOf(jResp,"data[i].entities.urls[j].start")
            v_end = CkJsonObject::ckIntOf(jResp,"data[i].entities.urls[j].end")
            url = CkJsonObject::ckStringOf(jResp,"data[i].entities.urls[j].url")
            expanded_url = CkJsonObject::ckStringOf(jResp,"data[i].entities.urls[j].expanded_url")
            display_url = CkJsonObject::ckStringOf(jResp,"data[i].entities.urls[j].display_url")
            status = CkJsonObject::ckIntOf(jResp,"data[i].entities.urls[j].status")
            title = CkJsonObject::ckStringOf(jResp,"data[i].entities.urls[j].title")
            description = CkJsonObject::ckStringOf(jResp,"data[i].entities.urls[j].description")
            unwound_url = CkJsonObject::ckStringOf(jResp,"data[i].entities.urls[j].unwound_url")
            k = 0
            count_k = CkJsonObject::ckSizeOfArray(jResp,"data[i].entities.urls[j].images")
            While k < count_k
                CkJsonObject::setCkK(jResp, k)
                url = CkJsonObject::ckStringOf(jResp,"data[i].entities.urls[j].images[k].url")
                width = CkJsonObject::ckIntOf(jResp,"data[i].entities.urls[j].images[k].width")
                height = CkJsonObject::ckIntOf(jResp,"data[i].entities.urls[j].images[k].height")
                k = k + 1
            Wend
            j = j + 1
        Wend
        i = i + 1
    Wend


    CkHttp::ckDispose(http)
    CkJsonObject::ckDispose(queryParams)
    CkStringBuilder::ckDispose(sbResponseBody)
    CkJsonObject::ckDispose(jResp)


    ProcedureReturn
EndProcedure

Curl Command

curl -G -d "query="
	-H "Authorization: Bearer <access_token>"
https://api.twitter.com/2/tweets/search/recent

Postman Collection Item JSON

{
  "name": "Recent search",
  "request": {
    "method": "GET",
    "header": [
    ],
    "url": {
      "raw": "https://api.twitter.com/2/tweets/search/recent?query=",
      "protocol": "https",
      "host": [
        "api",
        "twitter",
        "com"
      ],
      "path": [
        "2",
        "tweets",
        "search",
        "recent"
      ],
      "query": [
        {
          "key": "query",
          "value": "",
          "description": "Required. Query for matching Tweets. Up to 512 characters."
        },
        {
          "key": "start_time",
          "value": "",
          "description": "The oldest UTC timestamp (from most recent 7 days) from which the Tweets will be provided. YYYY-MM-DDTHH:mm:ssZ (ISO 8601/RFC 3339).",
          "disabled": true
        },
        {
          "key": "end_time",
          "value": "",
          "description": "The newest, most recent UTC timestamp to which the Tweets will be provided. YYYY-MM-DDTHH:mm:ssZ (ISO 8601/RFC 3339).",
          "disabled": true
        },
        {
          "key": "since_id",
          "value": "",
          "description": "Returns results with a Tweet ID greater than (that is, more recent than) the specified ID. The ID specified is exclusive and responses will not include it.",
          "disabled": true
        },
        {
          "key": "until_id",
          "value": "",
          "description": "Returns results with a Tweet ID less than (that is, older than) the specified ID. The ID specified is exclusive and responses will not include it.",
          "disabled": true
        },
        {
          "key": "max_results",
          "value": "",
          "description": "The maximum number of search results to be returned by a request. A number between 10 and the system limit (currently 100). By default, a request response will return 10 results.",
          "disabled": true
        },
        {
          "key": "next_token",
          "value": "",
          "description": "This parameter is used to get the next 'page' of results. The value used with the parameter is pulled directly from the response provided by the API, and should not be modified.",
          "disabled": true
        },
        {
          "key": "tweet.fields",
          "value": "",
          "description": "Comma-separated list of fields for the Tweet object.\n\nAllowed values:\nattachments,author_id,context_annotations,conversation_id,created_at,entities,geo,id,in_reply_to_user_id,lang,non_public_metrics,organic_metrics,possibly_sensitive,promoted_metrics,public_metrics,referenced_tweets,reply_settings,source,text,withheld\n\nDefault values:\nid,text\n\nOAuth1.0a User Context authorization required if any of the following fields are included in the request:\nnon_public_metrics,organic_metrics,promoted_metrics",
          "disabled": true
        },
        {
          "key": "expansions",
          "value": "",
          "description": "Comma-separated list of fields to expand. Expansions enable requests to expand an ID into a full object in the includes response object.\n\nAllowed values: attachments.poll_ids,attachments.media_keys,author_id,geo.place_id,in_reply_to_user_id,referenced_tweets.id,entities.mentions.username,referenced_tweets.id.author_id\n\nDefault values: none",
          "disabled": true
        },
        {
          "key": "media.fields",
          "value": "",
          "description": "Comma-separated list of fields for the media object. Expansion required.\n\nAllowed values:\nduration_ms,height,media_key,non_public_metrics,organic_metrics,preview_image_url,promoted_metrics,public_metrics,type,url,width\n\nDefault values:\nmedia_key,type\n\nOAuth1.0a User Context authorization required if any of the following fields are included in the request:\nnon_public_metrics,organic_metrics,promoted_metrics",
          "disabled": true
        },
        {
          "key": "place.fields",
          "value": "",
          "description": "Comma-separated list of fields for the place object. Expansion required.\n\nAllowed values:\ncontained_within,country,country_code,full_name,geo,id,name,place_type\n\nDefault values:\nid,full_name",
          "disabled": true
        },
        {
          "key": "poll.fields",
          "value": "",
          "description": "Comma-separated list of fields for the poll object. Expansion required.\n\nAllowed values:\nduration_minutes,end_datetime,id,options,voting_status\n\nDefault values:\nid, options",
          "disabled": true
        },
        {
          "key": "user.fields",
          "value": "",
          "description": "Comma-separated list of fields for the user object. Expansion required.\n\nAllowed values:\ncreated_at,description,entities,id,location,name,pinned_tweet_id,profile_image_url,protected,public_metrics,url,username,verified,withheld\n\nDefault values:\nid,name,username",
          "disabled": true
        }
      ]
    },
    "description": "Search for public Tweets created in the last 7 days.\n\nFor full details, see the [API reference](https://developer.twitter.com/en/docs/twitter-api/tweets/search/api-reference/get-tweets-search-recent) for this endpoint.\n\n[Sign up](https://t.co/signup) for the Twitter API"
  },
  "response": [
    {
      "name": "200 Success - Request Tweet Fields",
      "originalRequest": {
        "method": "GET",
        "header": [
        ],
        "url": {
          "raw": "https://api.twitter.com/2/tweets/search/recent?query=nyc&tweet.fields=author_id,created_at,entities,geo,in_reply_to_user_id,lang,possibly_sensitive,referenced_tweets,source",
          "protocol": "https",
          "host": [
            "api",
            "twitter",
            "com"
          ],
          "path": [
            "2",
            "tweets",
            "search",
            "recent"
          ],
          "query": [
            {
              "key": "query",
              "value": "nyc"
            },
            {
              "key": "tweet.fields",
              "value": "author_id,created_at,entities,geo,in_reply_to_user_id,lang,possibly_sensitive,referenced_tweets,source",
              "description": "attachments,author_id,context_annotations,created_at,entities,geo,id,in_reply_to_user_id,lang,non_public_metrics,organic_metrics,possibly_sensitive,promoted_metrics,public_metrics,referenced_tweets,source,text,withheld"
            }
          ]
        }
      },
      "status": "OK",
      "code": 200,
      "_postman_previewlanguage": "json",
      "header": [
        {
          "key": "content-disposition",
          "value": "attachment; filename=json.json"
        },
        {
          "key": "content-encoding",
          "value": "gzip"
        },
        {
          "key": "content-length",
          "value": "2169"
        },
        {
          "key": "content-type",
          "value": "application/json; charset=utf-8"
        },
        {
          "key": "date",
          "value": "Wed, 24 Jun 2020 17:19:38 GMT"
        },
        {
          "key": "server",
          "value": "tsa_b"
        },
        {
          "key": "strict-transport-security",
          "value": "max-age=631138519"
        },
        {
          "key": "x-access-level",
          "value": "read"
        },
        {
          "key": "x-connection-hash",
          "value": "86a90a7aa13fde1840d52be0d1faf5c4"
        },
        {
          "key": "x-content-type-options",
          "value": "nosniff"
        },
        {
          "key": "x-frame-options",
          "value": "SAMEORIGIN"
        },
        {
          "key": "x-rate-limit-limit",
          "value": "1800"
        },
        {
          "key": "x-rate-limit-remaining",
          "value": "1795"
        },
        {
          "key": "x-rate-limit-reset",
          "value": "1593019916"
        },
        {
          "key": "x-response-time",
          "value": "227"
        },
        {
          "key": "x-xss-protection",
          "value": "0"
        }
      ],
      "cookie": [
      ],
      "body": "{\n    \"data\": [\n        {\n            \"author_id\": \"1176828691365736451\",\n            \"created_at\": \"2020-06-24T17:19:07.000Z\",\n            \"entities\": {\n                \"mentions\": [\n                    {\n                        \"start\": 3,\n                        \"end\": 14,\n                        \"username\": \"skipbolden\"\n                    }\n                ]\n            },\n            \"id\": \"1275840892285399041\",\n            \"lang\": \"en\",\n            \"possibly_sensitive\": false,\n            \"referenced_tweets\": [\n                {\n                    \"type\": \"retweeted\",\n                    \"id\": \"1275809336988557314\"\n                }\n            ],\n            \"source\": \"Twitter Web App\",\n            \"text\": \"RT @skipbolden: It's 1963 in The Bronx, NYC. The magic, the music, the mystery of growing up.\\nKen Wahl, Karen Allen and John Friedrich in,…\"\n        },\n        {\n            \"author_id\": \"13524182\",\n            \"created_at\": \"2020-06-24T17:19:07.000Z\",\n            \"entities\": {\n                \"hashtags\": [\n                    {\n                        \"start\": 25,\n                        \"end\": 30,\n                        \"tag\": \"NY12\"\n                    }\n                ]\n            },\n            \"id\": \"1275840892281249793\",\n            \"in_reply_to_user_id\": \"13524182\",\n            \"lang\": \"en\",\n            \"possibly_sensitive\": false,\n            \"referenced_tweets\": [\n                {\n                    \"type\": \"replied_to\",\n                    \"id\": \"1275781448855891968\"\n                }\n            ],\n            \"source\": \"Twitter Web App\",\n            \"text\": \"If Suraj Patel wins when #NY12 absentees get counted, Jerry Nadler and Max Rose will be the only white guys representing any part of NYC in Congress.\"\n        },\n        {\n            \"author_id\": \"15004848\",\n            \"created_at\": \"2020-06-24T17:19:07.000Z\",\n            \"id\": \"1275840891014561796\",\n            \"lang\": \"en\",\n            \"possibly_sensitive\": false,\n            \"source\": \"Twitter for iPhone\",\n            \"text\": \"Started offering online camps this week and initially devastated by the swap. Now find out we have kids with allergies (not a worry in this setting) &amp; kids from MD, NYC, and Zambia! Very cool to see the positives &amp; the kids cooking their hearts out!\"\n        },\n        {\n            \"author_id\": \"956719622232924160\",\n            \"created_at\": \"2020-06-24T17:19:06.000Z\",\n            \"entities\": {\n                \"mentions\": [\n                    {\n                        \"start\": 3,\n                        \"end\": 18,\n                        \"username\": \"SoniaChanel617\"\n                    },\n                    {\n                        \"start\": 20,\n                        \"end\": 28,\n                        \"username\": \"cvpayne\"\n                    }\n                ]\n            },\n            \"id\": \"1275840886774075396\",\n            \"lang\": \"en\",\n            \"possibly_sensitive\": false,\n            \"referenced_tweets\": [\n                {\n                    \"type\": \"retweeted\",\n                    \"id\": \"1275840174296125440\"\n                }\n            ],\n            \"source\": \"Twitter Web App\",\n            \"text\": \"RT @SoniaChanel617: @cvpayne So many people are moving out of NYC. It’s crazy.\"\n        },\n        {\n            \"author_id\": \"1235426387957370880\",\n            \"created_at\": \"2020-06-24T17:19:05.000Z\",\n            \"entities\": {\n                \"mentions\": [\n                    {\n                        \"start\": 3,\n                        \"end\": 18,\n                        \"username\": \"DavidYankovich\"\n                    }\n                ]\n            },\n            \"id\": \"1275840884769259523\",\n            \"lang\": \"en\",\n            \"possibly_sensitive\": false,\n            \"referenced_tweets\": [\n                {\n                    \"type\": \"retweeted\",\n                    \"id\": \"1275834637437276165\"\n                }\n            ],\n            \"source\": \"Twitter for iPhone\",\n            \"text\": \"RT @DavidYankovich: A man who admitted his own guilt twice is getting freed from prison while black folks who jump a turnstile in NYC subwa…\"\n        },\n        {\n            \"author_id\": \"3031898016\",\n            \"created_at\": \"2020-06-24T17:19:04.000Z\",\n            \"entities\": {\n                \"hashtags\": [\n                    {\n                        \"start\": 0,\n                        \"end\": 4,\n                        \"tag\": \"NYC\"\n                    },\n                    {\n                        \"start\": 20,\n                        \"end\": 35,\n                        \"tag\": \"OccupyCityHall\"\n                    },\n                    {\n                        \"start\": 209,\n                        \"end\": 217,\n                        \"tag\": \"protest\"\n                    },\n                    {\n                        \"start\": 218,\n                        \"end\": 229,\n                        \"tag\": \"NycProtest\"\n                    },\n                    {\n                        \"start\": 230,\n                        \"end\": 247,\n                        \"tag\": \"NoJusticeNoPeace\"\n                    },\n                    {\n                        \"start\": 248,\n                        \"end\": 259,\n                        \"tag\": \"BLMprotest\"\n                    },\n                    {\n                        \"start\": 260,\n                        \"end\": 277,\n                        \"tag\": \"blacklivesmatter\"\n                    }\n                ]\n            },\n            \"id\": \"1275840878238552064\",\n            \"lang\": \"de\",\n            \"possibly_sensitive\": false,\n            \"source\": \"Twitter Web App\",\n            \"text\": \"#NYC protests 6/24\\n\\n#OccupyCityHall \\n(City Hall)\\nWash Sq (kids) 1\\nCarl Schurz (vigil) 7\\nJackie Robinson Pk (vigil) 730\\n\\nMcCarren vigil &amp; march 7\\nGAP 730\\nNicholas Hayward Jr Park vigil 8\\n\\n277 W 231st St 1\\n\\n#protest #NycProtest #NoJusticeNoPeace #BLMprotest #blacklivesmatter\"\n        },\n        {\n            \"author_id\": \"939165988435607552\",\n            \"created_at\": \"2020-06-24T17:19:03.000Z\",\n            \"entities\": {\n                \"mentions\": [\n                    {\n                        \"start\": 3,\n                        \"end\": 16,\n                        \"username\": \"jonrappoport\"\n                    }\n                ]\n            },\n            \"id\": \"1275840877651546113\",\n            \"lang\": \"en\",\n            \"possibly_sensitive\": false,\n            \"referenced_tweets\": [\n                {\n                    \"type\": \"retweeted\",\n                    \"id\": \"1275794225309921285\"\n                }\n            ],\n            \"source\": \"Twitter for Android\",\n            \"text\": \"RT @jonrappoport: Forget about coffee and doughnuts, Welcome back to the office! \\n\\nThat 'socially distant' elevator ride. Gives new meaning…\"\n        },\n        {\n            \"author_id\": \"110578919\",\n            \"created_at\": \"2020-06-24T17:19:03.000Z\",\n            \"entities\": {\n                \"mentions\": [\n                    {\n                        \"start\": 3,\n                        \"end\": 13,\n                        \"username\": \"zerohedge\"\n                    }\n                ],\n                \"urls\": [\n                    {\n                        \"start\": 68,\n                        \"end\": 91,\n                        \"url\": \"https://t.co/wqV97PbtF9\",\n                        \"expanded_url\": \"https://www.zerohedge.com/political/de-blasio-considers-laying-22000-nyc-employees\",\n                        \"display_url\": \"zerohedge.com/political/de-b…\",\n                        \"images\": [\n                            {\n                                \"url\": \"https://pbs.twimg.com/news_img/1275839982771539968/xZNipbjm?format=jpg&name=orig\",\n                                \"width\": 650,\n                                \"height\": 447\n                            },\n                            {\n                                \"url\": \"https://pbs.twimg.com/news_img/1275839982771539968/xZNipbjm?format=jpg&name=150x150\",\n                                \"width\": 150,\n                                \"height\": 150\n                            }\n                        ],\n                        \"status\": 200,\n                        \"title\": \"De Blasio Considers Laying Off 22,000 NYC Employees \",\n                        \"description\": \"\\\"The city may have to lay off workers...\\\"\",\n                        \"unwound_url\": \"https://www.zerohedge.com/political/de-blasio-considers-laying-22000-nyc-employees\"\n                    }\n                ]\n            },\n            \"id\": \"1275840876997050369\",\n            \"lang\": \"en\",\n            \"possibly_sensitive\": false,\n            \"referenced_tweets\": [\n                {\n                    \"type\": \"retweeted\",\n                    \"id\": \"1275839979772665861\"\n                }\n            ],\n            \"source\": \"Twitter for iPhone\",\n            \"text\": \"RT @zerohedge: De Blasio Considers Laying Off 22,000 NYC Employees  https://t.co/wqV97PbtF9\"\n        },\n        {\n            \"author_id\": \"186075913\",\n            \"created_at\": \"2020-06-24T17:19:03.000Z\",\n            \"entities\": {\n                \"mentions\": [\n                    {\n                        \"start\": 3,\n                        \"end\": 15,\n                        \"username\": \"AmyJacobson\"\n                    },\n                    {\n                        \"start\": 67,\n                        \"end\": 81,\n                        \"username\": \"LoriLightfoot\"\n                    }\n                ]\n            },\n            \"id\": \"1275840876074369025\",\n            \"lang\": \"en\",\n            \"possibly_sensitive\": false,\n            \"referenced_tweets\": [\n                {\n                    \"type\": \"retweeted\",\n                    \"id\": \"1275760016402849792\"\n                }\n            ],\n            \"source\": \"Twitter for Android\",\n            \"text\": \"RT @AmyJacobson: I called it! NYC reopens beaches BEFORE Chicago. \\u2066@LoriLightfoot\\u2069 sunbathing allowed since Memorial Day and now they can S…\"\n        },\n        {\n            \"author_id\": \"4421576056\",\n            \"created_at\": \"2020-06-24T17:19:03.000Z\",\n            \"entities\": {\n                \"mentions\": [\n                    {\n                        \"start\": 3,\n                        \"end\": 19,\n                        \"username\": \"hirosemaryhello\"\n                    }\n                ]\n            },\n            \"id\": \"1275840875466305542\",\n            \"lang\": \"en\",\n            \"possibly_sensitive\": false,\n            \"referenced_tweets\": [\n                {\n                    \"type\": \"quoted\",\n                    \"id\": \"1275622383555133440\"\n                },\n                {\n                    \"type\": \"retweeted\",\n                    \"id\": \"1275837188715020290\"\n                }\n            ],\n            \"source\": \"Twitter for Android\",\n            \"text\": \"RT @hirosemaryhello: NYC! can you help the protestors currently occupying City Hall to demand the defunding of the NYPD? they need supplies…\"\n        }\n    ],\n    \"meta\": {\n        \"newest_id\": \"1275840892285399041\",\n        \"oldest_id\": \"1275840875466305542\",\n        \"result_count\": 10,\n        \"next_token\": \"b26v89c19zqg8o3fo7gesq314zlbjb2xlwutmy72r47lp\"\n    }\n}"
    },
    {
      "name": "200 Success - Request Expanded Media Fields",
      "originalRequest": {
        "method": "GET",
        "header": [
        ],
        "url": {
          "raw": "https://api.twitter.com/2/tweets/search/recent?query=has:media puppies&tweet.fields=attachments,created_at,entities&expansions=attachments.media_keys&media.fields=duration_ms,height,media_key,preview_image_url,public_metrics,type,url,width",
          "protocol": "https",
          "host": [
            "api",
            "twitter",
            "com"
          ],
          "path": [
            "2",
            "tweets",
            "search",
            "recent"
          ],
          "query": [
            {
              "key": "query",
              "value": "has:media puppies",
              "description": "Required. Query for matching Tweets. Up to 512 characters."
            },
            {
              "key": "start_time",
              "value": "",
              "description": "The oldest UTC timestamp (from most recent 7 days) from which the Tweets will be provided. YYYY-MM-DDTHH:mm:ssZ.",
              "disabled": true
            },
            {
              "key": "end_time",
              "value": "",
              "description": "The newest, most recent UTC timestamp to which the Tweets will be provided. YYYY-MM-DDTHH:mm:ssZ (ISO 8601/RFC 3339).",
              "disabled": true
            },
            {
              "key": "since_id",
              "value": "",
              "description": "Returns results with a Tweet ID greater than (that is, more recent than) the specified ID. The ID specified is exclusive and responses will not include it.",
              "disabled": true
            },
            {
              "key": "until_id",
              "value": "",
              "description": "Returns results with a Tweet ID less than (that is, older than) the specified ID. The ID specified is exclusive and responses will not include it.",
              "disabled": true
            },
            {
              "key": "max_results",
              "value": "",
              "description": "The maximum number of search results to be returned by a request. A number between 10 and the system limit (currently 100). By default, a request response will return 10 results.",
              "disabled": true
            },
            {
              "key": "next_token",
              "value": "",
              "description": "This parameter is used to get the next 'page' of results. The value used with the parameter is pulled directly from the response provided by the API, and should not be modified.",
              "disabled": true
            },
            {
              "key": "tweet.fields",
              "value": "attachments,created_at,entities",
              "description": "attachments,author_id,context_annotations,created_at,entities,geo,id,in_reply_to_user_id,lang,non_public_metrics,organic_metrics,possibly_sensitive,promoted_metrics,public_metrics,referenced_tweets,source,text,withheld"
            },
            {
              "key": "expansions",
              "value": "attachments.media_keys",
              "description": "Comma-separated list of fields to expand. Expansions enable requests to expand an ID into a full object in the includes response object.\nAllowed values: attachments.poll_ids,attachments.media_keys,author_id,geo.place_id,in_reply_to_user_id,referenced_tweets.id\nDefault values: none"
            },
            {
              "key": "media.fields",
              "value": "duration_ms,height,media_key,preview_image_url,public_metrics,type,url,width",
              "description": "duration_ms,height,media_key,non_public_metrics,organic_metrics,preview_image_url,promoted_metrics,public_metrics,type,url,width"
            },
            {
              "key": "place.fields",
              "value": "",
              "description": "contained_within,country,country_code,full_name,geo,id,name,place_type",
              "disabled": true
            },
            {
              "key": "poll.fields",
              "value": "",
              "description": "duration_minutes,end_datetime,id,options,voting_status",
              "disabled": true
            },
            {
              "key": "user.fields",
              "value": "",
              "description": "created_at,description,entities,id,location,name,pinned_tweet_id,profile_image_url,protected,public_metrics,url,username,verified,withheld",
              "disabled": true
            }
          ]
        }
      },
      "status": "OK",
      "code": 200,
      "_postman_previewlanguage": "json",
      "header": [
        {
          "key": "content-disposition",
          "value": "attachment; filename=json.json"
        },
        {
          "key": "content-encoding",
          "value": "gzip"
        },
        {
          "key": "content-length",
          "value": "1664"
        },
        {
          "key": "content-type",
          "value": "application/json; charset=utf-8"
        },
        {
          "key": "date",
          "value": "Tue, 30 Jun 2020 17:39:44 GMT"
        },
        {
          "key": "server",
          "value": "tsa_b"
        },
        {
          "key": "strict-transport-security",
          "value": "max-age=631138519"
        },
        {
          "key": "x-access-level",
          "value": "read"
        },
        {
          "key": "x-connection-hash",
          "value": "857207159289071cdd445778e071a674"
        },
        {
          "key": "x-content-type-options",
          "value": "nosniff"
        },
        {
          "key": "x-frame-options",
          "value": "SAMEORIGIN"
        },
        {
          "key": "x-rate-limit-limit",
          "value": "1800"
        },
        {
          "key": "x-rate-limit-remaining",
          "value": "1791"
        },
        {
          "key": "x-rate-limit-reset",
          "value": "1593539398"
        },
        {
          "key": "x-response-time",
          "value": "339"
        },
        {
          "key": "x-xss-protection",
          "value": "0"
        }
      ],
      "cookie": [
      ],
      "body": "{\n    \"data\": [\n        {\n            \"attachments\": {\n                \"media_keys\": [\n                    \"3_1277604962361462785\"\n                ]\n            },\n            \"created_at\": \"2020-06-30T17:39:06.000Z\",\n            \"entities\": {\n                \"hashtags\": [\n                    {\n                        \"start\": 55,\n                        \"end\": 61,\n                        \"tag\": \"TLOU2\"\n                    },\n                    {\n                        \"start\": 62,\n                        \"end\": 79,\n                        \"tag\": \"TheLastofUsPart2\"\n                    }\n                ],\n                \"mentions\": [\n                    {\n                        \"start\": 3,\n                        \"end\": 18,\n                        \"username\": \"CritterOfHabit\"\n                    }\n                ],\n                \"urls\": [\n                    {\n                        \"start\": 80,\n                        \"end\": 103,\n                        \"url\": \"https://t.co/IZjikKfxUW\",\n                        \"expanded_url\": \"https://twitter.com/CritterOfHabit/status/1277606174284632065/photo/1\",\n                        \"display_url\": \"pic.twitter.com/IZjikKfxUW\"\n                    }\n                ]\n            },\n            \"id\": \"1278020251041570816\",\n            \"text\": \"RT @CritterOfHabit: \\\"Puppies aren't so scary, I guess\\\"\\n#TLOU2 #TheLastofUsPart2 https://t.co/IZjikKfxUW\"\n        },\n        {\n            \"created_at\": \"2020-06-30T17:38:42.000Z\",\n            \"entities\": {\n                \"mentions\": [\n                    {\n                        \"start\": 3,\n                        \"end\": 14,\n                        \"username\": \"turner0027\"\n                    }\n                ]\n            },\n            \"id\": \"1278020146485919745\",\n            \"text\": \"RT @turner0027: GSP puppies for sale they are only 3 weeks but if you know or hear of anyone wanting them they will be ready to go in 3 wee…\"\n        },\n        {\n            \"attachments\": {\n                \"media_keys\": [\n                    \"3_1278014675309998082\",\n                    \"3_1278014683598008321\"\n                ]\n            },\n            \"created_at\": \"2020-06-30T17:38:24.000Z\",\n            \"entities\": {\n                \"mentions\": [\n                    {\n                        \"start\": 3,\n                        \"end\": 11,\n                        \"username\": \"seongem\"\n                    }\n                ],\n                \"urls\": [\n                    {\n                        \"start\": 63,\n                        \"end\": 86,\n                        \"url\": \"https://t.co/yaHUsQUshX\",\n                        \"expanded_url\": \"https://twitter.com/seongem/status/1278014689193140224/photo/1\",\n                        \"display_url\": \"pic.twitter.com/yaHUsQUshX\"\n                    },\n                    {\n                        \"start\": 63,\n                        \"end\": 86,\n                        \"url\": \"https://t.co/yaHUsQUshX\",\n                        \"expanded_url\": \"https://twitter.com/seongem/status/1278014689193140224/photo/1\",\n                        \"display_url\": \"pic.twitter.com/yaHUsQUshX\"\n                    }\n                ]\n            },\n            \"id\": \"1278020073261797378\",\n            \"text\": \"RT @seongem: ⩩ taeyong as puppies ¦ a short and funny thread ♡ https://t.co/yaHUsQUshX\"\n        },\n        {\n            \"attachments\": {\n                \"media_keys\": [\n                    \"7_1277795251919429636\"\n                ]\n            },\n            \"created_at\": \"2020-06-30T17:38:23.000Z\",\n            \"entities\": {\n                \"mentions\": [\n                    {\n                        \"start\": 3,\n                        \"end\": 16,\n                        \"username\": \"DannyDeraney\"\n                    }\n                ],\n                \"urls\": [\n                    {\n                        \"start\": 80,\n                        \"end\": 103,\n                        \"url\": \"https://t.co/jDV0jebQTH\",\n                        \"expanded_url\": \"https://twitter.com/animalIife/status/1277795285801066506/video/1\",\n                        \"display_url\": \"pic.twitter.com/jDV0jebQTH\"\n                    }\n                ]\n            },\n            \"id\": \"1278020070640410626\",\n            \"text\": \"RT @DannyDeraney: Because you want to see three puppies swinging in a hammock.  https://t.co/jDV0jebQTH\"\n        },\n        {\n            \"attachments\": {\n                \"media_keys\": [\n                    \"3_1277604962361462785\"\n                ]\n            },\n            \"created_at\": \"2020-06-30T17:38:20.000Z\",\n            \"entities\": {\n                \"hashtags\": [\n                    {\n                        \"start\": 55,\n                        \"end\": 61,\n                        \"tag\": \"TLOU2\"\n                    },\n                    {\n                        \"start\": 62,\n                        \"end\": 79,\n                        \"tag\": \"TheLastofUsPart2\"\n                    }\n                ],\n                \"mentions\": [\n                    {\n                        \"start\": 3,\n                        \"end\": 18,\n                        \"username\": \"CritterOfHabit\"\n                    }\n                ],\n                \"urls\": [\n                    {\n                        \"start\": 80,\n                        \"end\": 103,\n                        \"url\": \"https://t.co/IZjikKfxUW\",\n                        \"expanded_url\": \"https://twitter.com/CritterOfHabit/status/1277606174284632065/photo/1\",\n                        \"display_url\": \"pic.twitter.com/IZjikKfxUW\"\n                    }\n                ]\n            },\n            \"id\": \"1278020054811017216\",\n            \"text\": \"RT @CritterOfHabit: \\\"Puppies aren't so scary, I guess\\\"\\n#TLOU2 #TheLastofUsPart2 https://t.co/IZjikKfxUW\"\n        },\n        {\n            \"created_at\": \"2020-06-30T17:38:07.000Z\",\n            \"entities\": {\n                \"mentions\": [\n                    {\n                        \"start\": 3,\n                        \"end\": 9,\n                        \"username\": \"PSPCA\"\n                    }\n                ]\n            },\n            \"id\": \"1278020001467858944\",\n            \"text\": \"RT @PSPCA: Ensuring your puppies are up to date on their vaccines is important - even during a pandemic! Molly, a 3-month-old Rottweiler, v…\"\n        },\n        {\n            \"attachments\": {\n                \"media_keys\": [\n                    \"13_1278005508213927938\"\n                ]\n            },\n            \"created_at\": \"2020-06-30T17:38:03.000Z\",\n            \"entities\": {\n                \"mentions\": [\n                    {\n                        \"start\": 3,\n                        \"end\": 13,\n                        \"username\": \"OregonZoo\"\n                    }\n                ],\n                \"urls\": [\n                    {\n                        \"start\": 27,\n                        \"end\": 50,\n                        \"url\": \"https://t.co/P6VP5CmD6p\",\n                        \"expanded_url\": \"https://twitter.com/OregonZoo/status/1278006421297090560/video/1\",\n                        \"display_url\": \"pic.twitter.com/P6VP5CmD6p\"\n                    }\n                ]\n            },\n            \"id\": \"1278019985017679872\",\n            \"text\": \"RT @OregonZoo: Mud puppies https://t.co/P6VP5CmD6p\"\n        },\n        {\n            \"created_at\": \"2020-06-30T17:38:02.000Z\",\n            \"entities\": {\n                \"hashtags\": [\n                    {\n                        \"start\": 67,\n                        \"end\": 73,\n                        \"tag\": \"ISPCA\"\n                    }\n                ],\n                \"mentions\": [\n                    {\n                        \"start\": 3,\n                        \"end\": 10,\n                        \"username\": \"ISPCA1\"\n                    }\n                ]\n            },\n            \"id\": \"1278019980659961856\",\n            \"text\": \"RT @ISPCA1: 6 abandoned puppies found a box on disused land now in #ISPCA care. The collie/lurcher type pups, thought to be from different…\"\n        },\n        {\n            \"attachments\": {\n                \"media_keys\": [\n                    \"13_1278005508213927938\"\n                ]\n            },\n            \"created_at\": \"2020-06-30T17:37:34.000Z\",\n            \"entities\": {\n                \"mentions\": [\n                    {\n                        \"start\": 3,\n                        \"end\": 13,\n                        \"username\": \"OregonZoo\"\n                    }\n                ],\n                \"urls\": [\n                    {\n                        \"start\": 27,\n                        \"end\": 50,\n                        \"url\": \"https://t.co/P6VP5CmD6p\",\n                        \"expanded_url\": \"https://twitter.com/OregonZoo/status/1278006421297090560/video/1\",\n                        \"display_url\": \"pic.twitter.com/P6VP5CmD6p\"\n                    }\n                ]\n            },\n            \"id\": \"1278019863135449088\",\n            \"text\": \"RT @OregonZoo: Mud puppies https://t.co/P6VP5CmD6p\"\n        },\n        {\n            \"created_at\": \"2020-06-30T17:37:12.000Z\",\n            \"entities\": {\n                \"mentions\": [\n                    {\n                        \"start\": 3,\n                        \"end\": 16,\n                        \"username\": \"chance_group\"\n                    }\n                ]\n            },\n            \"id\": \"1278019772777668609\",\n            \"text\": \"RT @chance_group: Today we thank those who give us their support🙏, last night we received bags of food for our puppies🐶🐕, we almost had no…\"\n        }\n    ],\n    \"includes\": {\n        \"media\": [\n            {\n                \"height\": 812,\n                \"media_key\": \"3_1277604962361462785\",\n                \"type\": \"photo\",\n                \"url\": \"https://pbs.twimg.com/media/Ebr28bjU0AEasL0.jpg\",\n                \"width\": 1445\n            },\n            {\n                \"height\": 1080,\n                \"media_key\": \"3_1278014675309998082\",\n                \"type\": \"photo\",\n                \"url\": \"https://pbs.twimg.com/media/Ebxrk3OWsAINP6Y.jpg\",\n                \"width\": 1080\n            },\n            {\n                \"height\": 736,\n                \"media_key\": \"3_1278014683598008321\",\n                \"type\": \"photo\",\n                \"url\": \"https://pbs.twimg.com/media/EbxrlWGXsAELIRz.jpg\",\n                \"width\": 736\n            },\n            {\n                \"duration_ms\": 15034,\n                \"height\": 720,\n                \"media_key\": \"7_1277795251919429636\",\n                \"preview_image_url\": \"https://pbs.twimg.com/ext_tw_video_thumb/1277795251919429636/pu/img/QzdDVtEyX6NNqA_5.jpg\",\n                \"public_metrics\": {\n                    \"view_count\": 52717\n                },\n                \"type\": \"video\",\n                \"width\": 406\n            },\n            {\n                \"duration_ms\": 49533,\n                \"height\": 720,\n                \"media_key\": \"13_1278005508213927938\",\n                \"preview_image_url\": \"https://pbs.twimg.com/media/EbxkA_dU0AAvzTt.jpg\",\n                \"public_metrics\": {\n                    \"view_count\": 4662\n                },\n                \"type\": \"video\",\n                \"width\": 720\n            }\n        ]\n    },\n    \"meta\": {\n        \"newest_id\": \"1278020251041570816\",\n        \"oldest_id\": \"1278019772777668609\",\n        \"result_count\": 10,\n        \"next_token\": \"b26v89c19zqg8o3fo7gg1pu5pv61lxgru17onnv29q4cd\"\n    }\n}"
    },
    {
      "name": "200 Success - Recent Search (Default Payload)",
      "originalRequest": {
        "method": "GET",
        "header": [
        ],
        "url": {
          "raw": "https://api.twitter.com/2/tweets/search/recent?query=nyc",
          "protocol": "https",
          "host": [
            "api",
            "twitter",
            "com"
          ],
          "path": [
            "2",
            "tweets",
            "search",
            "recent"
          ],
          "query": [
            {
              "key": "query",
              "value": "nyc"
            }
          ]
        }
      },
      "status": "OK",
      "code": 200,
      "_postman_previewlanguage": "json",
      "header": [
        {
          "key": "content-disposition",
          "value": "attachment; filename=json.json"
        },
        {
          "key": "content-encoding",
          "value": "gzip"
        },
        {
          "key": "content-length",
          "value": "1261"
        },
        {
          "key": "content-type",
          "value": "application/json; charset=utf-8"
        },
        {
          "key": "date",
          "value": "Wed, 24 Jun 2020 17:17:03 GMT"
        },
        {
          "key": "server",
          "value": "tsa_b"
        },
        {
          "key": "strict-transport-security",
          "value": "max-age=631138519"
        },
        {
          "key": "x-access-level",
          "value": "read"
        },
        {
          "key": "x-connection-hash",
          "value": "86a90a7aa13fde1840d52be0d1faf5c4"
        },
        {
          "key": "x-content-type-options",
          "value": "nosniff"
        },
        {
          "key": "x-frame-options",
          "value": "SAMEORIGIN"
        },
        {
          "key": "x-rate-limit-limit",
          "value": "1800"
        },
        {
          "key": "x-rate-limit-remaining",
          "value": "1798"
        },
        {
          "key": "x-rate-limit-reset",
          "value": "1593019916"
        },
        {
          "key": "x-response-time",
          "value": "245"
        },
        {
          "key": "x-xss-protection",
          "value": "0"
        }
      ],
      "cookie": [
      ],
      "body": "{\n    \"data\": [\n        {\n            \"id\": \"1275840243636322304\",\n            \"text\": \"RT @polarbearrs: Hi  #VisibleWomen ✨ I’m Anna, I’m a Black + Latina Caribbean illustrator based in NYC. I love making dreamy surrealist por…\"\n        },\n        {\n            \"id\": \"1275840238498308097\",\n            \"text\": \"RT @DavidYankovich: A man who admitted his own guilt twice is getting freed from prison while black folks who jump a turnstile in NYC subwa…\"\n        },\n        {\n            \"id\": \"1275840234521899008\",\n            \"text\": \"@freetesla11 @square1_NYC @FakeMikeMiseph @ajn465 @krystalball His evils have actually become bipartisan for the most part. Much like Reagan, in a sense.\\nTrump is disorganized and incompetent. He was handed an unprecedented level of power when he got inaugurated(both chambers, courts, governorships) and yet still accomplished very little.\"\n        },\n        {\n            \"id\": \"1275840231883898880\",\n            \"text\": \"RT @NotifyNYC: AMBER Alert: Ahsan Ali, 15-year-old  male from 46th Avenue in Queens, in a white Toyota Sienna with license plate number JJX…\"\n        },\n        {\n            \"id\": \"1275840228402569216\",\n            \"text\": \"@BeltwayGreg @zachdcarter you realize Amazon increased its presence in NYC anyway, without any tax incentives, right?\"\n        },\n        {\n            \"id\": \"1275840227924414464\",\n            \"text\": \"RT @mcgoawayylmao: @DeeH_NYC i can't wait for your best picture speech at the oscars\"\n        },\n        {\n            \"id\": \"1275840226922057728\",\n            \"text\": \"@SnottieDrippen It’s like another account tweeted a video saying JR Smith IS a bucket then used footage almost exclusively from his time in Denver and NYC as if it was last season...\"\n        },\n        {\n            \"id\": \"1275840226657816579\",\n            \"text\": \"@tracifrost1976 In NYC we wear masks.   If you're still not sure if they are good for anything, take a look at this graph.  We're keeping it low. https://t.co/pdmt5RG53h\"\n        },\n        {\n            \"id\": \"1275840225844113409\",\n            \"text\": \"@NYCMayor Where is the money you promised NYC public schools families. We were suppose to get it the first week of June\"\n        },\n        {\n            \"id\": \"1275840222559899649\",\n            \"text\": \"Just wondering how the government plans on monitoring out of state visitors. Plenty of people live in Jersey that work in NYC\"\n        }\n    ],\n    \"meta\": {\n        \"newest_id\": \"1275840243636322304\",\n        \"oldest_id\": \"1275840222559899649\",\n        \"result_count\": 10,\n        \"next_token\": \"b26v89c19zqg8o3fo7gesq314yb2ynhwgmfg7az3v76v1\"\n    }\n}"
    },
    {
      "name": "200 Success - Request Tweet Fields with Expanded User Fields",
      "originalRequest": {
        "method": "GET",
        "header": [
        ],
        "url": {
          "raw": "https://api.twitter.com/2/tweets/search/recent?query=conversation_id:1273733248749690880&tweet.fields=attachments,author_id,created_at,entities,geo,id,in_reply_to_user_id,lang,possibly_sensitive,referenced_tweets,source,text,withheld&expansions=author_id,referenced_tweets.id&user.fields=description,created_at",
          "protocol": "https",
          "host": [
            "api",
            "twitter",
            "com"
          ],
          "path": [
            "2",
            "tweets",
            "search",
            "recent"
          ],
          "query": [
            {
              "key": "query",
              "value": "conversation_id:1273733248749690880",
              "description": "Required. Query for matching Tweets. Up to 512 characters."
            },
            {
              "key": "start_time",
              "value": "",
              "description": "The oldest UTC timestamp (from most recent 7 days) from which the Tweets will be provided. YYYY-MM-DDTHH:mm:ssZ.",
              "disabled": true
            },
            {
              "key": "end_time",
              "value": "",
              "description": "The newest, most recent UTC timestamp to which the Tweets will be provided. YYYY-MM-DDTHH:mm:ssZ (ISO 8601/RFC 3339).",
              "disabled": true
            },
            {
              "key": "since_id",
              "value": "",
              "description": "Returns results with a Tweet ID greater than (that is, more recent than) the specified ID. The ID specified is exclusive and responses will not include it.",
              "disabled": true
            },
            {
              "key": "until_id",
              "value": "",
              "description": "Returns results with a Tweet ID less than (that is, older than) the specified ID. The ID specified is exclusive and responses will not include it.",
              "disabled": true
            },
            {
              "key": "max_results",
              "value": "",
              "description": "The maximum number of search results to be returned by a request. A number between 10 and the system limit (currently 100). By default, a request response will return 10 results.",
              "disabled": true
            },
            {
              "key": "next_token",
              "value": "",
              "description": "This parameter is used to get the next 'page' of results. The value used with the parameter is pulled directly from the response provided by the API, and should not be modified.",
              "disabled": true
            },
            {
              "key": "tweet.fields",
              "value": "attachments,author_id,created_at,entities,geo,id,in_reply_to_user_id,lang,possibly_sensitive,referenced_tweets,source,text,withheld",
              "description": "attachments,author_id,context_annotations,created_at,entities,geo,id,in_reply_to_user_id,lang,non_public_metrics,organic_metrics,possibly_sensitive,promoted_metrics,public_metrics,referenced_tweets,source,text,withheld"
            },
            {
              "key": "expansions",
              "value": "author_id,referenced_tweets.id",
              "description": "Comma-separated list of fields to expand. Expansions enable requests to expand an ID into a full object in the includes response object.\nAllowed values: attachments.poll_ids,attachments.media_keys,author_id,geo.place_id,in_reply_to_user_id,referenced_tweets.id\nDefault values: none"
            },
            {
              "key": "media.fields",
              "value": "",
              "description": "duration_ms,height,media_key,non_public_metrics,organic_metrics,preview_image_url,promoted_metrics,public_metrics,type,url,width",
              "disabled": true
            },
            {
              "key": "place.fields",
              "value": "",
              "description": "contained_within,country,country_code,full_name,geo,id,name,place_type",
              "disabled": true
            },
            {
              "key": "poll.fields",
              "value": "",
              "description": "duration_minutes,end_datetime,id,options,voting_status",
              "disabled": true
            },
            {
              "key": "user.fields",
              "value": "description,created_at",
              "description": "created_at,description,entities,id,location,name,pinned_tweet_id,profile_image_url,protected,public_metrics,url,username,verified,withheld"
            }
          ]
        }
      },
      "status": "OK",
      "code": 200,
      "_postman_previewlanguage": "json",
      "header": [
        {
          "key": "content-disposition",
          "value": "attachment; filename=json.json"
        },
        {
          "key": "content-encoding",
          "value": "gzip"
        },
        {
          "key": "content-length",
          "value": "1686"
        },
        {
          "key": "content-type",
          "value": "application/json; charset=utf-8"
        },
        {
          "key": "date",
          "value": "Tue, 30 Jun 2020 17:36:03 GMT"
        },
        {
          "key": "server",
          "value": "tsa_b"
        },
        {
          "key": "strict-transport-security",
          "value": "max-age=631138519"
        },
        {
          "key": "x-access-level",
          "value": "read"
        },
        {
          "key": "x-connection-hash",
          "value": "857207159289071cdd445778e071a674"
        },
        {
          "key": "x-content-type-options",
          "value": "nosniff"
        },
        {
          "key": "x-frame-options",
          "value": "SAMEORIGIN"
        },
        {
          "key": "x-rate-limit-limit",
          "value": "1800"
        },
        {
          "key": "x-rate-limit-remaining",
          "value": "1795"
        },
        {
          "key": "x-rate-limit-reset",
          "value": "1593539398"
        },
        {
          "key": "x-response-time",
          "value": "272"
        },
        {
          "key": "x-xss-protection",
          "value": "0"
        }
      ],
      "cookie": [
      ],
      "body": "{\n    \"data\": [\n        {\n            \"attachments\": {\n                \"media_keys\": [\n                    \"16_1276035971193044992\"\n                ]\n            },\n            \"author_id\": \"63046977\",\n            \"created_at\": \"2020-06-25T06:14:19.000Z\",\n            \"entities\": {\n                \"mentions\": [\n                    {\n                        \"start\": 0,\n                        \"end\": 8,\n                        \"username\": \"snowman\"\n                    }\n                ],\n                \"urls\": [\n                    {\n                        \"start\": 90,\n                        \"end\": 113,\n                        \"url\": \"https://t.co/14TzLYBBXi\",\n                        \"expanded_url\": \"https://twitter.com/happycamper/status/1276035977375477760/photo/1\",\n                        \"display_url\": \"pic.twitter.com/14TzLYBBXi\"\n                    }\n                ]\n            },\n            \"geo\": {\n                \"place_id\": \"f7eb2fa2fea288b1\"\n            },\n            \"id\": \"1276035977375477760\",\n            \"in_reply_to_user_id\": \"17200003\",\n            \"lang\": \"en\",\n            \"possibly_sensitive\": false,\n            \"referenced_tweets\": [\n                {\n                    \"type\": \"replied_to\",\n                    \"id\": \"1275653067283759104\"\n                }\n            ],\n            \"source\": \"Twitter for iPhone\",\n            \"text\": \"@snowman Ooo, thanks error message, public_metircs are not the metrics you’re looking for https://t.co/14TzLYBBXi\"\n        },\n        {\n            \"author_id\": \"17200003\",\n            \"created_at\": \"2020-06-24T20:04:54.000Z\",\n            \"id\": \"1275882613572583424\",\n            \"in_reply_to_user_id\": \"17200003\",\n            \"lang\": \"en\",\n            \"possibly_sensitive\": false,\n            \"referenced_tweets\": [\n                {\n                    \"type\": \"replied_to\",\n                    \"id\": \"1273733248749690880\"\n                }\n            ],\n            \"source\": \"Twitter for Android\",\n            \"text\": \"Using Labs Recent search for polling use cases has been 🔥👍. A simple alternative to streaming in many cases...\"\n        },\n        {\n            \"attachments\": {\n                \"media_keys\": [\n                    \"16_1275763720522625029\"\n                ]\n            },\n            \"author_id\": \"196883832\",\n            \"created_at\": \"2020-06-24T12:12:29.000Z\",\n            \"entities\": {\n                \"mentions\": [\n                    {\n                        \"start\": 0,\n                        \"end\": 8,\n                        \"username\": \"snowman\"\n                    },\n                    {\n                        \"start\": 9,\n                        \"end\": 21,\n                        \"username\": \"happycamper\"\n                    }\n                ],\n                \"urls\": [\n                    {\n                        \"start\": 22,\n                        \"end\": 45,\n                        \"url\": \"https://t.co/qvk5BCBtqh\",\n                        \"expanded_url\": \"https://twitter.com/jellybeanjones/status/1275763727908798470/photo/1\",\n                        \"display_url\": \"pic.twitter.com/qvk5BCBtqh\"\n                    }\n                ]\n            },\n            \"geo\": {\n                \"place_id\": \"f7eb2fa2fea288b1\"\n            },\n            \"id\": \"1275763727908798470\",\n            \"in_reply_to_user_id\": \"17200003\",\n            \"lang\": \"und\",\n            \"possibly_sensitive\": false,\n            \"referenced_tweets\": [\n                {\n                    \"type\": \"replied_to\",\n                    \"id\": \"1275653067283759104\"\n                }\n            ],\n            \"source\": \"Twitter for  iPhone\",\n            \"text\": \"@snowman @happycamper https://t.co/qvk5BCBtqh\"\n        },\n        {\n            \"author_id\": \"17200003\",\n            \"created_at\": \"2020-06-24T04:52:46.000Z\",\n            \"entities\": {\n                \"mentions\": [\n                    {\n                        \"start\": 0,\n                        \"end\": 12,\n                        \"username\": \"happycamper\"\n                    }\n                ]\n            },\n            \"id\": \"1275653067283759104\",\n            \"in_reply_to_user_id\": \"63046977\",\n            \"lang\": \"en\",\n            \"possibly_sensitive\": false,\n            \"referenced_tweets\": [\n                {\n                    \"type\": \"replied_to\",\n                    \"id\": \"1274086728471461889\"\n                }\n            ],\n            \"source\": \"Twitter Web App\",\n            \"text\": \"@happycamper Wait, when I try that, I get an error: {\\n    \\\"errors\\\": [\\n        { \\\"message\\\": \\\"[public_metircs] is not one of [attachments,author_id,context_annotations,created_at,entities,geo,id,in_reply_to_user_id,lang,non_public_metrics,organic_metrics,promoted_metrics,public_metrics]\\\"\"\n        }\n    ],\n    \"includes\": {\n        \"users\": [\n            {\n                \"created_at\": \"2009-08-05T05:46:48.000Z\",\n                \"description\": \"Part-time fiddler, wanderer, yogi, scubadiver #savegamehenge Full time explorer, festvarian, music lover, nerd, @TwitterBoulder - Opinions are my own. she/her\",\n                \"id\": \"63046977\",\n                \"name\": \"Emily Waligoske 🏕\",\n                \"username\": \"happycamper\"\n            },\n            {\n                \"created_at\": \"2008-11-05T23:06:37.000Z\",\n                \"description\": \"family, travel, music, farming, photography, coding, weather, rain, snow, snowmelt, hydrology, flood early-warning systems. From MN, live in CO. @TwitterDev\",\n                \"id\": \"17200003\",\n                \"name\": \"Jim Moffitt\",\n                \"username\": \"snowman\"\n            },\n            {\n                \"created_at\": \"2010-09-30T03:36:40.000Z\",\n                \"description\": \"IT wizard @ Twitter Boulder 🧙\\u200d♂️🗻💻 🎧🌞✌🏽Turn my headphones up! #BlackLivesMatter\",\n                \"id\": \"196883832\",\n                \"name\": \"zachariah jones\",\n                \"username\": \"jellybeanjones\"\n            }\n        ],\n        \"tweets\": [\n            {\n                \"author_id\": \"17200003\",\n                \"created_at\": \"2020-06-24T04:52:46.000Z\",\n                \"entities\": {\n                    \"mentions\": [\n                        {\n                            \"start\": 0,\n                            \"end\": 12,\n                            \"username\": \"happycamper\"\n                        }\n                    ]\n                },\n                \"id\": \"1275653067283759104\",\n                \"in_reply_to_user_id\": \"63046977\",\n                \"lang\": \"en\",\n                \"possibly_sensitive\": false,\n                \"referenced_tweets\": [\n                    {\n                        \"type\": \"replied_to\",\n                        \"id\": \"1274086728471461889\"\n                    }\n                ],\n                \"source\": \"Twitter Web App\",\n                \"text\": \"@happycamper Wait, when I try that, I get an error: {\\n    \\\"errors\\\": [\\n        { \\\"message\\\": \\\"[public_metircs] is not one of [attachments,author_id,context_annotations,created_at,entities,geo,id,in_reply_to_user_id,lang,non_public_metrics,organic_metrics,promoted_metrics,public_metrics]\\\"\"\n            },\n            {\n                \"author_id\": \"17200003\",\n                \"created_at\": \"2020-06-18T21:44:05.000Z\",\n                \"id\": \"1273733248749690880\",\n                \"lang\": \"en\",\n                \"possibly_sensitive\": false,\n                \"source\": \"Twitter Web App\",\n                \"text\": \"So, what's your favorite thing about Twitter Developer Labs? \\n\\nI find it hard to pick one and am loving the ability to select the Tweet object fields of interest. \\n\\ntweet.fields=created_at,author_id,context_annotations\"\n            },\n            {\n                \"author_id\": \"63046977\",\n                \"created_at\": \"2020-06-19T21:08:42.000Z\",\n                \"entities\": {\n                    \"hashtags\": [\n                        {\n                            \"start\": 209,\n                            \"end\": 215,\n                            \"tag\": \"fresh\"\n                        }\n                    ],\n                    \"mentions\": [\n                        {\n                            \"start\": 0,\n                            \"end\": 8,\n                            \"username\": \"snowman\"\n                        }\n                    ]\n                },\n                \"id\": \"1274086728471461889\",\n                \"in_reply_to_user_id\": \"17200003\",\n                \"lang\": \"en\",\n                \"possibly_sensitive\": false,\n                \"referenced_tweets\": [\n                    {\n                        \"type\": \"replied_to\",\n                        \"id\": \"1273733248749690880\"\n                    }\n                ],\n                \"source\": \"Twitter Web App\",\n                \"text\": \"@snowman My fave is the new the metrics, especially for building apps to help Twitter users track the metrics for their Tweets.\\ntweet.fields=public_metircs,non_public_metrics,organic_metrics,promoted_metrics  #fresh\"\n            }\n        ]\n    },\n    \"meta\": {\n        \"newest_id\": \"1276035977375477760\",\n        \"oldest_id\": \"1275653067283759104\",\n        \"result_count\": 4\n    }\n}"
    }
  ]
}