Read your Shorts results

YouTube analytics API for Shorts

Use the YouTube analytics API to query reports for a channel you own and authorize. For Shorts published through Postdom, get_performance reads stored post snapshots instead. These are different data paths: Google's report fields and Postdom's normalized metrics are not interchangeable.

Google documents the channel-owner requirement and report request.

Direct Google API

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 grant access to 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 →

Google's API has report options beyond Postdom's snapshot fields. Use the Analytics and Reporting overview when choosing between a targeted query and bulk reporting. Neither path is a promise that Postdom exposes those same reports.

Postdom metrics

Which Shorts metrics can I read through Postdom?

5 of 9 normalized fields have available coverage. These states describe Postdom's integration, not all Google Analytics reports. 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.

Dates belong to individual coverage records, not to your video or the freshness of its metrics. For native field definitions and report combinations, use Google's channel-report reference. For the distinction between completion percentage, average watched percentage, null, and zero, read the completion-rate glossary.

Read an existing Postdom post

What should the request and result look like?

In a configured Postdom MCP client, call get_performance with the arguments below. Use the Postdom post ID in your organization, 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, normalized fields and an availability record for each metric.

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.

Before you compare results

Is this null, zero or an unexpected value?

Keep the field's availability next to its value. Exclude missing values from numeric rankings instead of substituting zero. A delayed field can already contain a number; its label does not override that observation.

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.

This is a field-value check, not a quota calculator or reporting schedule. No quota cost or polling interval is specified here. Use current Google documentation for direct API planning and your returned snapshot timestamps for Postdom comparisons.

Common questions

Access, coverage and missing metrics

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

No. Channel analytics require OAuth authorization from the channel owner. An API key is not a substitute for that consent. Follow Google's authorization guide for the direct Google API path; it is separate from Postdom authentication.

Are Postdom's field names Google query metrics?

No. Postdom returns normalized snapshot fields. Do not send watch_time_s, completion_pct, or follower_delta as Google metrics parameters. Choose native metrics and valid report combinations from Google's channel-report reference.

Why is a Shorts save count missing?

Postdom classifies saves as never. Not exposed in Postdom's verified integration model; normalization keeps it null. This is not a claim about every Google report. Google playlist activity metrics are not interchangeable with Postdom's saves field.

Does delayed mean a missing value will appear later?

No. A reporting-delay label describes coverage, not a delivery guarantee. Check the snapshot's captured_at and the field's availability together. If a value is still null, leave it missing; do not turn it into zero.

Does follower change measure subscribers gained from this Short?

No. Postdom's current post-snapshot normalizer returns follower_delta as null. An estimable classification does not supply an estimate or establish per-post attribution.

From a finished video to a measured post

Publish your Short, then read its snapshots

Postdom publishes supplied videos to TikTok, Instagram Reels, YouTube Shorts, LinkedIn, Facebook Reels, X, Snapchat Spotlight, Threads and Bluesky. For an existing Postdom post, start with the read-only performance tool above. If the video is not published yet, follow the YouTube Shorts publishing guide first.