> For the complete documentation index, see [llms.txt](https://docs.pullbay.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.pullbay.com/documentation/api-and-references/twitter-x.md).

# Twitter / X

The Pullbay Twitter API provides programmatic access to public Twitter/X data — tweet search, individual tweets, and user profiles by handle or numeric ID. Integrate Twitter data into your applications, dashboards, and analytics pipelines without scraping or using the official Twitter/X developer platform.

**Base URL:** `https://api.pullbay.com`

## Overview

The Twitter service lets you:

* Search tweets by keyword, sorted by `Top` or `Latest`
* Look up a single tweet by its numeric ID
* Look up a user profile by handle (`@username`) or by numeric user ID
* Fetch extended "about" details for a user (account region, profile image shape, username change history)
* Pull all tweets posted by a given user

All endpoints are read-only `GET` requests against public Twitter/X data — no posting, no DMs, and no authenticated account access is included.

## Common Use Cases

**Brand & Keyword Monitoring** — Search for mentions of a brand, product, or keyword and feed matching tweets into your own alerting or sentiment pipeline.

**Influencer & Competitor Tracking** — Pull a user's profile and recent tweets to track follower growth, posting cadence, and engagement trends over time.

**Content Research** — Use Search Twitter to discover what's being said about a topic, then pull the authoring accounts' profiles to understand who's driving the conversation.

**Lead & Audience Enrichment** — Resolve a handle to its numeric user ID and profile fields (bio, follower count, verification status) to enrich a CRM record or audience segment.

**Historical Tweet Lookup** — Fetch a specific tweet by ID when you already have a link or ID from another source and need the full text, engagement counts, and author details.

## Endpoints

| Endpoint                             | Description                              | Pagination        |
| ------------------------------------ | ---------------------------------------- | ----------------- |
| `GET /twitter/search`                | Search tweets by query                   | Cursor / maxItems |
| `GET /twitter/tweet/{id}`            | Get a single tweet by ID                 | —                 |
| `GET /twitter/handle/{handle}`       | Get a user by handle                     | —                 |
| `GET /twitter/handle/{handle}/about` | Get a user's about/bio details by handle | —                 |
| `GET /twitter/user/{id}`             | Get a user by numeric ID                 | —                 |
| `GET /twitter/user/{id}/tweets`      | Get tweets posted by a user              | Cursor / maxItems |

***

### Search Twitter

Search tweets matching a query.

**Request**

```bash
GET /twitter/search
Authorization: Bearer YOUR_API_KEY
```

**Parameters**

| Parameter  | Type                    | Required | Default  | Description                                                                    |
| ---------- | ----------------------- | -------- | -------- | ------------------------------------------------------------------------------ |
| `query`    | string                  | Yes      | —        | Search query, 1–100 characters                                                 |
| `sort`     | string                  | No       | `Latest` | `Top` or `Latest`                                                              |
| `useFirst` | string (`true`/`false`) | No       | `false`  | `true` or `false`                                                              |
| `maxItems` | integer                 | No       | —        | One-shot bulk pull, 1–200 results. Mutually exclusive with `cursor`            |
| `cursor`   | string                  | No       | —        | Pagination cursor from a previous response. Mutually exclusive with `maxItems` |

**Example**

```bash
curl -G "https://api.pullbay.com/twitter/search" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d query="openai" \
  -d sort=Latest \
  -d maxItems=20
```

**Response**

```json
{
  "status": 200,
  "message": "OK",
  "success": true,
  "data": [
    {
      "type": "tweet",
      "id": "20",
      "url": "https://x.com/jack/status/20",
      "twitterUrl": "https://twitter.com/jack/status/20",
      "text": "just setting up my twttr",
      "fullText": "just setting up my twttr",
      "source": "Twitter Web Client",
      "lang": "en",
      "createdAt": "Tue Mar 21 20:50:14 +0000 2006",
      "conversationId": "20",
      "retweetCount": 126541,
      "replyCount": 17858,
      "likeCount": 309719,
      "quoteCount": 6384,
      "bookmarkCount": 21386,
      "viewCount": null,
      "isReply": false,
      "isPinned": false,
      "isRetweet": false,
      "isQuote": false,
      "author": {
        "type": "user",
        "id": "44196397",
        "userName": "elonmusk",
        "name": "Elon Musk",
        "url": "https://x.com/elonmusk",
        "twitterUrl": "https://twitter.com/elonmusk",
        "description": "https://t.co/dDtDyVssfm",
        "location": "",
        "profilePicture": "https://pbs.twimg.com/profile_images/2035314704307081216/71U1ftM3_normal.jpg",
        "coverPicture": "https://pbs.twimg.com/profile_banners/44196397/1774145451",
        "isVerified": true,
        "isBlueVerified": true,
        "protected": false,
        "canDm": false,
        "canMediaTag": false,
        "followers": 239698341,
        "following": 1319,
        "fastFollowersCount": 0,
        "favouritesCount": 225074,
        "listedCount": 168631,
        "mediaCount": 4467,
        "statusesCount": 101980,
        "createdAt": "Tue Jun 02 20:12:29 +0000 2009",
        "status": ""
      },
      "media": []
    }
  ],
  "pagination": { "page": null, "hasNextPage": true, "cursor": "DAACCgACGY...", "offset": null },
  "pricing": { "creditsCharged": 1 }
}
```

**Response Schema**

| Field                    | Type              | Description                                    |
| ------------------------ | ----------------- | ---------------------------------------------- |
| `data`                   | array             | Array of [Tweet objects](#tweet-object)        |
| `pagination.page`        | null              | Unused by this endpoint — always `null` here   |
| `pagination.hasNextPage` | boolean, nullable | Whether another page is available              |
| `pagination.cursor`      | string, nullable  | Cursor to pass as `cursor` on the next request |
| `pagination.offset`      | null              | Unused by this endpoint — always `null` here   |
| `pricing.creditsCharged` | number            | Credits charged for this request               |

**Credit cost:** dynamic, returned in `pricing.creditsCharged`. No published flat rate — read the figure from each response.

***

### Get Tweet

Returns a single tweet by its numeric ID.

**Request**

```bash
GET /twitter/tweet/{id}
Authorization: Bearer YOUR_API_KEY
```

**Parameters**

| Parameter | Type   | Required | Default | Description                                    |
| --------- | ------ | -------- | ------- | ---------------------------------------------- |
| `id`      | string | Yes      | —       | Numeric tweet ID, 1–100 characters (e.g. `20`) |

**Example**

```bash
curl -G "https://api.pullbay.com/twitter/tweet/20" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

**Response**

```json
{
  "status": 200,
  "message": "OK",
  "success": true,
  "data": [
    {
      "type": "tweet",
      "id": "20",
      "url": "https://x.com/jack/status/20",
      "twitterUrl": "https://twitter.com/jack/status/20",
      "text": "just setting up my twttr",
      "fullText": "just setting up my twttr",
      "source": "Twitter Web Client",
      "lang": "en",
      "createdAt": "Tue Mar 21 20:50:14 +0000 2006",
      "conversationId": "20",
      "retweetCount": 126541,
      "replyCount": 17858,
      "likeCount": 309719,
      "quoteCount": 6384,
      "bookmarkCount": 21386,
      "viewCount": null,
      "isReply": false,
      "isPinned": false,
      "isRetweet": false,
      "isQuote": false,
      "author": {
        "type": "user",
        "id": "12",
        "userName": "jack",
        "name": "jack",
        "url": "https://x.com/jack",
        "twitterUrl": "https://twitter.com/jack",
        "description": "",
        "location": "",
        "profilePicture": "https://pbs.twimg.com/profile_images/1115644092329758721/AFjOzXz3_normal.jpg",
        "coverPicture": "",
        "isVerified": false,
        "isBlueVerified": false,
        "protected": false,
        "canDm": false,
        "canMediaTag": false,
        "followers": 6800000,
        "following": 4500,
        "fastFollowersCount": 0,
        "favouritesCount": 25000,
        "listedCount": 22000,
        "mediaCount": 350,
        "statusesCount": 30000,
        "createdAt": "Tue Mar 21 20:50:14 +0000 2006",
        "status": ""
      },
      "media": []
    }
  ],
  "pricing": { "creditsCharged": 1 }
}
```

**Response Schema**

| Field                    | Type   | Description                                             |
| ------------------------ | ------ | ------------------------------------------------------- |
| `data`                   | array  | Array containing a single [Tweet object](#tweet-object) |
| `pricing.creditsCharged` | number | Credits charged for this request                        |

**Credit cost:** dynamic, returned in `pricing.creditsCharged`. No published flat rate.

***

### Get User By Handle

Returns a Twitter user by handle (without `@`).

**Request**

```bash
GET /twitter/handle/{handle}
Authorization: Bearer YOUR_API_KEY
```

**Parameters**

| Parameter | Type   | Required | Default | Description                                                    |
| --------- | ------ | -------- | ------- | -------------------------------------------------------------- |
| `handle`  | string | Yes      | —       | Twitter handle without `@`, 1–100 characters (e.g. `elonmusk`) |

**Example**

```bash
curl -G "https://api.pullbay.com/twitter/handle/elonmusk" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

**Response**

```json
{
  "status": 200,
  "message": "OK",
  "success": true,
  "data": [
    {
      "type": "user",
      "id": "44196397",
      "userName": "elonmusk",
      "name": "Elon Musk",
      "url": "https://x.com/elonmusk",
      "twitterUrl": "https://twitter.com/elonmusk",
      "description": "https://t.co/dDtDyVssfm",
      "location": "",
      "profilePicture": "https://pbs.twimg.com/profile_images/2035314704307081216/71U1ftM3_normal.jpg",
      "coverPicture": "https://pbs.twimg.com/profile_banners/44196397/1774145451",
      "isVerified": true,
      "isBlueVerified": true,
      "protected": false,
      "canDm": false,
      "canMediaTag": false,
      "followers": 239698341,
      "following": 1319,
      "fastFollowersCount": 0,
      "favouritesCount": 225074,
      "listedCount": 168631,
      "mediaCount": 4467,
      "statusesCount": 101980,
      "createdAt": "Tue Jun 02 20:12:29 +0000 2009",
      "status": ""
    }
  ],
  "pricing": { "creditsCharged": 1 }
}
```

**Response Schema**

| Field                    | Type   | Description                                           |
| ------------------------ | ------ | ----------------------------------------------------- |
| `data`                   | array  | Array containing a single [User object](#user-object) |
| `pricing.creditsCharged` | number | Credits charged for this request                      |

**Credit cost:** dynamic, returned in `pricing.creditsCharged`.

***

### Get User About By Handle

Returns extended profile / about details for a Twitter user, by handle.

**Request**

```bash
GET /twitter/handle/{handle}/about
Authorization: Bearer YOUR_API_KEY
```

**Parameters**

| Parameter | Type   | Required | Default | Description                                                    |
| --------- | ------ | -------- | ------- | -------------------------------------------------------------- |
| `handle`  | string | Yes      | —       | Twitter handle without `@`, 1–100 characters (e.g. `elonmusk`) |

**Example**

```bash
curl -G "https://api.pullbay.com/twitter/handle/elonmusk/about" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

**Response**

```json
{
  "status": 200,
  "message": "OK",
  "success": true,
  "data": [
    {
      "accountBasedIn": "United States",
      "locationAccurate": true,
      "profileImageShape": "Circle",
      "avatarUrl": "https://pbs.twimg.com/profile_images/2035314704307081216/71U1ftM3_normal.jpg",
      "usernameChangeCount": "0",
      "accountCreatedAt": "Tue Jun 02 20:12:29 +0000 2009",
      "accountSource": "United States App Store",
      "verifiedSince": "-156836000000000"
    }
  ],
  "pricing": { "creditsCharged": 1 }
}
```

**Response Schema**

| Field                    | Type   | Description                                                       |
| ------------------------ | ------ | ----------------------------------------------------------------- |
| `data`                   | array  | Array containing a single [User About object](#user-about-object) |
| `pricing.creditsCharged` | number | Credits charged for this request                                  |

**Credit cost:** dynamic, returned in `pricing.creditsCharged`.

***

### Get User By ID

Returns a Twitter user by their numeric user ID.

**Request**

```bash
GET /twitter/user/{id}
Authorization: Bearer YOUR_API_KEY
```

**Parameters**

| Parameter | Type   | Required | Default | Description                                                 |
| --------- | ------ | -------- | ------- | ----------------------------------------------------------- |
| `id`      | string | Yes      | —       | Numeric Twitter user ID, 1–100 characters (e.g. `44196397`) |

**Example**

```bash
curl -G "https://api.pullbay.com/twitter/user/44196397" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

**Response**

```json
{
  "status": 200,
  "message": "OK",
  "success": true,
  "data": [
    {
      "type": "user",
      "id": "44196397",
      "userName": "elonmusk",
      "name": "Elon Musk",
      "url": "https://x.com/elonmusk",
      "twitterUrl": "https://twitter.com/elonmusk",
      "description": "https://t.co/dDtDyVssfm",
      "location": "",
      "profilePicture": "https://pbs.twimg.com/profile_images/2035314704307081216/71U1ftM3_normal.jpg",
      "coverPicture": "https://pbs.twimg.com/profile_banners/44196397/1774145451",
      "isVerified": true,
      "isBlueVerified": true,
      "protected": false,
      "canDm": false,
      "canMediaTag": false,
      "followers": 239698341,
      "following": 1319,
      "fastFollowersCount": 0,
      "favouritesCount": 225074,
      "listedCount": 168631,
      "mediaCount": 4467,
      "statusesCount": 101980,
      "createdAt": "Tue Jun 02 20:12:29 +0000 2009",
      "status": ""
    }
  ],
  "pricing": { "creditsCharged": 1 }
}
```

**Response Schema**

| Field                    | Type   | Description                                           |
| ------------------------ | ------ | ----------------------------------------------------- |
| `data`                   | array  | Array containing a single [User object](#user-object) |
| `pricing.creditsCharged` | number | Credits charged for this request                      |

**Credit cost:** dynamic, returned in `pricing.creditsCharged`.

***

### Get User's Tweets

Returns tweets posted by a user, by user ID.

**Request**

```bash
GET /twitter/user/{id}/tweets
Authorization: Bearer YOUR_API_KEY
```

**Parameters**

| Parameter  | Type    | Required | Default | Description                                                                    |
| ---------- | ------- | -------- | ------- | ------------------------------------------------------------------------------ |
| `id`       | string  | Yes      | —       | Numeric Twitter user ID, 1–100 characters (e.g. `44196397`)                    |
| `maxItems` | integer | No       | —       | One-shot bulk pull, 1–200 results. Mutually exclusive with `cursor`            |
| `cursor`   | string  | No       | —       | Pagination cursor from a previous response. Mutually exclusive with `maxItems` |

**Example**

```bash
curl -G "https://api.pullbay.com/twitter/user/44196397/tweets" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d maxItems=20
```

**Response**

```json
{
  "status": 200,
  "message": "OK",
  "success": true,
  "data": [
    {
      "type": "tweet",
      "id": "20",
      "url": "https://x.com/jack/status/20",
      "twitterUrl": "https://twitter.com/jack/status/20",
      "text": "just setting up my twttr",
      "fullText": "just setting up my twttr",
      "source": "Twitter Web Client",
      "lang": "en",
      "createdAt": "Tue Mar 21 20:50:14 +0000 2006",
      "conversationId": "20",
      "retweetCount": 126541,
      "replyCount": 17858,
      "likeCount": 309719,
      "quoteCount": 6384,
      "bookmarkCount": 21386,
      "viewCount": null,
      "isReply": false,
      "isPinned": false,
      "isRetweet": false,
      "isQuote": false,
      "author": {
        "type": "user",
        "id": "44196397",
        "userName": "elonmusk",
        "name": "Elon Musk",
        "url": "https://x.com/elonmusk",
        "twitterUrl": "https://twitter.com/elonmusk",
        "description": "https://t.co/dDtDyVssfm",
        "location": "",
        "profilePicture": "https://pbs.twimg.com/profile_images/2035314704307081216/71U1ftM3_normal.jpg",
        "coverPicture": "https://pbs.twimg.com/profile_banners/44196397/1774145451",
        "isVerified": true,
        "isBlueVerified": true,
        "protected": false,
        "canDm": false,
        "canMediaTag": false,
        "followers": 239698341,
        "following": 1319,
        "fastFollowersCount": 0,
        "favouritesCount": 225074,
        "listedCount": 168631,
        "mediaCount": 4467,
        "statusesCount": 101980,
        "createdAt": "Tue Jun 02 20:12:29 +0000 2009",
        "status": ""
      },
      "media": []
    }
  ],
  "pagination": { "page": null, "hasNextPage": true, "cursor": "DAACCgACGY...", "offset": null },
  "pricing": { "creditsCharged": 1 }
}
```

**Response Schema**

| Field                    | Type              | Description                                    |
| ------------------------ | ----------------- | ---------------------------------------------- |
| `data`                   | array             | Array of [Tweet objects](#tweet-object)        |
| `pagination.page`        | null              | Unused by this endpoint — always `null` here   |
| `pagination.hasNextPage` | boolean, nullable | Whether another page is available              |
| `pagination.cursor`      | string, nullable  | Cursor to pass as `cursor` on the next request |
| `pagination.offset`      | null              | Unused by this endpoint — always `null` here   |
| `pricing.creditsCharged` | number            | Credits charged for this request               |

**Credit cost:** dynamic, returned in `pricing.creditsCharged`. No flat per-request rate is published — read the figure from each response.

***

## Errors

All non-2xx responses share the same envelope:

```json
{
  "status": 400,
  "message": "Bad request",
  "success": false,
  "error": { "code": "BAD_REQUEST" }
}
```

| Status | Meaning                                  |
| ------ | ---------------------------------------- |
| `400`  | Bad request — missing/invalid parameters |
| `402`  | Insufficient credits                     |
| `404`  | Tweet or user not found                  |

## Object Schema

### Tweet object

| Field                                                                        | Type                        | Description                                  |
| ---------------------------------------------------------------------------- | --------------------------- | -------------------------------------------- |
| `type`                                                                       | string                      | Always `tweet`                               |
| `id`                                                                         | string                      | Numeric tweet ID                             |
| `url` / `twitterUrl`                                                         | string                      | Tweet permalink on `x.com` and `twitter.com` |
| `text` / `fullText`                                                          | string                      | Tweet body (truncated and full)              |
| `source`                                                                     | string                      | Client used to post the tweet                |
| `lang`                                                                       | string                      | Tweet language code                          |
| `createdAt`                                                                  | string                      | Posted timestamp (Twitter date format)       |
| `conversationId`                                                             | string                      | ID of the root tweet in the thread           |
| `retweetCount` / `replyCount` / `likeCount` / `quoteCount` / `bookmarkCount` | integer                     | Engagement counts                            |
| `viewCount`                                                                  | integer, nullable           | View count, when available                   |
| `isReply` / `isPinned` / `isRetweet` / `isQuote`                             | boolean                     | Tweet type flags                             |
| `author`                                                                     | [User object](#user-object) | The tweet's author                           |
| `media`                                                                      | array                       | Attached media objects                       |

### User object

| Field                             | Type    | Description                                           |
| --------------------------------- | ------- | ----------------------------------------------------- |
| `type`                            | string  | Always `user`                                         |
| `id`                              | string  | Numeric Twitter user ID                               |
| `userName`                        | string  | Handle, without `@`                                   |
| `name`                            | string  | Display name                                          |
| `url` / `twitterUrl`              | string  | Profile URL on `x.com` and `twitter.com`              |
| `description`                     | string  | Bio text                                              |
| `location`                        | string  | Free-text profile location                            |
| `profilePicture` / `coverPicture` | string  | Avatar and banner image URLs                          |
| `isVerified` / `isBlueVerified`   | boolean | Legacy verification and Blue subscriber verification  |
| `protected`                       | boolean | Whether the account's tweets are protected            |
| `canDm` / `canMediaTag`           | boolean | Whether the user accepts DMs / can be tagged in media |
| `followers` / `following`         | integer | Follower and following counts                         |
| `fastFollowersCount`              | integer | Recently-gained follower count                        |
| `favouritesCount`                 | integer | Total likes given by the user                         |
| `listedCount`                     | integer | Number of lists the user appears on                   |
| `mediaCount`                      | integer | Number of tweets containing media                     |
| `statusesCount`                   | integer | Total tweet count                                     |
| `createdAt`                       | string  | Account creation timestamp (Twitter date format)      |
| `status`                          | string  | Reserved/internal status field                        |

Note: `User object` is the schema returned by both Get User By Handle and Get User By ID — it is a distinct object from `User About object` below, which only the about/bio endpoint returns.

### User about object

| Field                 | Type    | Description                                                        |
| --------------------- | ------- | ------------------------------------------------------------------ |
| `accountBasedIn`      | string  | Inferred account region                                            |
| `locationAccurate`    | boolean | Whether `accountBasedIn` is considered accurate                    |
| `profileImageShape`   | string  | Profile picture mask shape (e.g. `Circle`)                         |
| `avatarUrl`           | string  | Avatar image URL                                                   |
| `usernameChangeCount` | string  | Number of times the handle has been changed (returned as a string) |
| `accountCreatedAt`    | string  | Account creation timestamp (Twitter date format)                   |
| `accountSource`       | string  | Platform/channel the account was created from                      |
| `verifiedSince`       | string  | Verification timestamp, when applicable (returned as a string)     |

Note: the User About object does not include `id`, `userName`, or any other linking field back to the User object — correlate the two by the `handle` you requested, not by a shared key in the response body.

## Finding User and Tweet IDs

* **Handle**: the `@username` shown on a profile or in a tweet URL, without the `@` (e.g. `https://x.com/elonmusk` → `elonmusk`). Pass this to the `/twitter/handle/{handle}` and `/twitter/handle/{handle}/about` endpoints.
* **Numeric user ID**: a stable internal ID, distinct from the handle. You can get it from a prior handle lookup's `id` field, or from a tweet's `author.id`. Pass this to `/twitter/user/{id}` and `/twitter/user/{id}/tweets`. Numeric IDs don't change even if a user changes their handle, so prefer caching the ID for repeated lookups.
* **Tweet ID**: the numeric ID in a tweet's URL, e.g. `https://x.com/jack/status/20` → `20`. Pass this to `/twitter/tweet/{id}`.
* Handle and numeric ID resolve to the same user but are not interchangeable inputs — each endpoint accepts only one or the other, not both.

## Python Example

This example fetches all tweets for a user a page at a time, following the `cursor` returned in `pagination.cursor` until `pagination.hasNextPage` is `false` or the page cap is reached:

```python
import requests

API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.pullbay.com"

def get_all_user_tweets(user_id, max_pages=10):
    all_tweets = []
    cursor = None
    pages_fetched = 0
    while pages_fetched < max_pages:
        params = {}
        if cursor:
            params["cursor"] = cursor
        resp = requests.get(
            f"{BASE_URL}/twitter/user/{user_id}/tweets",
            headers={"Authorization": f"Bearer {API_KEY}"},
            params=params,
        )
        resp.raise_for_status()
        body = resp.json()
        all_tweets.extend(body["data"])
        pagination = body.get("pagination") or {}
        if not pagination.get("hasNextPage"):
            break
        cursor = pagination.get("cursor")
        pages_fetched += 1
    return all_tweets

tweets = get_all_user_tweets("44196397")
print(f"Fetched {len(tweets)} tweets")
```

Each request is billed independently, with the charged amount reported in that response's `pricing.creditsCharged` — there's no separate "fetch everything in one call" endpoint, so a multi-page pull like this makes one request per page.

## FAQ

<details>

<summary>How do I find a user's numeric ID if I only have their handle?</summary>

Call `/twitter/handle/{handle}` first — the response's `id` field is the numeric user ID. You can also get a user's numeric ID from `author.id` on any of their tweets.

</details>

<details>

<summary>What's the difference between the basic user lookup and the "about" endpoint?</summary>

The basic lookup (`/twitter/handle/{handle}` or `/twitter/user/{id}`) returns the User object: bio, follower counts, verification status, and engagement counters. The about endpoint (`/twitter/handle/{handle}/about`) returns a separate User About object with different fields — inferred account region, profile image shape, username change count, and verification timestamp. The about endpoint is only available by handle, not by numeric ID.

</details>

<details>

<summary>Is <code>useFirst</code> a boolean?</summary>

No. It's documented and validated as a string with the literal enum values `true` and `false`, not a JSON boolean. Send it as the string `"true"` or `"false"` (e.g. `useFirst=true` in a query string), not as a boolean literal.

</details>

<details>

<summary>How many tweets can I fetch in one call?</summary>

Up to 200 with `maxItems` on Search Twitter or Get User's Tweets. `cursor` and `maxItems` are mutually exclusive — use one or the other per request.

</details>

<details>

<summary>Can I sort search results?</summary>

Yes — `sort` accepts `Top` or `Latest` (default `Latest`). There's no other sort order published for search.

</details>

<details>

<summary>What's the credit cost per request?</summary>

It's dynamic — every response includes `pricing.creditsCharged` with the exact amount for that call. There's no fixed published rate per endpoint or per result.

</details>
