X (Twitter) Timeline API reference
A page of recent public posts from an X account, with a cursor. Takes a public URL, returns a cursor page, 1 credit a call.
This named API keeps X fields in X's own vocabulary. For a higher-level product page, see X (Twitter) Timeline API.
Endpoint
GET /v1/x/posts
Authorization: Bearer sv_live_... `POST` is also accepted with the same parameters in the request body. Send the key in the `Authorization` header, never in the query string.
Parameters
| Name | Type | Required | Notes |
|---|---|---|---|
url | string | yes | Public X URL matching this API's input. |
cursor | string | no | Cursor returned by the previous page. |
limit | integer | no | Maximum items to return, up to 50. |
Sample Request
This is a copyable request shape. Replace the sample values with the public X target or parameters your workflow uses.
curl -G 'https://api.sourcevine.io/v1/x/posts' \
-H 'Authorization: Bearer sv_live_...' \
--data-urlencode 'url=https://x.com/X' \
--data-urlencode 'limit=20' Sample Response
A response this API returned, against the target above. Your values depend on the resource you ask about and when you ask.
{
"data": {
"items": [
{
"url": "https://x.com/X/status/2093829017128374366",
"text": "RT @bot: Grok Bot now has improved support for X!\n\nWhen you connect your X profile, a developer account will be automatically created with…",
"likes": 0,
"views": 53859,
"cached": false,
"quotes": 0,
"replies": 0,
"tweetId": "2093829017128374366",
"retweets": 365,
"bookmarks": 0,
"fetchedAt": "2026-09-02T07:12:46Z",
"authorLink": "https://x.com/X",
"publishedAt": "Sat Aug 29 22:31:53 +0000 2026",
"authorHandle": "X",
"cacheAgeSeconds": null,
"sourceTimestamp": null
},
{
"url": "https://x.com/X/status/2092764677805609060",
"text": "just landed, just for you 🚀\n\naccess NFL Gametime on X by going to Home, add the NFL Timeline then open the NFL Gametime Hub for live scores, play-by-play and the game feed https://t.co/UCQhbtTnSP",
"likes": 2091,
"views": 1033502,
"cached": false,
"quotes": 51,
"replies": 366,
"tweetId": "2092764677805609060",
"retweets": 246,
"bookmarks": 270,
"fetchedAt": "2026-09-02T07:12:46Z",
"authorLink": "https://x.com/X",
"publishedAt": "Thu Aug 27 00:02:35 +0000 2026",
"authorHandle": "X",
"cacheAgeSeconds": null,
"sourceTimestamp": null
},
{
"url": "https://x.com/X/status/2091277720470646919",
"text": "RT @singhai: In early June, we added Mark Certificate to all emails sent from 𝕏.\n\nPlease do not engage with emails that are missing the blu…",
"likes": 0,
"views": 55611,
"cached": false,
"quotes": 0,
"replies": 0,
"tweetId": "2091277720470646919",
"retweets": 117,
"bookmarks": 0,
"fetchedAt": "2026-09-02T07:12:46Z",
"authorLink": "https://x.com/X",
"publishedAt": "Sat Aug 22 21:33:57 +0000 2026",
"authorHandle": "X",
"cacheAgeSeconds": null,
"sourceTimestamp": null
}
],
"cached": false,
"fetchedAt": null,
"nextCursor": null,
"cacheAgeSeconds": null
},
"success": true,
"available": true
} Fields
| Field | Type | Notes |
|---|---|---|
items | array | A page of public X posts or videos. |
nextCursor | string | null | Pass as cursor to request the next page. |
items[].views | integer | null | Present only where the platform reports it. |
items[].likes | integer | null | Per-item public like count. |
items[].cached | boolean | Matches the page provenance on cached reads. |
fetchedAt | ISO datetime | When Sourcevine read the public page. |
sourceTimestamp | ISO datetime | null | The platform timestamp when it is available. |
cached | boolean | True when this answer repeats an identical request made moments earlier. |
cacheAgeSeconds | integer | Seconds since the reading was taken. |
Availability States
| Status | Charged | Client behavior |
|---|---|---|
available | yes for live reads | Use data. |
not_found | yes | Store the state and stop polling. |
private | yes | Store the state and stop polling. |
unsupported | no | Fix the URL or call the matching API. |
upstream_unavailable | no | Retry later with backoff. |
Unavailable resources return `success: true`, `available: false`, `availability`, and `data: null`. API or authentication failures return `success: false` with an `error` object.
Billing
A call costs 1 credit. A deleted, private or empty resource is charged like any lookup and says so. An unsupported URL or a read we could not complete is not charged. The `X-Credits-Charged` response header is the source of truth for what happened on that request.
Successful responses include `fetchedAt`, the time we read the platform.
What This API Does Not Return
- No contact or bio fields: Bios, email addresses, phone numbers, postal addresses and messenger handles are outside the response contract.
- No private data: Private accounts, restricted content and unavailable resources return typed availability instead of guessed data.
- No comments or downloads: List APIs return recent public post metadata and metrics. They do not return comment bodies, media files or hidden analytics.
Related
- X API hub
- X (Twitter) Timeline API product page
- Quickstart
- Credits and billing
- X (Twitter) Post Stats API reference
- X (Twitter) Profile API reference
- X (Twitter) Search API reference
- X (Twitter) Replies API reference
Last updated 1 September 2026