Skip to main content
POST /api/public/videos returns detailed history for up to 20 YouTube videos. Each video must belong to a channel the authenticated Pro account currently tracks.

Request body

{
  "videoIds": ["aqz-KE-bpKQ", "jNQXAC9IVRw"]
}
videoIds must contain 1–20 unique YouTube video IDs. Pass the video ID itself, not a full YouTube URL.

Response

{
  "videos": [
    {
      "video": {
        "youtubeVideoId": "aqz-KE-bpKQ",
        "currentTitle": "Example title",
        "currentThumbnailUrl": "https://i.ytimg.com/vi/aqz-KE-bpKQ/hqdefault.jpg",
        "publishedAt": 1783893600000,
        "isMembersOnly": false,
        "viewCount": 12345,
        "likeCount": 678,
        "commentCount": 90,
        "channel": {
          "id": "665f21c09b1d8a4f30aa5678",
          "youtubeChannelId": "UCBJycsmduvYEL83R_U4JriQ",
          "title": "Example Channel",
          "thumbnailUrl": null
        }
      },
      "firstSeenAt": 1783897200000,
      "historyWindowDays": 60,
      "isGraphLocked": false,
      "events": [],
      "statSamples": [
        {
          "viewCount": 12345,
          "likeCount": 678,
          "commentCount": 90,
          "createdAt": 1783897200000
        }
      ]
    }
  ],
  "missingVideoIds": ["jNQXAC9IVRw"]
}

Field semantics

FieldMeaning
publishedAtYouTube’s public video publish time, in Unix epoch milliseconds.
firstSeenAtWhen Monitor YT first began recording the video.
historyWindowDaysNumber of history days available to the caller.
isGraphLockedWhether stat samples are withheld by the plan. Authenticated public API callers are Pro, so this is normally false.
eventsCreative and visibility events inside the history window, newest first.
statSamplesPublic view, like, and comment observations, oldest first.
Counter values can be null. Samples are discrete observations and may have uneven spacing as the collection cadence slows with video age.

Missing videos

Unknown IDs and videos outside the account’s tracked channels are omitted from videos and returned in missingVideoIds. The API intentionally does not reveal which of those two cases applied. The endpoint is batched rather than paginated. Split larger input sets into groups of at most 20 and respect rate limits.