{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/metricool/main/json-schema/metricool-tweet-schema.json",
  "title": "Tweet",
  "x-generated": "2026-10-14",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/_original/metricool-api-openapi.json#/components/schemas/Tweet",
  "type": "object",
  "properties": {
    "blogId": {
      "type": "integer",
      "format": "int32"
    },
    "id": {
      "type": "integer",
      "format": "int64"
    },
    "idStr": {
      "type": "string"
    },
    "userId": {
      "type": "integer",
      "format": "int64"
    },
    "createdAt": {
      "type": "string",
      "format": "date-time"
    },
    "text": {
      "type": "string"
    },
    "updatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "favoriteCount": {
      "type": "integer",
      "format": "int32"
    },
    "retweetCount": {
      "type": "integer",
      "format": "int32"
    },
    "linkClicks": {
      "type": "integer",
      "format": "int32"
    },
    "promoted": {
      "type": "boolean"
    },
    "metricsV2": {
      "type": "object",
      "additionalProperties": {
        "type": "object"
      }
    },
    "userName": {
      "type": "string"
    },
    "screenName": {
      "type": "string"
    },
    "followers": {
      "type": "integer",
      "format": "int64"
    },
    "impressions": {
      "type": "integer",
      "format": "int64"
    },
    "imageUrl": {
      "type": "string"
    },
    "timestamp": {
      "type": "integer",
      "format": "int64"
    },
    "source": {
      "type": "string"
    },
    "interactions": {
      "type": "integer",
      "format": "int64"
    },
    "engagement": {
      "type": "number",
      "format": "double"
    },
    "picture": {
      "type": "string"
    },
    "ownerPicture": {
      "type": "string"
    },
    "hasVideo": {
      "type": "boolean"
    },
    "hasPhoto": {
      "type": "boolean"
    },
    "hasUrls": {
      "type": "boolean"
    },
    "isRetweet": {
      "type": "boolean"
    },
    "inReplyToScreenName": {
      "type": "string"
    },
    "inReplyToStatusIdStr": {
      "type": "string"
    },
    "inReplyToStatusId": {
      "type": "integer",
      "format": "int64"
    },
    "user": {
      "$ref": "#/$defs/TwitterProfile"
    },
    "retweetedStatus": {
      "$ref": "#/$defs/Tweet"
    },
    "entities": {
      "$ref": "#/$defs/TwitterEntities"
    },
    "extendedEntities": {
      "$ref": "#/$defs/TwitterExtendedEntities"
    },
    "coordinates": {
      "$ref": "#/$defs/TwitterCoordinates"
    },
    "extendedTweet": {
      "$ref": "#/$defs/ExtendedTweet"
    },
    "truncated": {
      "type": "boolean"
    },
    "created": {
      "type": "string",
      "format": "date-time"
    },
    "retweet": {
      "type": "boolean"
    },
    "retweets": {
      "type": "integer",
      "format": "int32"
    },
    "favorites": {
      "type": "integer",
      "format": "int32"
    },
    "tweetId": {
      "type": "string"
    },
    "fullText": {
      "type": "string",
      "writeOnly": true
    },
    "hasMedia": {
      "type": "boolean"
    },
    "hasTags": {
      "type": "boolean"
    },
    "lang": {
      "type": "string"
    }
  },
  "$defs": {
    "DMUserMention": {
      "type": "object",
      "properties": {
        "screenName": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "idStr": {
          "type": "string"
        },
        "id": {
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "DMVariant": {
      "type": "object",
      "properties": {
        "contentType": {
          "type": "string"
        },
        "url": {
          "type": "string"
        },
        "bitRate": {
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "DMVideoInfo": {
      "type": "object",
      "properties": {
        "variants": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/DMVariant"
          }
        }
      }
    },
    "ExtendedTweet": {
      "type": "object",
      "properties": {
        "fullText": {
          "type": "string"
        },
        "entities": {
          "$ref": "#/$defs/TwitterEntities"
        }
      }
    },
    "Tweet": {
      "type": "object",
      "properties": {
        "blogId": {
          "type": "integer",
          "format": "int32"
        },
        "id": {
          "type": "integer",
          "format": "int64"
        },
        "idStr": {
          "type": "string"
        },
        "userId": {
          "type": "integer",
          "format": "int64"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time"
        },
        "text": {
          "type": "string"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time"
        },
        "favoriteCount": {
          "type": "integer",
          "format": "int32"
        },
        "retweetCount": {
          "type": "integer",
          "format": "int32"
        },
        "linkClicks": {
          "type": "integer",
          "format": "int32"
        },
        "promoted": {
          "type": "boolean"
        },
        "metricsV2": {
          "type": "object",
          "additionalProperties": {
            "type": "object"
          }
        },
        "userName": {
          "type": "string"
        },
        "screenName": {
          "type": "string"
        },
        "followers": {
          "type": "integer",
          "format": "int64"
        },
        "impressions": {
          "type": "integer",
          "format": "int64"
        },
        "imageUrl": {
          "type": "string"
        },
        "timestamp": {
          "type": "integer",
          "format": "int64"
        },
        "source": {
          "type": "string"
        },
        "interactions": {
          "type": "integer",
          "format": "int64"
        },
        "engagement": {
          "type": "number",
          "format": "double"
        },
        "picture": {
          "type": "string"
        },
        "ownerPicture": {
          "type": "string"
        },
        "hasVideo": {
          "type": "boolean"
        },
        "hasPhoto": {
          "type": "boolean"
        },
        "hasUrls": {
          "type": "boolean"
        },
        "isRetweet": {
          "type": "boolean"
        },
        "inReplyToScreenName": {
          "type": "string"
        },
        "inReplyToStatusIdStr": {
          "type": "string"
        },
        "inReplyToStatusId": {
          "type": "integer",
          "format": "int64"
        },
        "user": {
          "$ref": "#/$defs/TwitterProfile"
        },
        "retweetedStatus": {
          "$ref": "#/$defs/Tweet"
        },
        "entities": {
          "$ref": "#/$defs/TwitterEntities"
        },
        "extendedEntities": {
          "$ref": "#/$defs/TwitterExtendedEntities"
        },
        "coordinates": {
          "$ref": "#/$defs/TwitterCoordinates"
        },
        "extendedTweet": {
          "$ref": "#/$defs/ExtendedTweet"
        },
        "truncated": {
          "type": "boolean"
        },
        "created": {
          "type": "string",
          "format": "date-time"
        },
        "retweet": {
          "type": "boolean"
        },
        "retweets": {
          "type": "integer",
          "format": "int32"
        },
        "favorites": {
          "type": "integer",
          "format": "int32"
        },
        "tweetId": {
          "type": "string"
        },
        "fullText": {
          "type": "string",
          "writeOnly": true
        },
        "hasMedia": {
          "type": "boolean"
        },
        "hasTags": {
          "type": "boolean"
        },
        "lang": {
          "type": "string"
        }
      }
    },
    "TwitterCoordinates": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string"
        },
        "coordinates": {
          "type": "array",
          "items": {
            "type": "number",
            "format": "float"
          }
        },
        "latitude": {
          "type": "number",
          "format": "float"
        },
        "longitude": {
          "type": "number",
          "format": "float"
        }
      }
    },
    "TwitterEntities": {
      "type": "object",
      "properties": {
        "hashtags": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/TwitterHashtag"
          }
        },
        "userMentions": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/DMUserMention"
          }
        },
        "media": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/TwitterMedia"
          }
        },
        "urls": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/TwitterUrl"
          }
        }
      }
    },
    "TwitterExtendedEntities": {
      "type": "object",
      "properties": {
        "hashtags": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/TwitterHashtag"
          }
        },
        "userMentions": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/DMUserMention"
          }
        }
      }
    },
    "TwitterHashtag": {
      "type": "object",
      "properties": {
        "text": {
          "type": "string"
        }
      }
    },
    "TwitterMedia": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "type": {
          "type": "string"
        },
        "mediaUrl": {
          "type": "string"
        },
        "mediaUrlHttps": {
          "type": "string"
        },
        "videoInfo": {
          "$ref": "#/$defs/DMVideoInfo"
        },
        "mediaSecureUrl": {
          "type": "string"
        }
      }
    },
    "TwitterProfile": {
      "type": "object",
      "properties": {
        "id": {
          "type": "integer",
          "format": "int64"
        },
        "screenName": {
          "type": "string"
        },
        "profileImageUrl": {
          "type": "string"
        },
        "profileBannerUrl": {
          "type": "string"
        },
        "url": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "followersCount": {
          "type": "integer",
          "format": "int32"
        },
        "listedCount": {
          "type": "integer",
          "format": "int32"
        },
        "createdAt": {
          "type": "integer",
          "format": "int64"
        },
        "email": {
          "type": "string"
        },
        "idStr": {
          "type": "string"
        },
        "timeZone": {
          "type": "string"
        },
        "language": {
          "type": "string"
        },
        "location": {
          "type": "string"
        },
        "verified": {
          "type": "boolean"
        },
        "status": {
          "$ref": "#/$defs/Tweet"
        },
        "followers": {
          "type": "integer",
          "format": "int32"
        },
        "profileUrl": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "profile_image_url_https": {
          "type": "string"
        },
        "picture": {
          "type": "string"
        },
        "profile_background_image_url_https": {
          "type": "string"
        },
        "profile_background_color": {
          "type": "string"
        },
        "statuses_count": {
          "type": "integer",
          "format": "int32"
        },
        "friends_count": {
          "type": "integer",
          "format": "int32"
        },
        "favourites_count": {
          "type": "integer",
          "format": "int32"
        },
        "protected": {
          "type": "boolean"
        },
        "subscription_type": {
          "type": "string"
        }
      }
    },
    "TwitterUrl": {
      "type": "object",
      "properties": {
        "url": {
          "type": "string"
        },
        "expandedUrl": {
          "type": "string"
        },
        "displayUrl": {
          "type": "string"
        }
      }
    }
  }
}