Search Recent Posts
twitter.search_recent
ActionChat & messagingconnection required
Calls the X (Twitter) API with the connection's credentials.
Search public posts from the last 7 days. Needs a paid X plan — this is the endpoint a free or metered account most often cannot call.
Connection
- Required
- Yes — the node will not save without one
- Auth type
- Bearer token
- Providers
- X (Twitter)
- Secret shape
- the X OAuth2 user-context access token, or {"access_token": "…"}
- Resolved by
- config.connection_id, else node.connection_id
Configuration
14 fields, 1 required. A dotted path is a nested object and name[] an array of objects — the editor renders the same tree.
| Field | Type | Required | Default | Constraints | Example |
|---|---|---|---|---|---|
query An X search query, e.g. 'from:mantlehq -is:retweet has:links'. Max 4096 chars. | string | Yes | — | 1–4096 characters | from:xdevelopers -is:retweet |
max_results Posts per page, 10 to 100. | number | No | 10 | 10–100 | — |
start_time Oldest post to consider, ISO 8601. Must be within the last 7 days. | string | No | — | iso8601 format | — |
end_time Newest post to consider, ISO 8601. | string | No | — | iso8601 format | — |
since_id Return posts newer than this post id. | string | No | — | — | — |
until_id Return posts older than this post id. | string | No | — | — | — |
sort_order Order of the results. X defaults to recency. | string | No | — | one of "recency", "relevancy" | — |
next_token Cursor from a previous page's 'next_token'; leave blank for the first page. | string | No | — | — | — |
post_fields Comma-separated Post fields to include, e.g. created_at,public_metrics,author_id. Without this X returns only id and text. | string | No | — | — | — |
expansions Comma-separated expansions to resolve into 'includes', e.g. author_id,attachments.media_keys. | string | No | — | — | — |
user_fields Comma-separated User fields to include, e.g. created_at,description,public_metrics. Without this X returns only id, name and username. | string | No | — | — | — |
media_fields Comma-separated Media fields for expanded media, e.g. url,alt_text,type. | string | No | — | — | — |
poll_fields Comma-separated Poll fields for an expanded poll, e.g. options,end_datetime. | string | No | — | — | — |
place_fields Comma-separated Place fields for an expanded geo.place_id, e.g. full_name,country. | string | No | — | — | — |
Example configuration
Every value below is the contract’s own example or default — nothing invented.
{
"max_results": 10,
"query": "from:xdevelopers -is:retweet"
}Output
One shape.
result
| Field | Type | Example |
|---|---|---|
posts The Post objects on this page. | array | — |
count How many posts this page carried. | number | — |
next_token Cursor for the next page; empty on the last one. | string | — |
result_count The result count X reported in meta. | number | — |
includes Objects pulled in by 'expansions' — users, media, polls, places. Empty when none asked for. | object | — |
newest_id Id of the newest post on this page. | string | — |
oldest_id Id of the oldest post on this page. | string | — |
{
"count": 0,
"includes": {},
"newest_id": "",
"next_token": "",
"oldest_id": "",
"posts": [],
"result_count": 0
}Notes
- X API access is tiered and metered: most read endpoints need a paid plan, and since 6 February 2026 new developers get pay-per-use credits rather than a free tier. A 403 here usually means the plan, not the code.
- The connection's access token must already carry the scopes this node needs; X does not grant them per call, so a missing scope is a 401 on every run.
- Needs the OAuth2 scopes tweet.read, users.read.
- Recent search covers 7 days only; anything older needs the full-archive endpoint, which is enterprise-only and not wired up here.
See Search Recent Posts run in a workflow.
In a technical demo we add the X (Twitter) connection, drop the node on the canvas and let Workflow Health pre-flight it before the first real run.