Skip to main content
GET
Browse analytics for all posts
This endpoint lists post groups across the full history of one connection profile. Omit profile_id to use the default profile. It requires Starter, Pro, or Business. Use start_date and end_date to select posts created on those UTC dates. Each metric is the latest saved total for that post. The date filter does not turn lifetime totals into activity earned during the selected dates. metric_window tells you when a provider supplied a rolling 30-day or 90-day total instead. The response returns up to 25 groups by default. Set limit to 1–100. For numbered pages, set page to 1–10000. The response includes data.page, data.total_pages, data.limit, and data.total, the count of matching groups across all pages. If no groups match, data.total_pages is 0. Pass the returned data.snapshot_at with later page requests, keeping the same filters, sort, and limit. The timestamp is in UTC YYYY-MM-DDTHH:mm:ssZ form and can be used only with page. It keeps metric ranking at the same saved point in time. A post’s status can still change while you browse. You can also page forward with a cursor: pass data.next_cursor back as cursor, keeping the same filters and sort. A null cursor means the last page. Do not send page and cursor together. In numbered page mode, data.next_cursor is null. Use platform, status, media_type, search, and sort to narrow the list. Sort by display_views, likes, comments, or engagement_rate for the highest values first. Add _asc to any of those values for the lowest first. display_views uses views when a platform supplies them, otherwise impressions. Posts without the selected metric appear last in either direction. Other existing sort values remain available. A cross-platform group matches a platform filter when any of its posts use that platform. Its platform_metrics still show each platform separately. Metrics that the provider did not supply are null. A reported zero is 0. For each group total, check *_available and *_partial before comparing posts: a partial value covers only some platforms in that group. captured_at tells you when the latest snapshot was saved. The group engagement_rate combines the available platform-post rates into one percentage. Mallary weights each rate by its positive base count, such as views, impressions, or reach. A platform post without a usable rate or base is left out, not counted as zero. engagement_rate_sample_count tells you how many platform posts contributed; engagement_rate_partial is true when a rate is available but some platform posts did not contribute. engagement_rate_denominator is mixed when the contributing rates use different bases. Check each platform_metrics row for its own rate and base. If the platform posts cover different reporting periods, metric_window is mixed. For a compact recent snapshot or a single post by Mallary job ID, use Get Analytics. For follower and subscriber history, use Get Audience Counts.

Authorizations

Authorization
string
header
required

Use Authorization: Bearer {api_key}

Query Parameters

profile_id
string

Connection profile to inspect. Omit to use the default profile. Random public connection profile ID returned by GET /api/v1/profiles.

Pattern: ^[A-Za-z0-9]{6,32}$
Example:

"AbC123xYz90"

start_date
string<date>

Include post groups created on or after this UTC date.

end_date
string<date>

Include post groups created on or before this UTC date.

platform
enum<string>

Include groups with a post on this platform. Supported publishing platform identifier.

Available options:
twitter,
x,
facebook,
instagram,
linkedin,
youtube,
tiktok,
pinterest,
reddit,
threads,
bluesky
status
enum<string>

Filter by the post group's status.

Available options:
successful,
scheduled,
failed,
processing,
partial
media_type
enum<string>

Include groups with this media type.

Available options:
video,
photo,
mixed_media,
text_or_link

Search post text and batch IDs.

Maximum string length: 200
sort
enum<string>
default:newest

Sort post groups. Metric sorts are highest first unless the value ends in _asc. display_views uses a platform's views when available, otherwise its impressions. Posts without the selected metric appear last in either direction.

Available options:
newest,
oldest,
views,
display_views,
display_views_asc,
likes,
likes_asc,
comments,
comments_asc,
engagement,
engagement_rate,
engagement_rate_asc,
clicks,
impressions
limit
integer
default:25

Maximum number of post groups in one page.

Required range: 1 <= x <= 100
cursor
string

Opaque next_cursor from the previous page. Keep filters and sort the same. Cannot be combined with page.

page
integer

One-based page number for numbered navigation. Cannot be combined with cursor. Omit for cursor navigation.

Required range: 1 <= x <= 10000
snapshot_at
string<date-time>

UTC server timestamp in YYYY-MM-DDTHH:mm:ssZ form returned with the first numbered page. Use it only with page; pass it with later page numbers and the same filters, sort, and limit so metric ranking stays fixed while browsing.

Response

Post analytics page retrieved

status
enum<string>
Available options:
ok
data
object
Last modified on October 7, 2026