Posttar API

Reports

What was published in a period, how each post performed, and the account day by day.

Two endpoints, and they answer different questions. GET /projects/{id}/reports/summary counts what exists. GET /projects/{id}/reports/performance lists each post with its metrics.

The summary, for a project with nothing published yet:

{
  "period": { "from": null, "to": null },
  "published": 0,
  "scheduled": 0,
  "drafts": 21,
  "publishedWithoutMetrics": 0,
  "publishedWithoutDate": 0
}

Both take from and to as ISO dates. Without them the whole history is considered.

Posts with no metrics

publishedWithoutMetrics and the withoutMetrics list are not a bug in the report: they are posts that were published but whose Instagram metrics were never collected. A post published outside Posttar, or published before the account was connected, lands there.

performance pages with TWO cursors, one per list: nextMeasured for the ranking and nextWithoutMetrics for what is waiting to be measured. Pass each back in cursorMeasured and cursorWithoutMetrics; paging one does not disturb the other, and null means that list is over. totalMeasured and totalWithoutMetrics say how many exist in total, so you know before you start how far the walk goes.

The account, day by day

GET /projects/{id}/reports/daily answers a third question: how the whole Instagram account did on each day. Views, reach, likes, comments, saves, shares and interactions, one entry per day. Instagram only gives a per-post total, never a per-post daily series, so this is the endpoint for "how many views did I get yesterday".

It is the WHOLE account: stories, posts made outside Posttar and ads are in it. It will not match the sum of performance, and it should not. Days follow Instagram's own day, in dayTimezone (America/Los_Angeles). A day missing from days has no number yet; it is not zero. totals has no reach, because reach counts unique people and does not add up across days.