Skip to main content
GET
Get post analytics

Request contract

  • Method and path: GET /apis/v1/social/analytics/posts
  • Availability: enabled
  • Request URL template: https://api.aisa.one/apis/v1/social/analytics/posts
  • postId: query; optional
  • platform: query; optional
  • profileId: query; optional
  • accountId: query; optional
  • source: query; optional
  • fromDate: query; optional
  • toDate: query; optional
  • limit: query; optional
  • page: query; optional
  • sortBy: query; optional
  • order: query; optional
  • tags: query; optional
  • Runtime facts: 99acb5bddbedc8d3352e7c4fef86c3e6d8852c14772bcd18dbcf415237a642bd
Complete OpenAPI definition Effective request and pricing declaration (including authentication and referenced schemas):

Cost and request rules

A request reference price is not currently available; use a request quote where supported. Account-specific pricing and final settlement may differ. Published reference values are not an account-specific quote or a settled charge. For endpoints supporting X-AISA-Cost-Mode: quote, obtain a free quote for your exact request before execution; reconcile the settled cost with response metadata and Usage Logs. USD amounts use 1,000,000 integer micro-USD per dollar.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Query Parameters

postId
string

Returns analytics for a single post. Accepts AIsa Post IDs, External Post IDs and the platform's native post ID. AIsa IDs are auto-resolved to External Post analytics.

platform
string

Filter by platform (default "all")

profileId
string

One of your profiles (prf_...). Defaults to your default profile when neither profileId nor accountId is sent.

Pattern: ^prf_[0-9A-Za-z]{22}$
accountId
string

One of your social accounts (acc_...).

Pattern: ^acc_[0-9A-Za-z]{22}$
source
enum<string>
default:all

Filter by post source: late (posted via AIsa API), external (synced from platform), all (default)

Available options:
all,
late,
external
fromDate
string<date>

Inclusive lower bound (YYYY-MM-DD). Defaults to 90 days ago if omitted. Max range is 366 days.

toDate
string<date>

Inclusive upper bound (YYYY-MM-DD). Defaults to today if omitted.

limit
integer
default:50

Page size (default 50)

Required range: 1 <= x <= 100
page
integer
default:1

Page number (default 1)

Required range: x >= 1
sortBy
enum<string>
default:date

Sort by date, engagement, or a specific metric. Platform-specific metrics (follows, reposts, reels_skip_rate, ig_reels_*, completion_rate, profile_views, website_clicks) sort a null value as 0.

Available options:
date,
engagement,
impressions,
reach,
likes,
comments,
shares,
saves,
clicks,
views,
follows,
ig_reels_avg_watch_time,
ig_reels_video_view_total_time,
reposts,
reels_skip_rate,
completion_rate,
profile_views,
website_clicks
order
enum<string>
default:desc

Sort order

Available options:
asc,
desc
tags
string

Comma-separated tags (at most 20). Lists only posts created through AIsa that carry every listed tag, matched exactly and case-sensitively. Up to 200 published posts can match within the date range; more returns 400 asking to narrow fromDate and toDate. Ignored when postId is set.

Response

Analytics result

analytics
object
content
string
isAiGenerated
boolean

Instagram only: whether Instagram labeled the media as AI-generated. Absent when the platform did not report it.

isExternal
boolean
isSharedToFeed
boolean

Instagram reels only: whether the reel is also shared to the main feed. Absent when the platform did not report it.

latePostId
string | null

Original AIsa post ID if scheduled via AIsa

mediaAudioType
string

Instagram only: audio type of the media (MUSIC or ORIGINAL_SOUND). Absent when the platform did not report it.

mediaItems
object[]

All media items for this post. Carousel posts have one entry per slide.

  • Facebook and Instagram images and video covers whose Meta CDN links expired are re-read and served from AIsa storage (non-expiring).
  • Facebook and Instagram video file URLs, and LinkedIn media URLs, stay the platform's signed links and are refreshed on read once they lapse.
mediaProductType
string

Instagram only: the platform media product type (e.g. FEED, REELS, STORY, AD). Absent when the platform did not report it.

mediaType
enum<string> | null
Available options:
image,
video,
carousel,
text
message
string | null

Human-readable status message for pending, partial, or failed states

platform
string
platformAnalytics
object[]
platformPostUrl
string<uri> | null
postId
string
publishedAt
string<date-time> | null
scheduledFor
string<date-time>
status
enum<string>

Overall post status. "partial" when some platforms published and others failed.

While any platform is still pending or processing, the post's own status is returned instead (usually scheduled or publishing), even if another platform already published.

A post with no published or failed platform (for example every platform cancelled) returns its own status with syncStatus unavailable and no platformAnalytics.

Available options:
published,
failed,
partial,
scheduled,
publishing,
draft,
cancelled
syncStatus
enum<string>

Overall sync state across all platforms

Available options:
synced,
pending,
partial,
unavailable
thumbnailUrl
string<uri> | null

Cover image URL. Facebook, Instagram and TikTok covers whose platform CDN link expired are re-read from the platform and served from AIsa storage, so that URL does not expire and can be cached.