{
  "openapi": "3.0.3",
  "info": {
    "title": "cheapxapi API",
    "version": "1.0.0",
    "description": "API for public X (Twitter) data and account actions.\n\n**Authentication** — send your API key in the `x-api-key` request header. Keys in the URL are rejected.\n\n**Pricing (data endpoints)** — $0.0006 per request, pay as you go. Every request is charged except when the failure is on our side:\ncharged: successful responses, \"not found\" style responses (e.g. user does not exist), invalid parameters, unknown endpoints;\nnot charged: rate-limited requests (429), insufficient balance (402), invalid key (401), items reported as not found with HTTP 404, and service errors (503).\nEach charged response carries `x-balance-remaining` (USD); every response carries `x-request-id`.\n\n**Rate limits** — 2 requests per second for new accounts, 10 per second for paid accounts; at most 10 requests in flight per account.\n\n**Not found results** — most endpoints report a missing user, tweet or list as HTTP 200 with `\"status\": \"error\"` (charged). Always check the `status` field, not only the HTTP status code. Exceptions: the search endpoints and *Get retweeters* return results directly without `status`; no matches means an empty list.\n\n**Pagination** — paginated endpoints return `has_next_page` and `next_cursor`. Pass `next_cursor` as `cursor` to get the next page.\nStop when `has_next_page` is `false` or `next_cursor` is empty; the API sets both when the end is reached. Use `has_next_page` (some endpoints also return a legacy `has_next` field; ignore it).\n\n**Timeouts** — most requests return in under a second, some take several seconds; set your client timeout to at least 75 seconds.\n\n\n**Account actions** — post, like, retweet, follow, message and more as an X account you control.\nFirst call *Log in to an X account* to get `login_cookies`, then send `login_cookies` and the same `proxy` with every action.\nWe pass these values through for the request only and never store or log your password, two-factor secret, `login_cookies` or proxy credentials.\nPricing: login $0.1 per request, every other action $0.0006 per request. HTTP 200 is charged, including when X rejects the action (`\"status\": \"error\"`, the reason is in `message`); invalid fields (400), rate limits and service errors are not.\nDo not retry an action automatically after a timeout: it may already have been applied on X.\nX limits how often each account may act; we cap posts and messages at 5 per minute and follows at 15 per minute per X account to protect it.\n",
    "contact": {
      "email": "support@cheapxapi.com"
    }
  },
  "servers": [
    {
      "url": "https://api.cheapxapi.com"
    }
  ],
  "security": [
    {
      "ApiKey": []
    }
  ],
  "tags": [
    {
      "name": "Users"
    },
    {
      "name": "Followers"
    },
    {
      "name": "Tweets"
    },
    {
      "name": "Lists"
    },
    {
      "name": "Communities"
    },
    {
      "name": "Trends"
    },
    {
      "name": "Account actions"
    }
  ],
  "paths": {
    "/twitter/user/info": {
      "get": {
        "operationId": "twitter_user_info",
        "tags": [
          "Users"
        ],
        "summary": "Get user profile",
        "description": "Public profile of a user by screen name.",
        "parameters": [
          {
            "name": "userName",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Screen name without the @, e.g. `NASA`.",
            "example": "NASA"
          }
        ],
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. Check `status`: `success` means data was returned; `error` (e.g. user not found) is also HTTP 200.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/UserInfo"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "success",
                        "error"
                      ]
                    },
                    "msg": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid parameters (charged), or API key placed in the URL (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Account disabled (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Unknown endpoint (charged), or the requested item could not be found (not charged). Note: many endpoints report a missing user/tweet as HTTP 200 with `\"status\":\"error\"` instead; those are charged.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Only GET is supported (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem, or the endpoint is temporarily unavailable (not charged). Retry with exponential backoff.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/user_about": {
      "get": {
        "operationId": "twitter_user_about",
        "tags": [
          "Users"
        ],
        "summary": "Get user 'about' details",
        "description": "Extra profile details of a user (account location, creation info, verification details).",
        "parameters": [
          {
            "name": "userName",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Screen name without the @, e.g. `NASA`.",
            "example": "NASA"
          }
        ],
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. Check `status`: `success` means data was returned; `error` (e.g. user not found) is also HTTP 200.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/UserAbout"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "success",
                        "error"
                      ]
                    },
                    "msg": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid parameters (charged), or API key placed in the URL (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Account disabled (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Unknown endpoint (charged), or the requested item could not be found (not charged). Note: many endpoints report a missing user/tweet as HTTP 200 with `\"status\":\"error\"` instead; those are charged.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Only GET is supported (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem, or the endpoint is temporarily unavailable (not charged). Retry with exponential backoff.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/user/batch_info_by_ids": {
      "get": {
        "operationId": "twitter_user_batch_info_by_ids",
        "tags": [
          "Users"
        ],
        "summary": "Get users by IDs",
        "description": "Profiles of up to 20 users in one request.",
        "parameters": [
          {
            "name": "userIds",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+(,[0-9]+){0,19}$"
            },
            "description": "1 to 20 numeric user IDs separated by commas, e.g. `11348282,44196397`.",
            "example": "11348282,44196397"
          }
        ],
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. Check `status`: `success` means data was returned; `error` (e.g. user not found) is also HTTP 200.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "users": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/UserInfo"
                      }
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "success",
                        "error"
                      ]
                    },
                    "msg": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid parameters (charged), or API key placed in the URL (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Account disabled (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Unknown endpoint (charged), or the requested item could not be found (not charged). Note: many endpoints report a missing user/tweet as HTTP 200 with `\"status\":\"error\"` instead; those are charged.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Only GET is supported (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem, or the endpoint is temporarily unavailable (not charged). Retry with exponential backoff.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/user/search": {
      "get": {
        "operationId": "twitter_user_search",
        "tags": [
          "Users"
        ],
        "summary": "Search users",
        "description": "Search users by keyword. Paginated: use `cursor` / `next_cursor`.",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Search query.",
            "example": "nasa"
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Pagination cursor. Leave empty for the first page, then pass `next_cursor` from the previous response."
          }
        ],
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. Returns the results directly, with no `status` field; no matches means an empty list.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "users": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/UserProfileSnake"
                      }
                    },
                    "has_next_page": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid parameters (charged), or API key placed in the URL (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Account disabled (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Unknown endpoint (charged), or the requested item could not be found (not charged). Note: many endpoints report a missing user/tweet as HTTP 200 with `\"status\":\"error\"` instead; those are charged.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Only GET is supported (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem, or the endpoint is temporarily unavailable (not charged). Retry with exponential backoff.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/user/last_tweets": {
      "get": {
        "operationId": "twitter_user_last_tweets",
        "tags": [
          "Users"
        ],
        "summary": "Get user's latest tweets",
        "description": "Latest tweets of a user, newest first. The list is inside `data.tweets`. Pass either `userName` or `userId`. Paginated: use `cursor` / `next_cursor`.",
        "parameters": [
          {
            "name": "userId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Numeric user ID, e.g. `11348282`."
          },
          {
            "name": "userName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Screen name without the @, e.g. `NASA`.",
            "example": "NASA"
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Pagination cursor. Leave empty for the first page, then pass `next_cursor` from the previous response."
          },
          {
            "name": "includeReplies",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false
            },
            "description": "Include replies (`true` / `false`)."
          }
        ],
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. Check `status`: `success` means data was returned; `error` (e.g. user not found) is also HTTP 200.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "enum": [
                        "success",
                        "error"
                      ]
                    },
                    "code": {
                      "type": "integer"
                    },
                    "msg": {
                      "type": "string"
                    },
                    "data": {
                      "type": "object",
                      "properties": {
                        "pin_tweet": {
                          "nullable": true,
                          "allOf": [
                            {
                              "$ref": "#/components/schemas/Tweet"
                            }
                          ]
                        },
                        "tweets": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/Tweet"
                          }
                        }
                      }
                    },
                    "has_next_page": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "status",
                    "data",
                    "has_next_page",
                    "next_cursor"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid parameters (charged), or API key placed in the URL (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Account disabled (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Unknown endpoint (charged), or the requested item could not be found (not charged). Note: many endpoints report a missing user/tweet as HTTP 200 with `\"status\":\"error\"` instead; those are charged.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Only GET is supported (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem, or the endpoint is temporarily unavailable (not charged). Retry with exponential backoff.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/user/tweet_timeline": {
      "get": {
        "operationId": "twitter_user_tweet_timeline",
        "tags": [
          "Users"
        ],
        "summary": "Get user's tweet timeline",
        "description": "Tweet timeline of a user by numeric user ID. The list is inside `data.tweets`. Paginated: use `cursor` / `next_cursor`.",
        "parameters": [
          {
            "name": "userId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Numeric user ID, e.g. `11348282`.",
            "example": "11348282"
          },
          {
            "name": "includeReplies",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false
            },
            "description": "Include replies (`true` / `false`)."
          },
          {
            "name": "includeParentTweet",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false
            },
            "description": "Include the parent tweet of replies (`true` / `false`)."
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Pagination cursor. Leave empty for the first page, then pass `next_cursor` from the previous response."
          }
        ],
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. Check `status`: `success` means data was returned; `error` (e.g. user not found) is also HTTP 200.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    },
                    "msg": {
                      "type": "string"
                    },
                    "code": {
                      "type": "integer"
                    },
                    "data": {
                      "type": "object",
                      "properties": {
                        "tweets": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/Tweet"
                          }
                        }
                      }
                    },
                    "has_next_page": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": "string",
                      "nullable": true
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid parameters (charged), or API key placed in the URL (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Account disabled (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Unknown endpoint (charged), or the requested item could not be found (not charged). Note: many endpoints report a missing user/tweet as HTTP 200 with `\"status\":\"error\"` instead; those are charged.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Only GET is supported (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem, or the endpoint is temporarily unavailable (not charged). Retry with exponential backoff.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/user/mentions": {
      "get": {
        "operationId": "twitter_user_mentions",
        "tags": [
          "Users"
        ],
        "summary": "Get user mentions",
        "description": "Tweets that mention a user. Paginated: use `cursor` / `next_cursor`.",
        "parameters": [
          {
            "name": "userName",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Screen name without the @, e.g. `NASA`.",
            "example": "NASA"
          },
          {
            "name": "sinceTime",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "description": "Only items created at or after this Unix timestamp (seconds)."
          },
          {
            "name": "untilTime",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "description": "Only items created before this Unix timestamp (seconds)."
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Pagination cursor. Leave empty for the first page, then pass `next_cursor` from the previous response."
          }
        ],
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. Check `status`: `success` means data was returned; `error` (e.g. user not found) is also HTTP 200.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "tweets": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Tweet"
                      }
                    },
                    "has_next_page": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": "string"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "success",
                        "error"
                      ]
                    },
                    "msg": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid parameters (charged), or API key placed in the URL (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Account disabled (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Unknown endpoint (charged), or the requested item could not be found (not charged). Note: many endpoints report a missing user/tweet as HTTP 200 with `\"status\":\"error\"` instead; those are charged.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Only GET is supported (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem, or the endpoint is temporarily unavailable (not charged). Retry with exponential backoff.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/user/articles": {
      "get": {
        "operationId": "twitter_user_articles",
        "tags": [
          "Users"
        ],
        "summary": "Get user's articles",
        "description": "Articles (long-form posts) published by a user. The list is inside `data.articles`. Paginated: use `cursor` / `next_cursor`.",
        "parameters": [
          {
            "name": "username",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Screen name without the @.",
            "example": "balajis"
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Pagination cursor. Leave empty for the first page, then pass `next_cursor` from the previous response."
          }
        ],
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. Check `status`: `success` means data was returned; `error` (e.g. user not found) is also HTTP 200.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    },
                    "msg": {
                      "type": "string"
                    },
                    "code": {
                      "type": "integer"
                    },
                    "data": {
                      "type": "object",
                      "properties": {
                        "articles": {
                          "type": "array",
                          "items": {
                            "$ref": "#/components/schemas/Tweet"
                          }
                        }
                      }
                    },
                    "has_next_page": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": "string",
                      "nullable": true
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid parameters (charged), or API key placed in the URL (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Account disabled (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Unknown endpoint (charged), or the requested item could not be found (not charged). Note: many endpoints report a missing user/tweet as HTTP 200 with `\"status\":\"error\"` instead; those are charged.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Only GET is supported (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem, or the endpoint is temporarily unavailable (not charged). Retry with exponential backoff.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/user/followers": {
      "get": {
        "operationId": "twitter_user_followers",
        "tags": [
          "Followers"
        ],
        "summary": "Get followers",
        "description": "Followers of a user with full profiles. Up to 100 per page. Paginated: use `cursor` / `next_cursor`.",
        "parameters": [
          {
            "name": "userName",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Screen name without the @, e.g. `NASA`.",
            "example": "NASA"
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Pagination cursor. Leave empty for the first page, then pass `next_cursor` from the previous response."
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 20,
              "maximum": 100,
              "default": 100
            },
            "description": "Items per page, 20 to 100 (default 100). Larger values are treated as 100, smaller as 20.",
            "example": 100
          }
        ],
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. Check `status`: `success` means data was returned; `error` (e.g. user not found) is also HTTP 200.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "followers": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/UserProfileSnake"
                      }
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "success",
                        "error"
                      ]
                    },
                    "msg": {
                      "type": "string"
                    },
                    "has_next_page": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": "string"
                    },
                    "code": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid parameters (charged), or API key placed in the URL (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Account disabled (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Unknown endpoint (charged), or the requested item could not be found (not charged). Note: many endpoints report a missing user/tweet as HTTP 200 with `\"status\":\"error\"` instead; those are charged.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Only GET is supported (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem, or the endpoint is temporarily unavailable (not charged). Retry with exponential backoff.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/user/followings": {
      "get": {
        "operationId": "twitter_user_followings",
        "tags": [
          "Followers"
        ],
        "summary": "Get followings",
        "description": "Accounts a user follows, with full profiles. Up to 100 per page. Paginated: use `cursor` / `next_cursor`.",
        "parameters": [
          {
            "name": "userName",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Screen name without the @, e.g. `NASA`.",
            "example": "NASA"
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Pagination cursor. Leave empty for the first page, then pass `next_cursor` from the previous response."
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 20,
              "maximum": 100,
              "default": 100
            },
            "description": "Items per page, 20 to 100 (default 100). Larger values are treated as 100, smaller as 20.",
            "example": 100
          }
        ],
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. Check `status`: `success` means data was returned; `error` (e.g. user not found) is also HTTP 200.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "followings": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/UserProfileSnake"
                      }
                    },
                    "has_next_page": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": "string"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "success",
                        "error"
                      ]
                    },
                    "msg": {
                      "type": "string"
                    },
                    "code": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid parameters (charged), or API key placed in the URL (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Account disabled (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Unknown endpoint (charged), or the requested item could not be found (not charged). Note: many endpoints report a missing user/tweet as HTTP 200 with `\"status\":\"error\"` instead; those are charged.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Only GET is supported (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem, or the endpoint is temporarily unavailable (not charged). Retry with exponential backoff.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/user/followers_ids": {
      "get": {
        "operationId": "twitter_user_followers_ids",
        "tags": [
          "Followers"
        ],
        "summary": "Get follower IDs",
        "description": "Follower user IDs only, 200 per page. Pass either `userName` or `userId`. Paginated: use `cursor` / `next_cursor`.",
        "parameters": [
          {
            "name": "userName",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Screen name without the @, e.g. `NASA`.",
            "example": "NASA"
          },
          {
            "name": "userId",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Numeric user ID, e.g. `11348282`."
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Pagination cursor. Leave empty for the first page, then pass `next_cursor` from the previous response."
          }
        ],
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. Check `status`: `success` means data was returned; `error` (e.g. user not found) is also HTTP 200.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ids": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "has_next_page": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": "string"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "success",
                        "error"
                      ]
                    },
                    "msg": {
                      "type": "string"
                    },
                    "code": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid parameters (charged), or API key placed in the URL (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Account disabled (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Unknown endpoint (charged), or the requested item could not be found (not charged). Note: many endpoints report a missing user/tweet as HTTP 200 with `\"status\":\"error\"` instead; those are charged.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Only GET is supported (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem, or the endpoint is temporarily unavailable (not charged). Retry with exponential backoff.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/user/verifiedFollowers": {
      "get": {
        "operationId": "twitter_user_verifiedFollowers",
        "tags": [
          "Followers"
        ],
        "summary": "Get verified followers",
        "description": "Verified followers of a user by numeric user ID. Paginated: use `cursor` / `next_cursor`.",
        "parameters": [
          {
            "name": "user_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Numeric user ID, e.g. `11348282`.",
            "example": "11348282"
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Pagination cursor. Leave empty for the first page, then pass `next_cursor` from the previous response."
          }
        ],
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. Check `status`: `success` means data was returned; `error` (e.g. user not found) is also HTTP 200.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "followers": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/UserProfileSnake"
                      }
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "success",
                        "error"
                      ]
                    },
                    "msg": {
                      "type": "string"
                    },
                    "has_next_page": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": "string"
                    },
                    "code": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid parameters (charged), or API key placed in the URL (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Account disabled (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Unknown endpoint (charged), or the requested item could not be found (not charged). Note: many endpoints report a missing user/tweet as HTTP 200 with `\"status\":\"error\"` instead; those are charged.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Only GET is supported (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem, or the endpoint is temporarily unavailable (not charged). Retry with exponential backoff.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/user/check_follow_relationship": {
      "get": {
        "operationId": "twitter_user_check_follow_relationship",
        "tags": [
          "Followers"
        ],
        "summary": "Check follow relationship",
        "description": "Whether two users follow each other.",
        "parameters": [
          {
            "name": "source_user_name",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Screen name of the first user.",
            "example": "NASA"
          },
          {
            "name": "target_user_name",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Screen name of the second user.",
            "example": "SpaceX"
          }
        ],
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. Check `status`: `success` means data was returned; `error` (e.g. user not found) is also HTTP 200.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "object",
                      "properties": {
                        "following": {
                          "type": "boolean"
                        },
                        "followed_by": {
                          "type": "boolean"
                        }
                      }
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "success",
                        "error"
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid parameters (charged), or API key placed in the URL (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Account disabled (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Unknown endpoint (charged), or the requested item could not be found (not charged). Note: many endpoints report a missing user/tweet as HTTP 200 with `\"status\":\"error\"` instead; those are charged.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Only GET is supported (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem, or the endpoint is temporarily unavailable (not charged). Retry with exponential backoff.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/tweets": {
      "get": {
        "operationId": "twitter_tweets",
        "tags": [
          "Tweets"
        ],
        "summary": "Get tweet by ID",
        "description": "One tweet by its numeric ID. Exactly one ID per request.",
        "parameters": [
          {
            "name": "tweet_ids",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]+$"
            },
            "description": "Exactly one numeric tweet ID per request.",
            "example": "1585341984679469056"
          }
        ],
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. Check `status`: `success` means data was returned; `error` (e.g. user not found) is also HTTP 200.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "tweets": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Tweet"
                      }
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "success",
                        "error"
                      ]
                    },
                    "msg": {
                      "type": "string"
                    },
                    "code": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "tweets",
                    "status",
                    "msg"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid parameters (charged), or API key placed in the URL (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Account disabled (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Unknown endpoint (charged), or the requested item could not be found (not charged). Note: many endpoints report a missing user/tweet as HTTP 200 with `\"status\":\"error\"` instead; those are charged.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Only GET is supported (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem, or the endpoint is temporarily unavailable (not charged). Retry with exponential backoff.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/tweet/advanced_search": {
      "get": {
        "operationId": "twitter_tweet_advanced_search",
        "tags": [
          "Tweets"
        ],
        "summary": "Advanced search",
        "description": "Search tweets with the X advanced search syntax, e.g. `from:NASA since:2026-01-01`. Paginated: use `cursor` / `next_cursor`.",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Search query.",
            "example": "from:NASA"
          },
          {
            "name": "queryType",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "Latest",
                "Top"
              ],
              "default": "Latest"
            },
            "description": "`Latest` or `Top`.",
            "example": "Latest"
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Pagination cursor. Leave empty for the first page, then pass `next_cursor` from the previous response."
          }
        ],
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. Returns the results directly, with no `status` field; no matches means an empty list.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "tweets": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Tweet"
                      }
                    },
                    "has_next_page": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "tweets",
                    "has_next_page",
                    "next_cursor"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid parameters (charged), or API key placed in the URL (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Account disabled (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Unknown endpoint (charged), or the requested item could not be found (not charged). Note: many endpoints report a missing user/tweet as HTTP 200 with `\"status\":\"error\"` instead; those are charged.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Only GET is supported (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem, or the endpoint is temporarily unavailable (not charged). Retry with exponential backoff.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/tweet/replies": {
      "get": {
        "operationId": "twitter_tweet_replies",
        "tags": [
          "Tweets"
        ],
        "summary": "Get tweet replies",
        "description": "Replies to a tweet. Paginated: use `cursor` / `next_cursor`.",
        "parameters": [
          {
            "name": "tweetId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Numeric tweet ID.",
            "example": "1585341984679469056"
          },
          {
            "name": "sinceTime",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "description": "Only items created at or after this Unix timestamp (seconds)."
          },
          {
            "name": "untilTime",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "description": "Only items created before this Unix timestamp (seconds)."
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Pagination cursor. Leave empty for the first page, then pass `next_cursor` from the previous response."
          }
        ],
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. Check `status`: `success` means data was returned; `error` (e.g. user not found) is also HTTP 200.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "tweets": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Tweet"
                      }
                    },
                    "has_next_page": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": "string"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "success",
                        "error"
                      ]
                    },
                    "msg": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid parameters (charged), or API key placed in the URL (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Account disabled (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Unknown endpoint (charged), or the requested item could not be found (not charged). Note: many endpoints report a missing user/tweet as HTTP 200 with `\"status\":\"error\"` instead; those are charged.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Only GET is supported (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem, or the endpoint is temporarily unavailable (not charged). Retry with exponential backoff.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/tweet/replies/v2": {
      "get": {
        "operationId": "twitter_tweet_replies_v2",
        "tags": [
          "Tweets"
        ],
        "summary": "Get tweet replies (sortable)",
        "description": "Replies to a tweet, with a choice of ordering via `queryType`. Paginated: use `cursor` / `next_cursor`.",
        "parameters": [
          {
            "name": "tweetId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Numeric tweet ID.",
            "example": "1585341984679469056"
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Pagination cursor. Leave empty for the first page, then pass `next_cursor` from the previous response."
          },
          {
            "name": "queryType",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "Relevance",
                "Latest",
                "Likes"
              ],
              "default": "Relevance"
            },
            "description": "Ordering: `Relevance` (default), `Latest` or `Likes`."
          }
        ],
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. Check `status`: `success` means data was returned; `error` (e.g. user not found) is also HTTP 200.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "tweets": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Tweet"
                      }
                    },
                    "has_next_page": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": "string"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "success",
                        "error"
                      ]
                    },
                    "msg": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid parameters (charged), or API key placed in the URL (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Account disabled (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Unknown endpoint (charged), or the requested item could not be found (not charged). Note: many endpoints report a missing user/tweet as HTTP 200 with `\"status\":\"error\"` instead; those are charged.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Only GET is supported (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem, or the endpoint is temporarily unavailable (not charged). Retry with exponential backoff.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/tweet/thread_context": {
      "get": {
        "operationId": "twitter_tweet_thread_context",
        "tags": [
          "Tweets"
        ],
        "summary": "Get thread context",
        "description": "The conversation thread a tweet belongs to. Paginated: use `cursor` / `next_cursor`.",
        "parameters": [
          {
            "name": "tweetId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Numeric tweet ID.",
            "example": "1585341984679469056"
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Pagination cursor. Leave empty for the first page, then pass `next_cursor` from the previous response."
          }
        ],
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. Check `status`: `success` means data was returned; `error` (e.g. user not found) is also HTTP 200.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "tweets": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Tweet"
                      }
                    },
                    "has_next_page": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": "string"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "success",
                        "error"
                      ]
                    },
                    "msg": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid parameters (charged), or API key placed in the URL (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Account disabled (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Unknown endpoint (charged), or the requested item could not be found (not charged). Note: many endpoints report a missing user/tweet as HTTP 200 with `\"status\":\"error\"` instead; those are charged.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Only GET is supported (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem, or the endpoint is temporarily unavailable (not charged). Retry with exponential backoff.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/tweet/quotes": {
      "get": {
        "operationId": "twitter_tweet_quotes",
        "tags": [
          "Tweets"
        ],
        "summary": "Get quote tweets",
        "description": "Tweets that quote a tweet. Paginated: use `cursor` / `next_cursor`.",
        "parameters": [
          {
            "name": "tweetId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Numeric tweet ID.",
            "example": "1585341984679469056"
          },
          {
            "name": "sinceTime",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "description": "Only items created at or after this Unix timestamp (seconds)."
          },
          {
            "name": "untilTime",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "description": "Only items created before this Unix timestamp (seconds)."
          },
          {
            "name": "includeReplies",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": true
            },
            "description": "Include replies (`true` / `false`)."
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Pagination cursor. Leave empty for the first page, then pass `next_cursor` from the previous response."
          }
        ],
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. Check `status`: `success` means data was returned; `error` (e.g. user not found) is also HTTP 200.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "tweets": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Tweet"
                      }
                    },
                    "has_next_page": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": "string"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "success",
                        "error"
                      ]
                    },
                    "msg": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid parameters (charged), or API key placed in the URL (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Account disabled (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Unknown endpoint (charged), or the requested item could not be found (not charged). Note: many endpoints report a missing user/tweet as HTTP 200 with `\"status\":\"error\"` instead; those are charged.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Only GET is supported (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem, or the endpoint is temporarily unavailable (not charged). Retry with exponential backoff.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/tweet/retweeters": {
      "get": {
        "operationId": "twitter_tweet_retweeters",
        "tags": [
          "Tweets"
        ],
        "summary": "Get retweeters",
        "description": "Users who retweeted a tweet. Paginated: use `cursor` / `next_cursor`.",
        "parameters": [
          {
            "name": "tweetId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Numeric tweet ID.",
            "example": "1585341984679469056"
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Pagination cursor. Leave empty for the first page, then pass `next_cursor` from the previous response."
          }
        ],
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. Returns the results directly, with no `status` field; no matches means an empty list.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "users": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/UserInfo"
                      }
                    },
                    "has_next_page": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid parameters (charged), or API key placed in the URL (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Account disabled (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Unknown endpoint (charged), or the requested item could not be found (not charged). Note: many endpoints report a missing user/tweet as HTTP 200 with `\"status\":\"error\"` instead; those are charged.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Only GET is supported (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem, or the endpoint is temporarily unavailable (not charged). Retry with exponential backoff.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/article": {
      "get": {
        "operationId": "twitter_article",
        "tags": [
          "Tweets"
        ],
        "summary": "Get article",
        "description": "An article (long-form post) by its tweet ID.",
        "parameters": [
          {
            "name": "tweet_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Numeric tweet ID.",
            "example": "2082071471548244406"
          }
        ],
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. Check `status`: `success` means data was returned; `error` (e.g. user not found) is also HTTP 200.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "article": {
                      "type": "object",
                      "properties": {
                        "author": {
                          "$ref": "#/components/schemas/UserInfo"
                        },
                        "replyCount": {
                          "type": "integer"
                        },
                        "likeCount": {
                          "type": "integer"
                        },
                        "quoteCount": {
                          "type": "integer"
                        },
                        "viewCount": {
                          "type": "integer"
                        },
                        "createdAt": {
                          "type": "string"
                        },
                        "title": {
                          "type": "string"
                        },
                        "preview_text": {
                          "type": "string"
                        },
                        "cover_media_img_url": {
                          "type": "string"
                        },
                        "contents": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string",
                                "enum": [
                                  "unstyled",
                                  "header-one",
                                  "header-two",
                                  "header-three",
                                  "unordered-list-item",
                                  "ordered-list-item",
                                  "image",
                                  "gif",
                                  "markdown",
                                  "divider"
                                ]
                              },
                              "text": {
                                "type": "string"
                              },
                              "url": {
                                "type": "string"
                              },
                              "previewUrl": {
                                "type": "string"
                              },
                              "width": {
                                "type": "integer"
                              },
                              "height": {
                                "type": "integer"
                              },
                              "inlineStyleRanges": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "offset": {
                                      "type": "integer"
                                    },
                                    "length": {
                                      "type": "integer"
                                    },
                                    "style": {
                                      "type": "string"
                                    }
                                  }
                                }
                              }
                            },
                            "required": [
                              "type"
                            ]
                          }
                        }
                      }
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "success",
                        "failed"
                      ]
                    },
                    "msg": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid parameters (charged), or API key placed in the URL (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Account disabled (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Unknown endpoint (charged), or the requested item could not be found (not charged). Note: many endpoints report a missing user/tweet as HTTP 200 with `\"status\":\"error\"` instead; those are charged.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Only GET is supported (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem, or the endpoint is temporarily unavailable (not charged). Retry with exponential backoff.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/list/tweets": {
      "get": {
        "operationId": "twitter_list_tweets",
        "tags": [
          "Lists"
        ],
        "summary": "Get list tweets",
        "description": "Tweets from members of a list. Paginated: use `cursor` / `next_cursor`.",
        "parameters": [
          {
            "name": "listId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Numeric list ID.",
            "example": "1953536336675365173"
          },
          {
            "name": "sinceTime",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "description": "Only items created at or after this Unix timestamp (seconds)."
          },
          {
            "name": "untilTime",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "description": "Only items created before this Unix timestamp (seconds)."
          },
          {
            "name": "includeReplies",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": true
            },
            "description": "Include replies (`true` / `false`)."
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Pagination cursor. Leave empty for the first page, then pass `next_cursor` from the previous response."
          }
        ],
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. Check `status`: `success` means data was returned; `error` (e.g. user not found) is also HTTP 200.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "tweets": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Tweet"
                      }
                    },
                    "has_next_page": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": "string"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "success",
                        "error"
                      ]
                    },
                    "msg": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid parameters (charged), or API key placed in the URL (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Account disabled (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Unknown endpoint (charged), or the requested item could not be found (not charged). Note: many endpoints report a missing user/tweet as HTTP 200 with `\"status\":\"error\"` instead; those are charged.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Only GET is supported (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem, or the endpoint is temporarily unavailable (not charged). Retry with exponential backoff.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/list/tweets_timeline": {
      "get": {
        "operationId": "twitter_list_tweets_timeline",
        "tags": [
          "Lists"
        ],
        "summary": "Get list timeline",
        "description": "Timeline of a list. Paginated: use `cursor` / `next_cursor`.",
        "parameters": [
          {
            "name": "listId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Numeric list ID.",
            "example": "1953536336675365173"
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Pagination cursor. Leave empty for the first page, then pass `next_cursor` from the previous response."
          }
        ],
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. Check `status`: `success` means data was returned; `error` (e.g. user not found) is also HTTP 200.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "tweets": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Tweet"
                      }
                    },
                    "has_next_page": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": "string"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "success",
                        "error"
                      ]
                    },
                    "msg": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "tweets",
                    "has_next_page",
                    "next_cursor"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid parameters (charged), or API key placed in the URL (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Account disabled (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Unknown endpoint (charged), or the requested item could not be found (not charged). Note: many endpoints report a missing user/tweet as HTTP 200 with `\"status\":\"error\"` instead; those are charged.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Only GET is supported (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem, or the endpoint is temporarily unavailable (not charged). Retry with exponential backoff.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/list/members": {
      "get": {
        "operationId": "twitter_list_members",
        "tags": [
          "Lists"
        ],
        "summary": "Get list members",
        "description": "Members of a list. Paginated: use `cursor` / `next_cursor`.",
        "parameters": [
          {
            "name": "list_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Numeric list ID.",
            "example": "1953536336675365173"
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Pagination cursor. Leave empty for the first page, then pass `next_cursor` from the previous response."
          }
        ],
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. Check `status`: `success` means data was returned; `error` (e.g. user not found) is also HTTP 200.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "members": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/UserInfo"
                      }
                    },
                    "has_next_page": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": "string"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "success",
                        "error"
                      ]
                    },
                    "msg": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid parameters (charged), or API key placed in the URL (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Account disabled (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Unknown endpoint (charged), or the requested item could not be found (not charged). Note: many endpoints report a missing user/tweet as HTTP 200 with `\"status\":\"error\"` instead; those are charged.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Only GET is supported (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem, or the endpoint is temporarily unavailable (not charged). Retry with exponential backoff.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/list/followers": {
      "get": {
        "operationId": "twitter_list_followers",
        "tags": [
          "Lists"
        ],
        "summary": "Get list followers",
        "description": "Followers of a list. Paginated: use `cursor` / `next_cursor`.",
        "parameters": [
          {
            "name": "list_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Numeric list ID.",
            "example": "1953536336675365173"
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Pagination cursor. Leave empty for the first page, then pass `next_cursor` from the previous response."
          }
        ],
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. Check `status`: `success` means data was returned; `error` (e.g. user not found) is also HTTP 200.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "followers": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/UserInfo"
                      }
                    },
                    "has_next_page": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": "string"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "success",
                        "error"
                      ]
                    },
                    "msg": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid parameters (charged), or API key placed in the URL (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Account disabled (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Unknown endpoint (charged), or the requested item could not be found (not charged). Note: many endpoints report a missing user/tweet as HTTP 200 with `\"status\":\"error\"` instead; those are charged.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Only GET is supported (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem, or the endpoint is temporarily unavailable (not charged). Retry with exponential backoff.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/community/info": {
      "get": {
        "operationId": "twitter_community_info",
        "tags": [
          "Communities"
        ],
        "summary": "Get community",
        "description": "Details of a community.",
        "parameters": [
          {
            "name": "community_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Numeric community ID.",
            "example": "1699807431709041070"
          }
        ],
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. Check `status`: `success` means data was returned; `error` (e.g. user not found) is also HTTP 200.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "community_info": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        },
                        "description": {
                          "type": "string"
                        },
                        "question": {
                          "type": "string"
                        },
                        "member_count": {
                          "type": "integer"
                        },
                        "moderator_count": {
                          "type": "integer"
                        },
                        "created_at": {
                          "type": "string"
                        },
                        "join_policy": {
                          "type": "string"
                        },
                        "invites_policy": {
                          "type": "string"
                        },
                        "is_nsfw": {
                          "type": "boolean"
                        },
                        "is_pinned": {
                          "type": "boolean"
                        },
                        "role": {
                          "type": "string"
                        },
                        "primary_topic": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string"
                            },
                            "name": {
                              "type": "string"
                            }
                          }
                        },
                        "banner_url": {
                          "type": "string"
                        },
                        "search_tags": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "rules": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              },
                              "description": {
                                "type": "string"
                              }
                            }
                          }
                        },
                        "creator": {
                          "$ref": "#/components/schemas/UserInfo"
                        },
                        "admin": {
                          "$ref": "#/components/schemas/UserInfo"
                        },
                        "members_preview": {
                          "type": "array",
                          "items": {
                            "type": "object"
                          }
                        }
                      }
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "success",
                        "error"
                      ]
                    },
                    "msg": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid parameters (charged), or API key placed in the URL (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Account disabled (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Unknown endpoint (charged), or the requested item could not be found (not charged). Note: many endpoints report a missing user/tweet as HTTP 200 with `\"status\":\"error\"` instead; those are charged.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Only GET is supported (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem, or the endpoint is temporarily unavailable (not charged). Retry with exponential backoff.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/community/members": {
      "get": {
        "operationId": "twitter_community_members",
        "tags": [
          "Communities"
        ],
        "summary": "Get community members",
        "description": "Members of a community. Paginated: use `cursor` / `next_cursor`.",
        "parameters": [
          {
            "name": "community_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Numeric community ID.",
            "example": "1699807431709041070"
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Pagination cursor. Leave empty for the first page, then pass `next_cursor` from the previous response."
          }
        ],
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. Check `status`: `success` means data was returned; `error` (e.g. user not found) is also HTTP 200.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "members": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/UserProfileSnake"
                      }
                    },
                    "has_next_page": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": "string"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "success",
                        "error"
                      ]
                    },
                    "msg": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid parameters (charged), or API key placed in the URL (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Account disabled (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Unknown endpoint (charged), or the requested item could not be found (not charged). Note: many endpoints report a missing user/tweet as HTTP 200 with `\"status\":\"error\"` instead; those are charged.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Only GET is supported (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem, or the endpoint is temporarily unavailable (not charged). Retry with exponential backoff.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/community/moderators": {
      "get": {
        "operationId": "twitter_community_moderators",
        "tags": [
          "Communities"
        ],
        "summary": "Get community moderators",
        "description": "Moderators of a community. Paginated: use `cursor` / `next_cursor`.",
        "parameters": [
          {
            "name": "community_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Numeric community ID.",
            "example": "1699807431709041070"
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Pagination cursor. Leave empty for the first page, then pass `next_cursor` from the previous response."
          }
        ],
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. Check `status`: `success` means data was returned; `error` (e.g. user not found) is also HTTP 200.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "has_next_page": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": "string"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "success",
                        "error"
                      ]
                    },
                    "msg": {
                      "type": "string"
                    },
                    "moderators": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/UserInfo"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid parameters (charged), or API key placed in the URL (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Account disabled (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Unknown endpoint (charged), or the requested item could not be found (not charged). Note: many endpoints report a missing user/tweet as HTTP 200 with `\"status\":\"error\"` instead; those are charged.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Only GET is supported (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem, or the endpoint is temporarily unavailable (not charged). Retry with exponential backoff.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/community/tweets": {
      "get": {
        "operationId": "twitter_community_tweets",
        "tags": [
          "Communities"
        ],
        "summary": "Get community tweets",
        "description": "Tweets posted in a community. Paginated: use `cursor` / `next_cursor`.",
        "parameters": [
          {
            "name": "community_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Numeric community ID.",
            "example": "1699807431709041070"
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Pagination cursor. Leave empty for the first page, then pass `next_cursor` from the previous response."
          }
        ],
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. Check `status`: `success` means data was returned; `error` (e.g. user not found) is also HTTP 200.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "tweets": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Tweet"
                      }
                    },
                    "has_next_page": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": "string"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "success",
                        "error"
                      ]
                    },
                    "msg": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid parameters (charged), or API key placed in the URL (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Account disabled (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Unknown endpoint (charged), or the requested item could not be found (not charged). Note: many endpoints report a missing user/tweet as HTTP 200 with `\"status\":\"error\"` instead; those are charged.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Only GET is supported (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem, or the endpoint is temporarily unavailable (not charged). Retry with exponential backoff.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/community/get_tweets_from_all_community": {
      "get": {
        "operationId": "twitter_community_get_tweets_from_all_community",
        "tags": [
          "Communities"
        ],
        "summary": "Search tweets across communities",
        "description": "Search tweets posted in any community. Paginated: use `cursor` / `next_cursor`.",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Search query.",
            "example": "machine learning"
          },
          {
            "name": "queryType",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "Latest",
                "Top"
              ],
              "default": "Latest"
            },
            "description": "`Latest` or `Top`.",
            "example": "Latest"
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "string"
            },
            "description": "Pagination cursor. Leave empty for the first page, then pass `next_cursor` from the previous response."
          }
        ],
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. Returns the results directly, with no `status` field; no matches means an empty list.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "tweets": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Tweet"
                      }
                    },
                    "has_next_page": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "tweets",
                    "has_next_page",
                    "next_cursor"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid parameters (charged), or API key placed in the URL (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Account disabled (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Unknown endpoint (charged), or the requested item could not be found (not charged). Note: many endpoints report a missing user/tweet as HTTP 200 with `\"status\":\"error\"` instead; those are charged.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Only GET is supported (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem, or the endpoint is temporarily unavailable (not charged). Retry with exponential backoff.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/trends": {
      "get": {
        "operationId": "twitter_trends",
        "tags": [
          "Trends"
        ],
        "summary": "Get trends",
        "description": "Trending topics for a location.",
        "parameters": [
          {
            "name": "woeid",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "description": "Location WOEID, e.g. `1` for worldwide, `23424977` for the United States.",
            "example": 1
          },
          {
            "name": "count",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "description": "Number of trends to return."
          }
        ],
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. Check `status`: `success` means data was returned; `error` (e.g. user not found) is also HTTP 200.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "trends": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "trend": {
                            "type": "object",
                            "properties": {
                              "name": {
                                "type": "string"
                              },
                              "target": {
                                "type": "object",
                                "properties": {
                                  "query": {
                                    "type": "string"
                                  }
                                }
                              },
                              "rank": {
                                "type": "integer"
                              }
                            }
                          }
                        }
                      }
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "success",
                        "error"
                      ]
                    },
                    "msg": {
                      "type": "string"
                    },
                    "metadata": {
                      "type": "object",
                      "properties": {
                        "timestamp": {
                          "type": "integer"
                        },
                        "refresh_interval_millis": {
                          "type": "integer"
                        },
                        "woeid": {
                          "type": "object"
                        },
                        "context_mode": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid parameters (charged), or API key placed in the URL (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Account disabled (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Unknown endpoint (charged), or the requested item could not be found (not charged). Note: many endpoints report a missing user/tweet as HTTP 200 with `\"status\":\"error\"` instead; those are charged.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Only GET is supported (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem, or the endpoint is temporarily unavailable (not charged). Retry with exponential backoff.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/user_login_v2": {
      "post": {
        "operationId": "twitter_user_login_v2",
        "tags": [
          "Account actions"
        ],
        "summary": "Log in to an X account",
        "description": "Logs in to an X account and returns `login_cookies`, which every other account action needs. Log in once and reuse `login_cookies` (and the same proxy) until it stops working; logging in repeatedly can get the account locked. Takes 10-25 seconds. Providing `totp_secret` (two-factor key) is strongly recommended, otherwise the credential may not be allowed to post. At most 10 logins per 10 minutes per API account and 3 per 10 minutes per X user name.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "user_name",
                  "email",
                  "password",
                  "proxy"
                ],
                "properties": {
                  "user_name": {
                    "type": "string",
                    "description": "X screen name of the account, without the @."
                  },
                  "email": {
                    "type": "string",
                    "description": "Email address of the X account."
                  },
                  "password": {
                    "type": "string",
                    "description": "Password of the X account. Used for this login only; we do not store it."
                  },
                  "totp_secret": {
                    "type": "string",
                    "description": "Two-factor authentication secret (the key behind the authenticator app code). Strongly recommended."
                  },
                  "proxy": {
                    "type": "string",
                    "description": "Proxy for this X account, in the form `scheme://user:pass@host:port` where scheme is `http`, `https`, `socks5` or `socks4`. Use the same proxy for every request of the account. Must be a public address; a residential proxy is recommended."
                  }
                }
              }
            }
          }
        },
        "x-price-per-request": "$0.1",
        "responses": {
          "200": {
            "description": "Charged. `\"status\": \"success\"` means the action was done; `\"status\": \"error\"` means X rejected it and `message` says why.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "login_cookies": {
                      "type": "string"
                    },
                    "status": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or invalid fields (not charged). The message names the field; your values are never echoed back.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Wrong HTTP method (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request body too large (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, including the per-X-account and login limits (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem (not charged). If it says the request timed out, the action may already have been applied on X: check before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/create_tweet_v2": {
      "post": {
        "operationId": "twitter_create_tweet_v2",
        "tags": [
          "Account actions"
        ],
        "summary": "Post a tweet or reply",
        "description": "Posts a tweet as the logged-in account. Set `reply_to_tweet_id` to reply. Attach images or videos with `media_ids` from *Upload media*. At most 5 per minute per X account.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "login_cookies",
                  "tweet_text",
                  "proxy"
                ],
                "properties": {
                  "login_cookies": {
                    "type": "string",
                    "description": "The `login_cookies` value returned by *Log in to an X account*. Send the same value with every action for that account."
                  },
                  "tweet_text": {
                    "type": "string",
                    "description": "Text of the tweet."
                  },
                  "reply_to_tweet_id": {
                    "type": "string",
                    "description": "Numeric ID of the tweet to reply to."
                  },
                  "attachment_url": {
                    "type": "string",
                    "description": "URL of a tweet to quote, or another link to attach."
                  },
                  "community_id": {
                    "type": "string",
                    "description": "Numeric ID of a community to post in."
                  },
                  "is_note_tweet": {
                    "type": "boolean",
                    "description": "Set to `true` for a long post (more than 280 characters, needs X Premium)."
                  },
                  "media_ids": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "Media IDs returned by *Upload media*."
                  },
                  "proxy": {
                    "type": "string",
                    "description": "Proxy for this X account, in the form `scheme://user:pass@host:port` where scheme is `http`, `https`, `socks5` or `socks4`. Use the same proxy for every request of the account. Must be a public address; a residential proxy is recommended."
                  }
                }
              }
            }
          }
        },
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. `\"status\": \"success\"` means the action was done; `\"status\": \"error\"` means X rejected it and `message` says why.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "tweet_id": {
                      "type": "string"
                    },
                    "status": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or invalid fields (not charged). The message names the field; your values are never echoed back.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Wrong HTTP method (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request body too large (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, including the per-X-account and login limits (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem (not charged). If it says the request timed out, the action may already have been applied on X: check before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/delete_tweet_v2": {
      "post": {
        "operationId": "twitter_delete_tweet_v2",
        "tags": [
          "Account actions"
        ],
        "summary": "Delete a tweet",
        "description": "Deletes one of the account's own tweets.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "login_cookies",
                  "tweet_id",
                  "proxy"
                ],
                "properties": {
                  "login_cookies": {
                    "type": "string",
                    "description": "The `login_cookies` value returned by *Log in to an X account*. Send the same value with every action for that account."
                  },
                  "tweet_id": {
                    "type": "string",
                    "description": "Numeric tweet ID."
                  },
                  "proxy": {
                    "type": "string",
                    "description": "Proxy for this X account, in the form `scheme://user:pass@host:port` where scheme is `http`, `https`, `socks5` or `socks4`. Use the same proxy for every request of the account. Must be a public address; a residential proxy is recommended."
                  }
                }
              }
            }
          }
        },
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. `\"status\": \"success\"` means the action was done; `\"status\": \"error\"` means X rejected it and `message` says why.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or invalid fields (not charged). The message names the field; your values are never echoed back.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Wrong HTTP method (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request body too large (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, including the per-X-account and login limits (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem (not charged). If it says the request timed out, the action may already have been applied on X: check before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/like_tweet_v2": {
      "post": {
        "operationId": "twitter_like_tweet_v2",
        "tags": [
          "Account actions"
        ],
        "summary": "Like a tweet",
        "description": "Likes a tweet. Liking an already-liked tweet returns success.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "login_cookies",
                  "tweet_id",
                  "proxy"
                ],
                "properties": {
                  "login_cookies": {
                    "type": "string",
                    "description": "The `login_cookies` value returned by *Log in to an X account*. Send the same value with every action for that account."
                  },
                  "tweet_id": {
                    "type": "string",
                    "description": "Numeric tweet ID."
                  },
                  "proxy": {
                    "type": "string",
                    "description": "Proxy for this X account, in the form `scheme://user:pass@host:port` where scheme is `http`, `https`, `socks5` or `socks4`. Use the same proxy for every request of the account. Must be a public address; a residential proxy is recommended."
                  }
                }
              }
            }
          }
        },
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. `\"status\": \"success\"` means the action was done; `\"status\": \"error\"` means X rejected it and `message` says why.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or invalid fields (not charged). The message names the field; your values are never echoed back.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Wrong HTTP method (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request body too large (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, including the per-X-account and login limits (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem (not charged). If it says the request timed out, the action may already have been applied on X: check before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/unlike_tweet_v2": {
      "post": {
        "operationId": "twitter_unlike_tweet_v2",
        "tags": [
          "Account actions"
        ],
        "summary": "Unlike a tweet",
        "description": "Removes a like.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "login_cookies",
                  "tweet_id",
                  "proxy"
                ],
                "properties": {
                  "login_cookies": {
                    "type": "string",
                    "description": "The `login_cookies` value returned by *Log in to an X account*. Send the same value with every action for that account."
                  },
                  "tweet_id": {
                    "type": "string",
                    "description": "Numeric tweet ID."
                  },
                  "proxy": {
                    "type": "string",
                    "description": "Proxy for this X account, in the form `scheme://user:pass@host:port` where scheme is `http`, `https`, `socks5` or `socks4`. Use the same proxy for every request of the account. Must be a public address; a residential proxy is recommended."
                  }
                }
              }
            }
          }
        },
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. `\"status\": \"success\"` means the action was done; `\"status\": \"error\"` means X rejected it and `message` says why.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or invalid fields (not charged). The message names the field; your values are never echoed back.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Wrong HTTP method (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request body too large (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, including the per-X-account and login limits (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem (not charged). If it says the request timed out, the action may already have been applied on X: check before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/retweet_tweet_v2": {
      "post": {
        "operationId": "twitter_retweet_tweet_v2",
        "tags": [
          "Account actions"
        ],
        "summary": "Retweet",
        "description": "Retweets a tweet. Retweeting again returns success.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "login_cookies",
                  "tweet_id",
                  "proxy"
                ],
                "properties": {
                  "login_cookies": {
                    "type": "string",
                    "description": "The `login_cookies` value returned by *Log in to an X account*. Send the same value with every action for that account."
                  },
                  "tweet_id": {
                    "type": "string",
                    "description": "Numeric tweet ID."
                  },
                  "proxy": {
                    "type": "string",
                    "description": "Proxy for this X account, in the form `scheme://user:pass@host:port` where scheme is `http`, `https`, `socks5` or `socks4`. Use the same proxy for every request of the account. Must be a public address; a residential proxy is recommended."
                  }
                }
              }
            }
          }
        },
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. `\"status\": \"success\"` means the action was done; `\"status\": \"error\"` means X rejected it and `message` says why.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or invalid fields (not charged). The message names the field; your values are never echoed back.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Wrong HTTP method (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request body too large (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, including the per-X-account and login limits (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem (not charged). If it says the request timed out, the action may already have been applied on X: check before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/unretweet_tweet_v2": {
      "post": {
        "operationId": "twitter_unretweet_tweet_v2",
        "tags": [
          "Account actions"
        ],
        "summary": "Undo retweet",
        "description": "Undoes a retweet. Undoing a tweet that was not retweeted also returns success.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "login_cookies",
                  "tweet_id",
                  "proxy"
                ],
                "properties": {
                  "login_cookies": {
                    "type": "string",
                    "description": "The `login_cookies` value returned by *Log in to an X account*. Send the same value with every action for that account."
                  },
                  "tweet_id": {
                    "type": "string",
                    "description": "Numeric tweet ID."
                  },
                  "proxy": {
                    "type": "string",
                    "description": "Proxy for this X account, in the form `scheme://user:pass@host:port` where scheme is `http`, `https`, `socks5` or `socks4`. Use the same proxy for every request of the account. Must be a public address; a residential proxy is recommended."
                  }
                }
              }
            }
          }
        },
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. `\"status\": \"success\"` means the action was done; `\"status\": \"error\"` means X rejected it and `message` says why.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "x_status": {
                      "type": "integer"
                    },
                    "code": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or invalid fields (not charged). The message names the field; your values are never echoed back.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Wrong HTTP method (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request body too large (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, including the per-X-account and login limits (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem (not charged). If it says the request timed out, the action may already have been applied on X: check before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/pin_tweet_v2": {
      "post": {
        "operationId": "twitter_pin_tweet_v2",
        "tags": [
          "Account actions"
        ],
        "summary": "Pin a tweet",
        "description": "Pins one of the account's own tweets to its profile. Pinning someone else's tweet returns an error.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "login_cookies",
                  "tweet_id",
                  "proxy"
                ],
                "properties": {
                  "login_cookies": {
                    "type": "string",
                    "description": "The `login_cookies` value returned by *Log in to an X account*. Send the same value with every action for that account."
                  },
                  "tweet_id": {
                    "type": "string",
                    "description": "Numeric tweet ID."
                  },
                  "proxy": {
                    "type": "string",
                    "description": "Proxy for this X account, in the form `scheme://user:pass@host:port` where scheme is `http`, `https`, `socks5` or `socks4`. Use the same proxy for every request of the account. Must be a public address; a residential proxy is recommended."
                  }
                }
              }
            }
          }
        },
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. `\"status\": \"success\"` means the action was done; `\"status\": \"error\"` means X rejected it and `message` says why.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "x_status": {
                      "type": "integer"
                    },
                    "code": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or invalid fields (not charged). The message names the field; your values are never echoed back.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Wrong HTTP method (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request body too large (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, including the per-X-account and login limits (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem (not charged). If it says the request timed out, the action may already have been applied on X: check before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/unpin_tweet_v2": {
      "post": {
        "operationId": "twitter_unpin_tweet_v2",
        "tags": [
          "Account actions"
        ],
        "summary": "Unpin a tweet",
        "description": "Unpins a tweet from the profile.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "login_cookies",
                  "tweet_id",
                  "proxy"
                ],
                "properties": {
                  "login_cookies": {
                    "type": "string",
                    "description": "The `login_cookies` value returned by *Log in to an X account*. Send the same value with every action for that account."
                  },
                  "tweet_id": {
                    "type": "string",
                    "description": "Numeric tweet ID."
                  },
                  "proxy": {
                    "type": "string",
                    "description": "Proxy for this X account, in the form `scheme://user:pass@host:port` where scheme is `http`, `https`, `socks5` or `socks4`. Use the same proxy for every request of the account. Must be a public address; a residential proxy is recommended."
                  }
                }
              }
            }
          }
        },
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. `\"status\": \"success\"` means the action was done; `\"status\": \"error\"` means X rejected it and `message` says why.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "x_status": {
                      "type": "integer"
                    },
                    "code": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or invalid fields (not charged). The message names the field; your values are never echoed back.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Wrong HTTP method (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request body too large (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, including the per-X-account and login limits (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem (not charged). If it says the request timed out, the action may already have been applied on X: check before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/bookmark_tweet_v2": {
      "post": {
        "operationId": "twitter_bookmark_tweet_v2",
        "tags": [
          "Account actions"
        ],
        "summary": "Bookmark a tweet",
        "description": "Adds a tweet to the account's bookmarks.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "login_cookies",
                  "tweet_id",
                  "proxy"
                ],
                "properties": {
                  "login_cookies": {
                    "type": "string",
                    "description": "The `login_cookies` value returned by *Log in to an X account*. Send the same value with every action for that account."
                  },
                  "tweet_id": {
                    "type": "string",
                    "description": "Numeric tweet ID."
                  },
                  "proxy": {
                    "type": "string",
                    "description": "Proxy for this X account, in the form `scheme://user:pass@host:port` where scheme is `http`, `https`, `socks5` or `socks4`. Use the same proxy for every request of the account. Must be a public address; a residential proxy is recommended."
                  }
                }
              }
            }
          }
        },
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. `\"status\": \"success\"` means the action was done; `\"status\": \"error\"` means X rejected it and `message` says why.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or invalid fields (not charged). The message names the field; your values are never echoed back.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Wrong HTTP method (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request body too large (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, including the per-X-account and login limits (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem (not charged). If it says the request timed out, the action may already have been applied on X: check before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/unbookmark_tweet_v2": {
      "post": {
        "operationId": "twitter_unbookmark_tweet_v2",
        "tags": [
          "Account actions"
        ],
        "summary": "Remove a bookmark",
        "description": "Removes a tweet from the account's bookmarks.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "login_cookies",
                  "tweet_id",
                  "proxy"
                ],
                "properties": {
                  "login_cookies": {
                    "type": "string",
                    "description": "The `login_cookies` value returned by *Log in to an X account*. Send the same value with every action for that account."
                  },
                  "tweet_id": {
                    "type": "string",
                    "description": "Numeric tweet ID."
                  },
                  "proxy": {
                    "type": "string",
                    "description": "Proxy for this X account, in the form `scheme://user:pass@host:port` where scheme is `http`, `https`, `socks5` or `socks4`. Use the same proxy for every request of the account. Must be a public address; a residential proxy is recommended."
                  }
                }
              }
            }
          }
        },
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. `\"status\": \"success\"` means the action was done; `\"status\": \"error\"` means X rejected it and `message` says why.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or invalid fields (not charged). The message names the field; your values are never echoed back.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Wrong HTTP method (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request body too large (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, including the per-X-account and login limits (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem (not charged). If it says the request timed out, the action may already have been applied on X: check before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/bookmarks_v2": {
      "post": {
        "operationId": "twitter_bookmarks_v2",
        "tags": [
          "Account actions"
        ],
        "summary": "Get bookmarks",
        "description": "The account's own bookmarks. Paginated: use `cursor` / `next_cursor`.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "login_cookies",
                  "proxy"
                ],
                "properties": {
                  "login_cookies": {
                    "type": "string",
                    "description": "The `login_cookies` value returned by *Log in to an X account*. Send the same value with every action for that account."
                  },
                  "proxy": {
                    "type": "string",
                    "description": "Proxy for this X account, in the form `scheme://user:pass@host:port` where scheme is `http`, `https`, `socks5` or `socks4`. Use the same proxy for every request of the account. Must be a public address; a residential proxy is recommended."
                  },
                  "count": {
                    "type": "integer",
                    "default": 20,
                    "description": "Number of items per page."
                  },
                  "cursor": {
                    "type": "string",
                    "description": "Pagination cursor. Leave empty for the first page, then pass `next_cursor` from the previous response."
                  }
                }
              }
            }
          }
        },
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. `\"status\": \"success\"` means the action was done; `\"status\": \"error\"` means X rejected it and `message` says why.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "tweets": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Tweet"
                      }
                    },
                    "has_next_page": {
                      "type": "boolean"
                    },
                    "next_cursor": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "tweets",
                    "has_next_page",
                    "next_cursor"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Missing or invalid fields (not charged). The message names the field; your values are never echoed back.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Wrong HTTP method (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request body too large (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, including the per-X-account and login limits (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem (not charged). If it says the request timed out, the action may already have been applied on X: check before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/follow_user_v2": {
      "post": {
        "operationId": "twitter_follow_user_v2",
        "tags": [
          "Account actions"
        ],
        "summary": "Follow a user",
        "description": "Follows a user by numeric user ID (or sends a follow request to a protected account). Following again returns success. At most 15 per minute per X account.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "login_cookies",
                  "user_id",
                  "proxy"
                ],
                "properties": {
                  "login_cookies": {
                    "type": "string",
                    "description": "The `login_cookies` value returned by *Log in to an X account*. Send the same value with every action for that account."
                  },
                  "user_id": {
                    "type": "string",
                    "description": "Numeric user ID of the target user."
                  },
                  "proxy": {
                    "type": "string",
                    "description": "Proxy for this X account, in the form `scheme://user:pass@host:port` where scheme is `http`, `https`, `socks5` or `socks4`. Use the same proxy for every request of the account. Must be a public address; a residential proxy is recommended."
                  }
                }
              }
            }
          }
        },
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. `\"status\": \"success\"` means the action was done; `\"status\": \"error\"` means X rejected it and `message` says why.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or invalid fields (not charged). The message names the field; your values are never echoed back.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Wrong HTTP method (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request body too large (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, including the per-X-account and login limits (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem (not charged). If it says the request timed out, the action may already have been applied on X: check before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/unfollow_user_v2": {
      "post": {
        "operationId": "twitter_unfollow_user_v2",
        "tags": [
          "Account actions"
        ],
        "summary": "Unfollow a user",
        "description": "Unfollows a user by numeric user ID. At most 15 per minute per X account.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "login_cookies",
                  "user_id",
                  "proxy"
                ],
                "properties": {
                  "login_cookies": {
                    "type": "string",
                    "description": "The `login_cookies` value returned by *Log in to an X account*. Send the same value with every action for that account."
                  },
                  "user_id": {
                    "type": "string",
                    "description": "Numeric user ID of the target user."
                  },
                  "proxy": {
                    "type": "string",
                    "description": "Proxy for this X account, in the form `scheme://user:pass@host:port` where scheme is `http`, `https`, `socks5` or `socks4`. Use the same proxy for every request of the account. Must be a public address; a residential proxy is recommended."
                  }
                }
              }
            }
          }
        },
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. `\"status\": \"success\"` means the action was done; `\"status\": \"error\"` means X rejected it and `message` says why.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or invalid fields (not charged). The message names the field; your values are never echoed back.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Wrong HTTP method (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request body too large (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, including the per-X-account and login limits (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem (not charged). If it says the request timed out, the action may already have been applied on X: check before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/mute_user_v2": {
      "post": {
        "operationId": "twitter_mute_user_v2",
        "tags": [
          "Account actions"
        ],
        "summary": "Mute a user",
        "description": "Mutes a user by numeric user ID.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "login_cookies",
                  "user_id",
                  "proxy"
                ],
                "properties": {
                  "login_cookies": {
                    "type": "string",
                    "description": "The `login_cookies` value returned by *Log in to an X account*. Send the same value with every action for that account."
                  },
                  "user_id": {
                    "type": "string",
                    "description": "Numeric user ID of the target user."
                  },
                  "proxy": {
                    "type": "string",
                    "description": "Proxy for this X account, in the form `scheme://user:pass@host:port` where scheme is `http`, `https`, `socks5` or `socks4`. Use the same proxy for every request of the account. Must be a public address; a residential proxy is recommended."
                  }
                }
              }
            }
          }
        },
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. `\"status\": \"success\"` means the action was done; `\"status\": \"error\"` means X rejected it and `message` says why.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "x_status": {
                      "type": "integer"
                    },
                    "code": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or invalid fields (not charged). The message names the field; your values are never echoed back.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Wrong HTTP method (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request body too large (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, including the per-X-account and login limits (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem (not charged). If it says the request timed out, the action may already have been applied on X: check before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/unmute_user_v2": {
      "post": {
        "operationId": "twitter_unmute_user_v2",
        "tags": [
          "Account actions"
        ],
        "summary": "Unmute a user",
        "description": "Unmutes a user.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "login_cookies",
                  "user_id",
                  "proxy"
                ],
                "properties": {
                  "login_cookies": {
                    "type": "string",
                    "description": "The `login_cookies` value returned by *Log in to an X account*. Send the same value with every action for that account."
                  },
                  "user_id": {
                    "type": "string",
                    "description": "Numeric user ID of the target user."
                  },
                  "proxy": {
                    "type": "string",
                    "description": "Proxy for this X account, in the form `scheme://user:pass@host:port` where scheme is `http`, `https`, `socks5` or `socks4`. Use the same proxy for every request of the account. Must be a public address; a residential proxy is recommended."
                  }
                }
              }
            }
          }
        },
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. `\"status\": \"success\"` means the action was done; `\"status\": \"error\"` means X rejected it and `message` says why.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "x_status": {
                      "type": "integer"
                    },
                    "code": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or invalid fields (not charged). The message names the field; your values are never echoed back.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Wrong HTTP method (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request body too large (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, including the per-X-account and login limits (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem (not charged). If it says the request timed out, the action may already have been applied on X: check before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/block_user_v2": {
      "post": {
        "operationId": "twitter_block_user_v2",
        "tags": [
          "Account actions"
        ],
        "summary": "Block a user",
        "description": "Blocks a user by numeric user ID. Blocking also removes follows in both directions; unblocking does not restore them.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "login_cookies",
                  "user_id",
                  "proxy"
                ],
                "properties": {
                  "login_cookies": {
                    "type": "string",
                    "description": "The `login_cookies` value returned by *Log in to an X account*. Send the same value with every action for that account."
                  },
                  "user_id": {
                    "type": "string",
                    "description": "Numeric user ID of the target user."
                  },
                  "proxy": {
                    "type": "string",
                    "description": "Proxy for this X account, in the form `scheme://user:pass@host:port` where scheme is `http`, `https`, `socks5` or `socks4`. Use the same proxy for every request of the account. Must be a public address; a residential proxy is recommended."
                  }
                }
              }
            }
          }
        },
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. `\"status\": \"success\"` means the action was done; `\"status\": \"error\"` means X rejected it and `message` says why.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "x_status": {
                      "type": "integer"
                    },
                    "code": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or invalid fields (not charged). The message names the field; your values are never echoed back.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Wrong HTTP method (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request body too large (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, including the per-X-account and login limits (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem (not charged). If it says the request timed out, the action may already have been applied on X: check before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/unblock_user_v2": {
      "post": {
        "operationId": "twitter_unblock_user_v2",
        "tags": [
          "Account actions"
        ],
        "summary": "Unblock a user",
        "description": "Unblocks a user.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "login_cookies",
                  "user_id",
                  "proxy"
                ],
                "properties": {
                  "login_cookies": {
                    "type": "string",
                    "description": "The `login_cookies` value returned by *Log in to an X account*. Send the same value with every action for that account."
                  },
                  "user_id": {
                    "type": "string",
                    "description": "Numeric user ID of the target user."
                  },
                  "proxy": {
                    "type": "string",
                    "description": "Proxy for this X account, in the form `scheme://user:pass@host:port` where scheme is `http`, `https`, `socks5` or `socks4`. Use the same proxy for every request of the account. Must be a public address; a residential proxy is recommended."
                  }
                }
              }
            }
          }
        },
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. `\"status\": \"success\"` means the action was done; `\"status\": \"error\"` means X rejected it and `message` says why.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "x_status": {
                      "type": "integer"
                    },
                    "code": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or invalid fields (not charged). The message names the field; your values are never echoed back.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Wrong HTTP method (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request body too large (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, including the per-X-account and login limits (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem (not charged). If it says the request timed out, the action may already have been applied on X: check before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/send_dm_to_user": {
      "post": {
        "operationId": "twitter_send_dm_to_user",
        "tags": [
          "Account actions"
        ],
        "summary": "Send a direct message",
        "description": "Sends a direct message to a user who accepts messages from the account. At most 5 per minute per X account.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "login_cookies",
                  "user_id",
                  "text",
                  "proxy"
                ],
                "properties": {
                  "login_cookies": {
                    "type": "string",
                    "description": "The `login_cookies` value returned by *Log in to an X account*. Send the same value with every action for that account."
                  },
                  "user_id": {
                    "type": "string",
                    "description": "Numeric user ID of the target user."
                  },
                  "text": {
                    "type": "string",
                    "description": "Message text."
                  },
                  "media_id": {
                    "type": "string",
                    "description": "Media ID returned by *Upload media*, to attach to the message."
                  },
                  "proxy": {
                    "type": "string",
                    "description": "Proxy for this X account, in the form `scheme://user:pass@host:port` where scheme is `http`, `https`, `socks5` or `socks4`. Use the same proxy for every request of the account. Must be a public address; a residential proxy is recommended."
                  },
                  "reply_to_message_id": {
                    "type": "string",
                    "description": "ID of the message to reply to."
                  }
                }
              }
            }
          }
        },
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. `\"status\": \"success\"` means the action was done; `\"status\": \"error\"` means X rejected it and `message` says why.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message_id": {
                      "type": "string"
                    },
                    "status": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or invalid fields (not charged). The message names the field; your values are never echoed back.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Wrong HTTP method (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request body too large (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, including the per-X-account and login limits (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem (not charged). If it says the request timed out, the action may already have been applied on X: check before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/upload_media_v2": {
      "post": {
        "operationId": "twitter_upload_media_v2",
        "tags": [
          "Account actions"
        ],
        "summary": "Upload media",
        "description": "Uploads an image or video (`multipart/form-data`, field `file`, at most 100 MB) and returns a `media_id` to use in *Post a tweet or reply*. Large videos can take up to a minute.",
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "required": [
                  "login_cookies",
                  "proxy",
                  "file"
                ],
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary",
                    "description": "The file to upload."
                  },
                  "proxy": {
                    "type": "string",
                    "description": "Proxy for this X account, in the form `scheme://user:pass@host:port` where scheme is `http`, `https`, `socks5` or `socks4`. Use the same proxy for every request of the account. Must be a public address; a residential proxy is recommended."
                  },
                  "login_cookies": {
                    "type": "string",
                    "description": "The `login_cookies` value returned by *Log in to an X account*. Send the same value with every action for that account."
                  },
                  "is_long_video": {
                    "type": "boolean",
                    "description": "Set to `true` for videos longer than 140 seconds (needs X Premium)."
                  }
                }
              }
            }
          }
        },
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. `\"status\": \"success\"` means the action was done; `\"status\": \"error\"` means X rejected it and `message` says why.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "media_id": {
                      "type": "string"
                    },
                    "status": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "processing_state": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or invalid fields (not charged). The message names the field; your values are never echoed back.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Wrong HTTP method (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request body too large (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, including the per-X-account and login limits (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem (not charged). If it says the request timed out, the action may already have been applied on X: check before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/update_profile_v2": {
      "patch": {
        "operationId": "twitter_update_profile_v2",
        "tags": [
          "Account actions"
        ],
        "summary": "Update profile",
        "description": "Updates the account's name, bio, location or website. Only the fields you send are changed.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "login_cookies",
                  "proxy"
                ],
                "properties": {
                  "login_cookies": {
                    "type": "string",
                    "description": "The `login_cookies` value returned by *Log in to an X account*. Send the same value with every action for that account."
                  },
                  "proxy": {
                    "type": "string",
                    "description": "Proxy for this X account, in the form `scheme://user:pass@host:port` where scheme is `http`, `https`, `socks5` or `socks4`. Use the same proxy for every request of the account. Must be a public address; a residential proxy is recommended."
                  },
                  "name": {
                    "type": "string",
                    "description": "Display name."
                  },
                  "description": {
                    "type": "string",
                    "description": "Bio."
                  },
                  "location": {
                    "type": "string",
                    "description": "Location text."
                  },
                  "url": {
                    "type": "string",
                    "description": "Website URL."
                  }
                }
              }
            }
          }
        },
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. `\"status\": \"success\"` means the action was done; `\"status\": \"error\"` means X rejected it and `message` says why.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or invalid fields (not charged). The message names the field; your values are never echoed back.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Wrong HTTP method (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request body too large (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, including the per-X-account and login limits (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem (not charged). If it says the request timed out, the action may already have been applied on X: check before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/update_avatar_v2": {
      "patch": {
        "operationId": "twitter_update_avatar_v2",
        "tags": [
          "Account actions"
        ],
        "summary": "Update profile photo",
        "description": "Replaces the profile photo (`multipart/form-data`, field `file`, at most 2 MB).",
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "required": [
                  "login_cookies",
                  "proxy",
                  "file"
                ],
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary",
                    "description": "The file to upload."
                  },
                  "proxy": {
                    "type": "string",
                    "description": "Proxy for this X account, in the form `scheme://user:pass@host:port` where scheme is `http`, `https`, `socks5` or `socks4`. Use the same proxy for every request of the account. Must be a public address; a residential proxy is recommended."
                  },
                  "login_cookies": {
                    "type": "string",
                    "description": "The `login_cookies` value returned by *Log in to an X account*. Send the same value with every action for that account."
                  }
                }
              }
            }
          }
        },
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. `\"status\": \"success\"` means the action was done; `\"status\": \"error\"` means X rejected it and `message` says why.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or invalid fields (not charged). The message names the field; your values are never echoed back.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Wrong HTTP method (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request body too large (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, including the per-X-account and login limits (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem (not charged). If it says the request timed out, the action may already have been applied on X: check before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/twitter/update_banner_v2": {
      "patch": {
        "operationId": "twitter_update_banner_v2",
        "tags": [
          "Account actions"
        ],
        "summary": "Update header image",
        "description": "Replaces the header image (`multipart/form-data`, field `file`, at most 3 MB).",
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "required": [
                  "login_cookies",
                  "proxy",
                  "file"
                ],
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary",
                    "description": "The file to upload."
                  },
                  "proxy": {
                    "type": "string",
                    "description": "Proxy for this X account, in the form `scheme://user:pass@host:port` where scheme is `http`, `https`, `socks5` or `socks4`. Use the same proxy for every request of the account. Must be a public address; a residential proxy is recommended."
                  },
                  "login_cookies": {
                    "type": "string",
                    "description": "The `login_cookies` value returned by *Log in to an X account*. Send the same value with every action for that account."
                  }
                }
              }
            }
          }
        },
        "x-price-per-request": "$0.0006",
        "responses": {
          "200": {
            "description": "Charged. `\"status\": \"success\"` means the action was done; `\"status\": \"error\"` means X rejected it and `message` says why.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Missing or invalid fields (not charged). The message names the field; your values are never echoed back.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "Insufficient balance (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "405": {
            "description": "Wrong HTTP method (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "413": {
            "description": "Request body too large (not charged).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded, including the per-X-account and login limits (not charged). Retry after the time in the `Retry-After` header.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "Temporary service problem (not charged). If it says the request timed out, the action may already have been applied on X: check before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "ApiKey": {
        "type": "apiKey",
        "in": "header",
        "name": "x-api-key"
      }
    },
    "schemas": {
      "Error": {
        "type": "object",
        "required": [
          "status",
          "msg"
        ],
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "error"
            ]
          },
          "msg": {
            "type": "string",
            "example": "Invalid API key."
          }
        }
      },
      "Tweet": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "tweet"
            ]
          },
          "id": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "text": {
            "type": "string"
          },
          "source": {
            "type": "string"
          },
          "retweetCount": {
            "type": "integer"
          },
          "replyCount": {
            "type": "integer"
          },
          "likeCount": {
            "type": "integer"
          },
          "quoteCount": {
            "type": "integer"
          },
          "viewCount": {
            "type": "integer"
          },
          "createdAt": {
            "type": "string"
          },
          "lang": {
            "type": "string"
          },
          "bookmarkCount": {
            "type": "integer"
          },
          "isReply": {
            "type": "boolean"
          },
          "inReplyToId": {
            "type": "string"
          },
          "conversationId": {
            "type": "string"
          },
          "displayTextRange": {
            "type": "array",
            "items": {
              "type": "integer"
            }
          },
          "inReplyToUserId": {
            "type": "string"
          },
          "inReplyToUsername": {
            "type": "string"
          },
          "author": {
            "$ref": "#/components/schemas/UserInfo"
          },
          "entities": {
            "$ref": "#/components/schemas/TweetEntities"
          },
          "quoted_tweet": {
            "$ref": "#/components/schemas/Tweet"
          },
          "retweeted_tweet": {
            "$ref": "#/components/schemas/Tweet"
          },
          "isLimitedReply": {
            "type": "boolean"
          }
        }
      },
      "TweetEntities": {
        "type": "object",
        "properties": {
          "hashtags": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "indices": {
                  "type": "array",
                  "items": {
                    "type": "integer"
                  }
                },
                "text": {
                  "type": "string"
                }
              }
            }
          },
          "urls": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "display_url": {
                  "type": "string"
                },
                "expanded_url": {
                  "type": "string"
                },
                "indices": {
                  "type": "array",
                  "items": {
                    "type": "integer"
                  }
                },
                "url": {
                  "type": "string"
                }
              }
            }
          },
          "user_mentions": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id_str": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "screen_name": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "UserAbout": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "userName": {
            "type": "string"
          },
          "createdAt": {
            "type": "string"
          },
          "isBlueVerified": {
            "type": "boolean"
          },
          "protected": {
            "type": "boolean"
          },
          "affiliates_highlighted_label": {
            "type": "object",
            "properties": {
              "label": {
                "type": "object",
                "properties": {
                  "badge": {
                    "type": "object",
                    "properties": {
                      "url": {
                        "type": "string"
                      }
                    }
                  },
                  "description": {
                    "type": "string"
                  },
                  "url": {
                    "type": "object",
                    "properties": {
                      "url": {
                        "type": "string"
                      },
                      "urlType": {
                        "type": "string"
                      }
                    }
                  },
                  "userLabelDisplayType": {
                    "type": "string"
                  },
                  "userLabelType": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "about_profile": {
            "type": "object",
            "properties": {
              "account_based_in": {
                "type": "string"
              },
              "location_accurate": {
                "type": "boolean"
              },
              "learn_more_url": {
                "type": "string"
              },
              "affiliate_username": {
                "type": "string"
              },
              "source": {
                "type": "string"
              },
              "username_changes": {
                "type": "object",
                "properties": {
                  "count": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "identity_profile_labels_highlighted_label": {
            "type": "object",
            "properties": {
              "label": {
                "type": "object",
                "properties": {
                  "description": {
                    "type": "string"
                  },
                  "badge": {
                    "type": "object",
                    "properties": {
                      "url": {
                        "type": "string"
                      }
                    }
                  },
                  "url": {
                    "type": "object",
                    "properties": {
                      "url": {
                        "type": "string"
                      },
                      "urlType": {
                        "type": "string"
                      }
                    }
                  },
                  "userLabelDisplayType": {
                    "type": "string"
                  },
                  "userLabelType": {
                    "type": "string"
                  }
                }
              }
            }
          }
        }
      },
      "UserInfo": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "user"
            ]
          },
          "userName": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "isBlueVerified": {
            "type": "boolean"
          },
          "protected": {
            "type": "boolean"
          },
          "verifiedType": {
            "type": "string"
          },
          "profilePicture": {
            "type": "string"
          },
          "coverPicture": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "followers": {
            "type": "integer"
          },
          "following": {
            "type": "integer"
          },
          "canDm": {
            "type": "boolean"
          },
          "createdAt": {
            "type": "string"
          },
          "favouritesCount": {
            "type": "integer"
          },
          "hasCustomTimelines": {
            "type": "boolean"
          },
          "isTranslator": {
            "type": "boolean"
          },
          "mediaCount": {
            "type": "integer"
          },
          "statusesCount": {
            "type": "integer"
          },
          "withheldInCountries": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "affiliatesHighlightedLabel": {
            "type": "object"
          },
          "possiblySensitive": {
            "type": "boolean"
          },
          "pinnedTweetIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "isAutomated": {
            "type": "boolean"
          },
          "automatedBy": {
            "type": "string"
          },
          "unavailable": {
            "type": "boolean"
          },
          "message": {
            "type": "string"
          },
          "unavailableReason": {
            "type": "string"
          },
          "profile_bio": {
            "type": "object",
            "properties": {
              "description": {
                "type": "string"
              },
              "entities": {
                "type": "object",
                "properties": {
                  "description": {
                    "type": "object",
                    "properties": {
                      "urls": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "display_url": {
                              "type": "string"
                            },
                            "expanded_url": {
                              "type": "string"
                            },
                            "indices": {
                              "type": "array",
                              "items": {
                                "type": "integer"
                              }
                            },
                            "url": {
                              "type": "string"
                            }
                          }
                        }
                      }
                    }
                  },
                  "url": {
                    "type": "object",
                    "properties": {
                      "urls": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "display_url": {
                              "type": "string"
                            },
                            "expanded_url": {
                              "type": "string"
                            },
                            "indices": {
                              "type": "array",
                              "items": {
                                "type": "integer"
                              }
                            },
                            "url": {
                              "type": "string"
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "UserProfileSnake": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "screen_name": {
            "type": "string"
          },
          "userName": {
            "type": "string"
          },
          "username": {
            "type": "string",
            "nullable": true
          },
          "location": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string"
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "protected": {
            "type": "boolean"
          },
          "verified": {
            "type": "boolean"
          },
          "isBlueVerified": {
            "type": "boolean"
          },
          "followers_count": {
            "type": "integer"
          },
          "following_count": {
            "type": "integer"
          },
          "friends_count": {
            "type": "integer"
          },
          "favourites_count": {
            "type": "integer"
          },
          "statuses_count": {
            "type": "integer"
          },
          "media_tweets_count": {
            "type": "integer"
          },
          "created_at": {
            "type": "string"
          },
          "profile_banner_url": {
            "type": "string"
          },
          "profile_image_url_https": {
            "type": "string"
          },
          "can_dm": {
            "type": "boolean"
          }
        }
      }
    }
  }
}