Skip to content

Clarify Documentation to explain that Basic Tier is required to avoid rate limiting errors #40

@0xRabbidfly

Description

@0xRabbidfly

Free Tier only allows 1 endpoint interaction / 15 mins
Basic Tier costs $200/month (really pricey for a basic twitter bot)
Question: can we avoid fetching the home timeline at startup? I used 67 of 100 monthly allocated posts with that initial fetch.

Steps to reproduce:

  1. Create new Project on X developer portal using readme instructions
  2. i started with a fairly basic configuration

`# Basic Configuration
TWITTER_DRY_RUN=true # Set to true to test without posting
TWITTER_ENABLE_POST=true # Enable autonomous tweet posting
TWITTER_ENABLE_REPLIES=true # Enable mention and reply handling
TWITTER_ENABLE_ACTIONS=false # Enable timeline actions (likes, retweets, quotes)
TWITTER_ENABLE_DISCOVERY=false

Optional: Posting Configuration

TWITTER_POST_IMMEDIATELY=true # Post on startup (great for testing)
TWITTER_POST_INTERVAL=120 # Minutes between posts (default: 120)

For more natural timing, use MIN/MAX intervals:

TWITTER_POST_INTERVAL_MIN=90 # Minimum minutes between posts
TWITTER_POST_INTERVAL_MAX=150 # Maximum minutes between posts`

  1. Ran elizaos dev to startup the project. An agent i created has the twitter plugin added.
  2. Got a 429 rate limiting error right away and web client

`Startup successful!
Go to the dashboard at http://localhost:3000
AgentServer is listening on port 3000
[2025-08-15 13:53:45] INFO: Final plugins being loaded:
plugins: [
"@elizaos/plugin-sql",
"openai",
"twitter",
"bootstrap"
]
[2025-08-15 13:53:45] INFO: Initializing character
[2025-08-15 13:53:45] INFO: Name: Eliza
[2025-08-15 13:53:45] INFO: plugin-sql init starting...
[2025-08-15 13:53:45] INFO: Database adapter created and registered
[2025-08-15 13:53:46] INFO: Twitter posting is DISABLED - set TWITTER_ENABLE_POST=true to enable automatic posting
[2025-08-15 13:53:46] INFO: Twitter replies/interactions are ENABLED
[2025-08-15 13:53:46] INFO: Twitter timeline actions are DISABLED
[2025-08-15 13:53:46] INFO: Twitter discovery service is DISABLED - set TWITTER_ENABLE_DISCOVERY=true to enable
[2025-08-15 09:53:45.765 -0400] INFO: Running plugin migrations...
agentName: "Eliza"
logLevel: "info"
[2025-08-15 09:53:45.765 -0400] INFO: Found 1 plugins with schemas to migrate.
agentName: "Eliza"
logLevel: "info"
[2025-08-15 09:53:45.765 -0400] INFO: Running migrations for plugin: @elizaos/plugin-sql
agentName: "Eliza"
logLevel: "info"
[2025-08-15 09:53:45.765 -0400] INFO: Successfully migrated plugin: @elizaos/plugin-sql
agentName: "Eliza"
logLevel: "info"
[2025-08-15 09:53:45.765 -0400] INFO: Plugin migrations completed.
agentName: "Eliza"
logLevel: "info"
[2025-08-15 13:53:46] INFO: Successfully authenticated with Twitter API v2
[2025-08-15 13:54:01] INFO: Twitter interaction client will check in 30.0 minutes
[2025-08-15 13:54:01] INFO: [Eliza] MessageBusService: Subscribing to internal message bus for 'new_message', 'message_deleted', and 'channel_cleared' events.
[2025-08-15 13:54:01] WARN: DatabaseMigrationService not found - plugin schema migrations skipped
[2025-08-15 13:54:01] INFO: [Eliza] MessageBusService: Agent is subscribed to 1 servers (including default server)
[2025-08-15 13:54:01] INFO: [Eliza] MessageBusService: Fetched 10 channels from server 00000000-0000-0000-0000-000000000000
[2025-08-15 13:54:01] INFO: [Eliza] MessageBusService: Loaded 10 valid channel IDs from 1 servers (including default server)
[2025-08-15 13:54:01] INFO: [AgentServer] Automatically registered MessageBusConnector for agent Eliza
[2025-08-15 13:54:01] INFO: [AgentServer] Auto-associated agent Eliza with server ID: 00000000-0000-0000-0000-000000000000
Search error: 99 | }
100 | else {
101 | errorString += ' - ' + this.formatV2Error(data);
102 | }
103 | }
104 | return new types_1.ApiResponseError(errorString, {
^
error: Request failed with code 429
error: true,
type: "response",
code: 429,
headers: {
date: "Fri, 15 Aug 2025 13:54:01 GMT",
"content-type": "application/json; charset=utf-8",
"content-length": "94",
connection: "keep-alive",
"cache-control": "no-cache, no-store, max-age=0",
"x-frame-options": "SAMEORIGIN",
"content-encoding": "gzip",
"x-xss-protection": "0",
"content-disposition": "attachment; filename=json.json",
"x-content-type-options": "nosniff",
"strict-transport-security": "max-age=631138519; includeSubdomains",
vary: "accept-encoding",
"set-cookie": [ "guest_id_marketing=v1%3A175526604097220534; Max-Age=63072000; Expires=Sun, 15 Aug 2027 13:54:00 GMT; Path=/; Domain=.x.com; Secure; SameSite=None",
"guest_id_ads=v1%3A175526604097220534; Max-Age=63072000; Expires=Sun, 15 Aug 2027 13:54:00 GMT; Path=/; Domain=.x.com; Secure; SameSite=None",
"personalization_id="v1_+11Ta4SKgZE3fqMkKBsp+A=="; Max-Age=63072000; Expires=Sun, 15 Aug 2027 13:54:00 GMT; Path=/; Domain=.x.com; Secure; SameSite=None",
"guest_id=v1%3A175526604097220534; Max-Age=63072000; Expires=Sun, 15 Aug 2027 13:54:00 GMT; Path=/; Domain=.x.com; Secure; SameSite=None",
"__cf_bm=o3e9_t7zNMuWs339SrcvPoFbvnjkGWXjpY3lOwhKdt4-1755266041-1.0.1.1-6fTC2v4VlAgNVEDHBC3Qojdbd3uf9InzZL294bmuwdcSL30Hl_Eh_5PETheTuSWg1LkbtlfgikluszIeUA2AxVbF7yMfw7lbHGNmGva3gp8; path=/; expires=Fri, 15-Aug-25 14:24:01 GMT; domain=.x.com; HttpOnly; Secure; SameSite=None"
],
"cf-ray": "96f92e73ee25ac5d-YYZ",
perf: "7402827104",
"api-version": "2.146",
"x-access-level": "read-write",
"x-transaction-id": "0d190ecee24dc975",
"x-rate-limit-limit": "1",
"x-rate-limit-reset": "1755266926",
"x-rate-limit-remaining": "0",
"x-response-time": "15",
"x-connection-hash": "0e2ade72914cf48a0fabc23b70a9f9ae1b31856a619df97b596949a24a5aa49a",
"cf-cache-status": "DYNAMIC",
server: "cloudflare tsa_b",
},
rateLimit: {
limit: 1,
remaining: 0,
reset: 1755266926,
},
data: {
title: "Too Many Requests",
detail: "Too Many Requests",
type: "about:blank",
status: 429,
},

  at createResponseError (/mnt/z/Projects/eliza/regcheck-8/node_modules/twitter-api-v2/dist/cjs/client-mixins/request-handler.helper.js:104:16)
  at onResponseEndHandler (/mnt/z/Projects/eliza/regcheck-8/node_modules/twitter-api-v2/dist/cjs/client-mixins/request-handler.helper.js:262:25)
  at emit (node:events:92:22)
  at endReadableNT (internal:streams/readable:862:50)

[2025-08-15 13:54:01] ERROR: Error fetching search tweets:
message: "(Error) Request failed with code 429"
stack: [
"Error: Request failed with code 429",
"at createResponseError (/mnt/z/Projects/eliza/regcheck-8/node_modules/twitter-api-v2/dist/cjs/client-mixins/request-handler.helper.js:104:28)",
"at onResponseEndHandler (/mnt/z/Projects/eliza/regcheck-8/node_modules/twitter-api-v2/dist/cjs/client-mixins/request-handler.helper.js:262:25)",
"at emit (node:events:92:22)",
"at endReadableNT (internal:streams/readable:862:50)",
"at processTicksAndRejections (native:7:39)"
]
[2025-08-15 13:54:01] INFO: Processing 0 of 0 mention tweets (max: 10)`

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions