YouTube Shorts reference

YouTube analytics API for Shorts

The YouTube analytics API returns reports for a channel you own and authorize. If you post your Shorts with Postdom, you can skip the OAuth setup and read a stored snapshot of each post instead.

How do I use the YouTube analytics API for a Short?

Start with the channel that owns the Short. A public video URL does not unlock its private analytics.

  1. Authorize the channel owner

    Enable the API in your Google project and set up OAuth consent. Use Google's authorization guide for your application type. An API key alone is insufficient; service-account authorization is not supported.

  2. Choose a valid report

    Call reports.query with your dates and native metrics. For a known Short, use its YouTube video ID as the video filter. The channel-report tables define which metric, dimension and filter combinations work together.

  3. Read the returned columns

    Match each value in Google's rows to columnHeaders. If no data is available, rows can be omitted. That is not a row of zeros.

Request outline · not executed here

GET https://youtubeanalytics.googleapis.com/v2/reports
  ?ids=channel==MINE
  &startDate=YYYY-MM-DD
  &endDate=YYYY-MM-DD
  &metrics=views
  &filters=video==YOUR_YOUTUBE_VIDEO_ID

Replace the dates and video ID. Supply OAuth authorization separately; do not paste access tokens into this page.

The current reports.query reference flags youtube.readonly as required and lists the analytics scopes. Follow its current scope requirements when configuring consent.

Open Google's request reference and APIs Explorer →

YouTube Shorts analytics through Postdom

5 of 9 normalized fields have available coverage in Postdom's YouTube model. These states describe Postdom's integration, not every Google report. Even an available field needs a usable snapshot.

Postdom field coverage and its own verification date
Normalized fieldPostdom coverageHow to read it
ViewsviewsView count in a post snapshot.AvailableavailablePostdom verification: .

Supported in Postdom's coverage model. A value still needs a usable snapshot.

Coverage record

Evidence record: docs/verification/metric-availability.md. This is Postdom's integration record, not a public Google specification.

LikeslikesLike count in a post snapshot.AvailableavailablePostdom verification: .

Supported in Postdom's coverage model. A value still needs a usable snapshot.

Coverage record

Evidence record: docs/verification/metric-availability.md. This is Postdom's integration record, not a public Google specification.

CommentscommentsComment count in a post snapshot.AvailableavailablePostdom verification: .

Supported in Postdom's coverage model. A value still needs a usable snapshot.

Coverage record

Evidence record: docs/verification/metric-availability.md. This is Postdom's integration record, not a public Google specification.

SharessharesShare count in a post snapshot.AvailableavailablePostdom verification: .

Supported in Postdom's coverage model. A value still needs a usable snapshot.

Coverage record

Evidence record: docs/verification/metric-availability.md. This is Postdom's integration record, not a public Google specification.

SavessavesPostdom's cross-platform save field, not a Google playlist metric.NeverneverPostdom verification: .

Not exposed in Postdom's verified integration model; normalization keeps it null. This is not a claim about every Google report.

Coverage record

Evidence record: docs/verification/metric-availability.md. This is Postdom's integration record, not a public Google specification.

Postdom's returned reason: youtube.saves is not exposed by the platform.

Watch timewatch_time_sTotal watch time in seconds; can be null even when coverage is available.AvailableavailablePostdom verification: .

Supported in Postdom's coverage model. A value still needs a usable snapshot.

Coverage record

Evidence record: docs/verification/metric-availability.md. This is Postdom's integration record, not a public Google specification.

Average watch percentageavg_watch_pctAverage percentage watched. This is not the percentage of viewers who finished.Delayeddelayed(2-3d)Postdom verification: .

Postdom records a 2–3 day reporting delay. A number can be present, but waiting does not guarantee one will arrive.

Coverage record

Evidence record: docs/verification/metric-availability.md. This is Postdom's integration record, not a public Google specification.

Completion percentagecompletion_pctA separately supplied completion value; Postdom does not infer it from average watch percentage.Delayeddelayed(2-3d)Postdom verification: .

Postdom records a 2–3 day reporting delay. A number can be present, but waiting does not guarantee one will arrive.

Coverage record

Evidence record: docs/verification/metric-availability.md. This is Postdom's integration record, not a public Google specification.

Follower changefollower_deltaThe current post-snapshot normalizer leaves this null. It does not attribute subscribers to a Short.EstimableestimablePostdom verification: .

A derived value needs suitable evidence. This label does not mean an estimate has been computed.

Coverage record

Evidence record: docs/verification/metric-availability.md. This is Postdom's integration record, not a public Google specification.

Read a Postdom snapshot for a Short

Call get_performance with your Postdom post ID, not a YouTube video ID. Authenticate to Postdom; this is not a Google OAuth request.

MCP tool: get_performance

{
  "post_id": "YOUR_POSTDOM_POST_ID"
}

The tool calls GET /v1/posts/YOUR_POSTDOM_POST_ID/performance. It reads stored snapshots; this request does not run an on-demand Google report.

Inspect performance[], eligibility and summary. Each row includes a publish_id and the normalized fields that have a value; a field with no value is named under availability with the reason it has none.

Open the tool inputs and response reference →

If performance is empty

An empty array means there is no stored snapshot to compare. Check eligibility: a publish that failed without a measurable platform post can return ineligible with publish_failed. An eligible result still does not promise a future snapshot.

Illustrative snapshot excerpt · invented data

{
  "views": 1200,
  "likes": 30,
  "comments": 0,
  "shares": 6,
  "saves": null,
  "watch_time_s": 7200,
  "avg_watch_pct": null,
  "completion_pct": null,
  "follower_delta": null,
  "captured_at": "2026-08-20T12:00:00.000Z",
  "platform": "youtube",
  "source": "poll"
}

Generated locally through Postdom's normalizer, not fetched from a real Short. The surrounding response, publish_id and per-field availability are omitted here.

Read comments: 0 as zero recorded comments. Read null as missing, not as poor performance. captured_at is the snapshot time; it is not a Google report date range.

Is it null, zero or something else?

Keep each field's availability next to its value. Leave missing values out of rankings instead of using zero. Check one field below.

Try a single Postdom field. This runs locally, makes no API request, and checks value type and coverage, not a complete response or real analytics.

Enter a number or literal null. Try comments with 0, then watch_time_s with null.

Missing is not zero

Supported in Postdom's coverage model. A value still needs a usable snapshot. Leave this field out of numeric comparisons until a value exists. Check captured_at for the snapshot's age.

YouTube analytics API questions

Can I read another channel's private analytics with an API key?

No. Channel analytics need OAuth authorization from the channel owner. An API key does not replace that consent.

Are Postdom's field names YouTube API metrics?

No. Postdom returns normalized snapshot fields. Do not send watch_time_s or completion_pct as Google metrics. Pick native metrics from Google's channel-report reference.

Does a delayed field mean a value will appear later?

No. A delay label describes coverage, not a delivery promise. If a value is still null, leave it missing rather than turning it into zero.

Does Postdom measure subscribers gained from one Short?

No. Postdom's post snapshot leaves follower change null and does not attribute growth to a video.

Free YouTube analytics API option: read snapshots with Postdom

Postdom's Free plan has no card and makes 1 post a month on 2 accounts, on any platform, so a YouTube channel can be one of them. After a Short goes out, read its stored snapshot with Postdom's API instead of setting up Google OAuth. This is not a statement about Google's own pricing.

Post your Shorts with Postdom, then read the results

Postdom turns your website into ready-to-post videos in your brand and posts the ones you approve to YouTube, TikTok, Instagram, Facebook and LinkedIn. After a Short goes out, its snapshot is one call away.

Nothing posts until you approve it. Start on Free with no card: 1 post a month on 2 accounts, on any platform, YouTube included.

Start free with Postdom

Paste your website and see your first post today.