profile_id, and post metrics require a request_id from one of your earlier publishes. These are GET requests and do not consume your upload or FFmpeg allowance.
Analytics covers ten channels: TikTok, Instagram, YouTube, Facebook, LinkedIn, X, Threads, Pinterest, Reddit and Bluesky. Google Business Profile and the manual-credential channels (Telegram, Discord, Slack, Mastodon, Nostr, Lemmy, dev.to, Hashnode, WordPress, Whop, listmonk) can be published to, but report no follower, reach, engagement or impression metrics — leave them out of the
platforms list when requesting analytics. See Channels.Profile analytics
Cross-platform follower, reach, and engagement metrics for a single profile.
The response wraps the per-platform metric payload under
analytics:
Total impressions
Aggregated impressions for one profile over a date range or a named period.Per-post analytics
Performance for a single post, identified by therequest_id returned when you published it.
The
request_id must belong to one of your own posts. Any other id returns 404 not_found.Publish history
A paginated, newest-first list of everything you’ve published through MADIAD Hub.status uses the same vocabulary as a publish response — completed, draft, partial, failed or unknown — plus canceled for a scheduled post that was cancelled before it ran, and error carries the reason when a post was refused. When platforms refused the post, it names each one with its own sentence and, where the Hub has one, a Vietnamese rendering after · Tạm dịch:. A post published asynchronously is recorded as accepted and settled to its real outcome once the platform answers: normally when the platform reports that it has finished the post, and otherwise at a daily check. So a recent item can move from completed to partial or failed within the day.
Use the request_id from a history item to fetch its per-post analytics or check its status.
Per-post metrics over 30 days
Platforms: Instagram · Facebook · YouTube · TikTok · LinkedIn · X · Threads · Pinterest ·
Reddit · Bluesky. One
platform per call.since, until, limit, seed.
A post published through the Hub is listed once the channel has returned its post id (the newest 100 per channel
inside the window). A post’s metrics exist only once they have been read from the channel: until then
its metrics and captured_at are null (not 0). Each call reads up to 6 such posts of its own answer,
newest first, so a channel with many posts gains numbers with each call. A post the channel gives no
numbers for (a removed post, or a kind of post the channel does not measure) stays null, and the Hub
leaves it alone for about 30 minutes before trying again. captured_at says when a post’s numbers were
read. Pass seed=false when you only need the list; no post’s metrics are read during that call.
limit defaults to 50, at most 200. limit and has_more in the answer describe the list returned (there is
no cursor: to see more, raise limit);
cached_posts_in_range and published_posts_in_range are counters of the metrics store.
On the dashboard’s Phân tích page, “Từng bài · 30 ngày” uses this call: choosing a channel loads it.
A post published outside the Hub has no request_id to key on, and appears in the list above only
after its metrics have been read once. Use the platform’s own id:
Audience — when they are online
Platforms: TikTok only. Others return
400 platform_not_supported naming what is
supported. A TikTok account connected before this permission existed must be reconnected.activity_by_hour. Optional start_date,
end_date, benchmark_category.
Hashtag and keyword suggestions
Platforms: TikTok only.
type=keywords additionally needs a reconnected TikTok account;
type=hashtags works on any recently connected one.type=hashtags gives the tags to pair with the keyword; type=keywords gives what people search
around it.
Only TikTok answers these today; other platforms return
400 with error_code
platform_not_supported.A TikTok account connected before this permission existed answers 400 with
tiktok_reconnect_required. Reconnect TikTok from Connections and it works — this is not a
fault on either side; the permission is granted at the moment the account is connected.
