Properties
| Name | Type | Description |
|---|---|---|
| data | array | |
| nextCursor | stringnull | Pass as cursor for the next page; null on the last page |
| previousCursor | stringnull | X's top cursor, for polling newer items |
| hasNextPage | boolean |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/twittrapi-com/json-schema/twittrapi-com-tweet-page-schema.json",
"title": "TweetPage",
"description": "Simple format: a page of tweets",
"x-generated": "2026-10-31",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/twittrapi-com-openapi.json#/components/schemas/TweetPage",
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/$defs/Tweet"
}
},
"nextCursor": {
"type": [
"string",
"null"
],
"description": "Pass as cursor for the next page; null on the last page"
},
"previousCursor": {
"type": [
"string",
"null"
],
"description": "X's top cursor, for polling newer items"
},
"hasNextPage": {
"type": "boolean"
}
},
"required": [
"data",
"nextCursor",
"previousCursor",
"hasNextPage"
],
"$defs": {
"Article": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"previewText": {
"type": [
"string",
"null"
]
},
"coverImageUrl": {
"type": [
"string",
"null"
]
},
"publishedAt": {
"type": [
"string",
"null"
]
},
"text": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"title",
"previewText",
"coverImageUrl",
"publishedAt",
"text"
]
},
"Media": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"photo",
"video",
"gif"
]
},
"url": {
"type": "string",
"description": "Photos: the image. Videos and GIFs: the MP4 with the highest bitrate."
},
"previewUrl": {
"type": "string",
"description": "The image (poster frame for videos)"
},
"width": {
"type": "integer"
},
"height": {
"type": "integer"
},
"altText": {
"type": [
"string",
"null"
]
},
"durationMs": {
"type": [
"integer",
"null"
],
"description": "Videos only"
}
},
"required": [
"type",
"url",
"previewUrl",
"width",
"height",
"altText",
"durationMs"
]
},
"Tweet": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"url": {
"type": "string",
"description": "https://x.com/<username>/status/<id>"
},
"text": {
"type": "string",
"description": "Full text, t.co links replaced by their targets"
},
"createdAt": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"lang": {
"type": [
"string",
"null"
]
},
"author": {
"anyOf": [
{
"$ref": "#/$defs/User"
},
{
"type": "null"
}
]
},
"counts": {
"type": "object",
"properties": {
"likes": {
"type": "integer"
},
"retweets": {
"type": "integer"
},
"replies": {
"type": "integer"
},
"quotes": {
"type": "integer"
},
"bookmarks": {
"type": "integer"
},
"views": {
"type": [
"integer",
"null"
]
}
},
"required": [
"likes",
"retweets",
"replies",
"quotes",
"bookmarks",
"views"
]
},
"media": {
"type": "array",
"items": {
"$ref": "#/$defs/Media"
}
},
"urls": {
"type": "array",
"items": {
"type": "string"
}
},
"hashtags": {
"type": "array",
"items": {
"type": "string"
}
},
"mentions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"username": {
"type": "string"
}
},
"required": [
"id",
"username"
]
}
},
"replyTo": {
"anyOf": [
{
"type": "object",
"properties": {
"tweetId": {
"type": "string"
},
"userId": {
"type": "string"
},
"username": {
"type": "string"
}
},
"required": [
"tweetId",
"userId",
"username"
]
},
{
"type": "null"
}
]
},
"quoted": {
"anyOf": [
{
"$ref": "#/$defs/Tweet"
},
{
"$ref": "#/$defs/UnavailableTweet"
},
{
"type": "null"
}
]
},
"retweetOf": {
"anyOf": [
{
"$ref": "#/$defs/Tweet"
},
{
"type": "null"
}
]
},
"conversationId": {
"type": [
"string",
"null"
]
},
"isPinned": {
"type": "boolean"
},
"source": {
"type": [
"string",
"null"
]
},
"article": {
"anyOf": [
{
"$ref": "#/$defs/Article"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"url",
"text",
"createdAt",
"lang",
"author",
"counts",
"media",
"urls",
"hashtags",
"mentions",
"replyTo",
"quoted",
"retweetOf",
"conversationId",
"isPinned",
"source",
"article"
]
},
"UnavailableTweet": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"unavailable": {
"type": "boolean",
"const": true
}
},
"required": [
"id",
"unavailable"
],
"description": "A tweet X did not return (deleted, suspended author, withheld)."
},
"User": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"username": {
"type": "string",
"description": "Handle without @"
},
"name": {
"type": "string",
"description": "Display name"
},
"description": {
"type": "string",
"description": "Bio, t.co links expanded"
},
"location": {
"type": "string"
},
"url": {
"type": [
"string",
"null"
],
"description": "Website, expanded"
},
"createdAt": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"avatarUrl": {
"type": [
"string",
"null"
]
},
"bannerUrl": {
"type": [
"string",
"null"
]
},
"verified": {
"type": "boolean",
"description": "Blue check"
},
"verifiedType": {
"type": [
"string",
"null"
],
"description": "e.g. Business or Government"
},
"protected": {
"type": "boolean",
"description": "Private account"
},
"counts": {
"type": "object",
"properties": {
"followers": {
"type": "integer"
},
"following": {
"type": "integer"
},
"tweets": {
"type": "integer"
},
"likes": {
"type": "integer"
},
"media": {
"type": "integer"
},
"listed": {
"type": "integer"
}
},
"required": [
"followers",
"following",
"tweets",
"likes",
"media",
"listed"
]
},
"pinnedTweetIds": {
"type": "array",
"items": {
"type": "string"
}
},
"isAutomated": {
"type": "boolean"
}
},
"required": [
"id",
"username",
"name",
"description",
"location",
"url",
"createdAt",
"avatarUrl",
"bannerUrl",
"verified",
"verifiedType",
"protected",
"counts",
"pinnedTweetIds",
"isAutomated"
]
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/twittrapi-com-tweet-page"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.