Reports
3 endpoints for reports, with parameters and a real response example.
GET/projects/{id}/reports/summary
Get a period summary
How many posts the project has published, scheduled, and in draft, optionally within a period. Also reports how many published posts were never measured, which is absence of measurement, not zero views.
| Parameter | In | Type | Description |
|---|---|---|---|
idrequired | path | stringmax 200 chars | Opaque id from a previous response. Do not build one: an id that is not a valid identifier is refused with invalid_input, and one that belongs to another workspace with not_found. |
from | query | string | Start of the period, by publication date. ISO 8601, a date (2026-09-01) or a full instant (2026-09-01T13:00:00Z). Anything else is refused with invalid_input and never ignored. Without it, the whole history. |
to | query | string | End of the period, by publication date. ISO 8601, a date (2026-09-01) or a full instant (2026-09-01T13:00:00Z). Anything else is refused with invalid_input and never ignored. |
Response
{
"period": {
"from": null,
"to": null
},
"published": 0,
"scheduled": 0,
"drafts": 21,
"publishedWithoutMetrics": 0,
"publishedWithoutDate": 0
}GET/projects/{id}/reports/performance
Get posts' performance
Published posts with each one's numbers, in two lists that are never mixed: measured ones with real views, likes, and comments, and unmeasured ones Posttar never measured (their views are null, which is not the same as zero).
| Parameter | In | Type | Description |
|---|---|---|---|
idrequired | path | stringmax 200 chars | Opaque id from a previous response. Do not build one: an id that is not a valid identifier is refused with invalid_input, and one that belongs to another workspace with not_found. |
from | query | string | Start of the period, by publication date. ISO 8601, a date (2026-09-01) or a full instant (2026-09-01T13:00:00Z). Anything else is refused with invalid_input and never ignored. Without it, the whole history. |
to | query | string | End of the period, by publication date. ISO 8601, a date (2026-09-01) or a full instant (2026-09-01T13:00:00Z). Anything else is refused with invalid_input and never ignored. |
limit | query | integer | Default 20, max 100. |
cursorMeasured | query | stringmax 2048 chars | Opaque cursor from this response's nextMeasured. Pages the measured ranking, and does not touch the other list. |
cursorWithoutMetrics | query | stringmax 2048 chars | Opaque cursor from this response's nextWithoutMetrics. Pages the withoutMetrics list, and does not touch the ranking. |
Response
{
"period": {
"from": null,
"to": null
},
"measured": [],
"totalMeasured": 0,
"nextMeasured": null,
"withoutMetrics": [],
"totalWithoutMetrics": 0,
"nextWithoutMetrics": null,
"totals": null
}GET/projects/{id}/reports/daily
Get the account day by day
The project's whole Instagram account, one entry per day: views, reach, likes, comments, saves, shares and interactions. Stories, posts made outside Posttar and ads are included, so it does not match the sum of the posts' performance. Days follow Instagram's own day, in dayTimezone. A day missing from days has no number yet, which is not zero. partialDay is the day still in progress, whose numbers keep growing.
| Parameter | In | Type | Description |
|---|---|---|---|
idrequired | path | stringmax 200 chars | Opaque id from a previous response. Do not build one: an id that is not a valid identifier is refused with invalid_input, and one that belongs to another workspace with not_found. |
from | query | string | First day, YYYY-MM-DD (a full ISO instant is accepted and cut to its date). Defaults to 29 days before to. Anything else is refused with invalid_input. |
to | query | string | Last day, YYYY-MM-DD. Defaults to today. The period can have at most 400 days. |
Response
{
"period": {
"from": "2026-08-22",
"to": "2026-08-24"
},
"dayTimezone": "America/Los_Angeles",
"account": {
"username": "yourbrand",
"active": true
},
"days": [
{
"date": "2026-08-22",
"views": 2902,
"reach": 624,
"likes": 41,