rizamodocs
Analytics

List how each post did

GET
/analytics/posts

Every post published in the period on the team's accounts, made in Rizamo or anywhere else, deleted ones included, with its numbers so far: its lifetime totals as Rizamo last read them, every one its network gives in metrics, and its details (rates, traffic sources, viewer types, retention, viewers) where its network gives them. Sorted by views unless asked otherwise, a page at a time. Days are the profile's, and a period of days ends yesterday, as in Analytics overview.

Authorization

apiKey
headerAuthorizationBearer <token>

An API key from the web app, under Developers. It starts with rz_live_.

Query Parameters

days?integer

The last this many complete days, up to yesterday in timeZone: today is not over, so it is left out. 30 when neither this nor from is given.

Range1 <= value <= 365
from?string

Instead of days: the first day, such as 2026-10-01.

Formatdate
to?string

With from: the last day, yesterday when left out (today when from is today). Up to 365 days in all.

Formatdate
profileId?string

Only this profile's (prof_): one brand or client, from List profiles.

Lengthlength <= 100
timeZone?string

The time zone the days are in. Left out: the profile's with profileId; else the one every profile in reach shares, or UTC when they differ.

Lengthlength <= 64
fields?

Only posts made in Rizamo whose custom fields have these values, for example fields[campaign]=Winter menu: posts made in the networks' own apps have no fields, so they are left out, and so are followers.

sort?string

What to sort by. Posts without that number (a network that does not give it, one it hides, one not read yet) come last.

Default"views"
Value in"views""reach""engagements""engagementRate""publishedAt"
order?string

desc (the default): the highest first. asc: the lowest first.

Default"desc"
Value in"desc""asc"
limit?integer

How many to return, up to 100: 25 when left out.

Range1 <= value <= 100
Default25
offset?integer

How many to skip: the next page starts at offset plus limit.

Range0 <= value <= 9007199254740991
Default0

Response Body

OK

application/json
  1. response
from*string
Formatdate
to*string
Formatdate
timeZone*string

The time zone the days are in.

total*integer

How many posts the period has in all.

Range-9007199254740991 <= value <= 9007199254740991
items*array<>
Example Request
curl -X GET 'https://api.rizamo.com/v1/analytics/posts?days=30&profileId=prof_01m40k9k80fxd8cvng8derm7g9&limit=10'
Example Response
{  "from": "2026-10-06",  "to": "2026-11-04",  "timeZone": "Europe/Lisbon",  "total": 1,  "items": [    {      "networkPostId": "npost_01m4fkyer0em9939e5rz4f89v7",      "postId": "post_01m47bjzm0edmtk7w6gp7br39v",      "accountId": "acc_01m423bp00fz39kp5pc7m42tsw",      "network": "instagram",      "format": "feed",      "caption": "Winter menu is here: spiced orange latte and our first pastel de nata of the season. Open from 8 tomorrow.",      "url": "https://www.instagram.com/p/DQx8kLmCa1T/",      "thumbnailUrl": "https://media.rizamo.com/thumbnails/npost_01m4fkyer0em9939e5rz4f89v7.jpg?exp=1762437600&sig=b3Jp1Wq0kz8fLx2mQe7Rt5uYc9NvH4aD6sGj3hKl0Po",      "publishedAt": "2026-11-06T09:00:04.000Z",      "deletedAt": null,      "metricsAt": "2026-11-07T09:00:00.000Z",      "views": 2140,      "reach": 1630,      "engagements": 155,      "engagementRate": 9.51,      "metrics": {        "views": 2140,        "reach": 1630,        "likes": 128,        "comments": 11,        "shares": 6,        "saves": 10,        "engagements": 155,        "follows": 4,        "profile_visits": 37      },      "masked": [],      "details": null,      "detailsAt": null    }  ]}

Analytics overview GET

The numbers of the team's accounts and of every post on them, made in Rizamo or anywhere else, for a period and the one before it: views, reach, engagements, the engagement rate of the posts published, posts published, followers, the accounts' own reach and accounts engaged, each day, each network, and the top posts. A period of `days` ends yesterday, the last complete day, as `to` does when left out. With `attribution` received (the default), views are each account's own views of each day, as its network counts them (its posts' gains where its days give none, and with `fields`), and reach and engagements what arrived on the posts in the period, on posts of any age, by the day it arrived; with publish, they are the numbers so far of the posts published in the period, by the day each went out. A number a network does not give is missing, never 0, and `notes` says why. Post numbers follow the days of the profile's time zone (pass `timeZone` for another); followers and the accounts' own numbers come by the network's days, matched by date (Meta's run on Pacific time, TikTok's on UTC). TikTok's days come 2 days late and YouTube's 3.

Get the audience GET

Each account's audience as last read: its followers, and the people who engaged with its content this month, by age, gender, country and city (YouTube without city), and when its followers are active, by the hour in UTC (`activeHours`), from TikTok, for accounts with advanced access or a verified business account, and 100 followers or more. Rizamo reads it once a week for Instagram, TikTok, Threads and YouTube accounts (Instagram through either login). Followers come only for accounts with 100 followers or more. Instagram gives the engaged audience only when each group has more than 100 people; TikTok and Threads give none; YouTube gives no followers (`followers` is null). A YouTube channel's engaged audience is its viewers this month (last month until the 8th, as YouTube's numbers come 2 to 3 days late), counted by their views. Facebook no longer gives a Page's audience, and other networks are not read yet: their accounts come with why.