curl --request GET \
--url https://app.trypost.it/api/analytics \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.trypost.it/api/analytics"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.trypost.it/api/analytics', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.trypost.it/api/analytics",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.trypost.it/api/analytics"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.trypost.it/api/analytics")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.trypost.it/api/analytics")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"bounds": {
"min": "2026-04-11",
"max": "2026-10-08"
},
"range": {
"start": "2026-10-02",
"end": "2026-10-08"
},
"previous_range": {
"start": "2026-09-25",
"end": "2026-10-01"
},
"summary": {
"posts": {
"value": 18,
"previous": 15,
"change": 20
},
"followers": {
"value": 12480,
"previous": 12160,
"change": 320
},
"net_followers": {
"value": 320,
"previous": 250,
"change": 28
},
"reactions": {
"value": 2140,
"previous": 1890,
"change": 13.23
},
"comments": {
"value": 188,
"previous": 205,
"change": -8.29
},
"engagement_rate": {
"value": 4.12,
"previous": 3.85,
"change": 7.01
},
"views": {
"value": 48210,
"previous": 39900,
"change": 20.83
},
"impressions": {
"value": 61300,
"previous": 52010,
"change": 17.86
},
"clicks": {
"value": 512,
"previous": 430,
"change": 19.07
},
"reposts": {
"value": 96,
"previous": 80,
"change": 20
},
"quotes": {
"value": 12,
"previous": 9,
"change": 33.33
},
"reach": {
"value": 30120,
"previous": 27400,
"change": 9.93
},
"shares": {
"value": 140,
"previous": 118,
"change": 18.64
},
"saves": {
"value": 210,
"previous": 175,
"change": 20
},
"watch_time_minutes": {
"value": 1830.5,
"previous": 1502.25,
"change": 21.85
},
"average_watch_time_seconds": {
"value": 14.2,
"previous": 12.8,
"change": 10.94
},
"follows_gained": {
"value": 41,
"previous": 37,
"change": 10.81
}
},
"followers": {
"total": 12480,
"accounts": [
{
"social_account_key": "9c8b7a65-4d3e-4f2a-8b1c-0d9e8f7a6b54",
"social_account_id": "9c8b7a65-4d3e-4f2a-8b1c-0d9e8f7a6b54",
"platform": "x",
"network": "x",
"name": "TryPost",
"username": "trypostit",
"avatar_url": "https://pbs.twimg.com/profile_images/1790000000000000000/avatar_400x400.jpg",
"value": 12480,
"growth": 320,
"net": 320,
"provenance": "provider",
"status": "connected"
}
],
"series": [
{
"date": "2026-10-02",
"accounts": {
"9c8b7a65-4d3e-4f2a-8b1c-0d9e8f7a6b54": 12160
}
},
{
"date": "2026-10-08",
"accounts": {
"9c8b7a65-4d3e-4f2a-8b1c-0d9e8f7a6b54": 12480
}
}
]
},
"posts": {
"resolution": "daily",
"accounts": [
{
"social_account_key": "9c8b7a65-4d3e-4f2a-8b1c-0d9e8f7a6b54",
"platform": "x",
"name": "TryPost",
"username": "trypostit",
"avatar_url": "https://pbs.twimg.com/profile_images/1790000000000000000/avatar_400x400.jpg",
"count": 18,
"status": "connected"
}
],
"buckets": [
{
"start": "2026-10-02",
"end": "2026-10-02",
"accounts": {
"9c8b7a65-4d3e-4f2a-8b1c-0d9e8f7a6b54": 3
},
"total": 3
}
]
},
"top_posts": {
"reactions": [
{
"id": "9d4a0b1c-2d3e-4f5a-8b6c-7d8e9f0a1b2c",
"post_platform_id": "9d3c1f2b-1a2b-4c3d-8e4f-5a6b7c8d9e10",
"post_id": "9d3c1f2a-6b4e-4c8a-9f1e-2a7b5c8d0e41",
"social_account_key": "9c8b7a65-4d3e-4f2a-8b1c-0d9e8f7a6b54",
"platform": "x",
"name": "TryPost",
"username": "trypostit",
"avatar_url": "https://pbs.twimg.com/profile_images/1790000000000000000/avatar_400x400.jpg",
"origin": "trypost",
"content_type": "image",
"availability": "available",
"published_at": "2026-10-02 14:00:00",
"permalink": "https://x.com/trypostit/status/1841234567890123456",
"excerpt": "We just shipped scheduled threads. Here is how they work.",
"preview_metadata": null,
"reactions": 412,
"comments": 38,
"status": "connected"
}
],
"comments": [
{
"id": "9d4a0b1c-2d3e-4f5a-8b6c-7d8e9f0a1b2c",
"post_platform_id": "9d3c1f2b-1a2b-4c3d-8e4f-5a6b7c8d9e10",
"post_id": "9d3c1f2a-6b4e-4c8a-9f1e-2a7b5c8d0e41",
"social_account_key": "9c8b7a65-4d3e-4f2a-8b1c-0d9e8f7a6b54",
"platform": "x",
"name": "TryPost",
"username": "trypostit",
"avatar_url": "https://pbs.twimg.com/profile_images/1790000000000000000/avatar_400x400.jpg",
"origin": "trypost",
"content_type": "image",
"availability": "available",
"published_at": "2026-10-02 14:00:00",
"permalink": "https://x.com/trypostit/status/1841234567890123456",
"excerpt": "We just shipped scheduled threads. Here is how they work.",
"preview_metadata": null,
"reactions": 412,
"comments": 38,
"status": "connected"
}
]
},
"performance": [
{
"social_account_key": "9c8b7a65-4d3e-4f2a-8b1c-0d9e8f7a6b54",
"platform": "x",
"name": "TryPost",
"username": "trypostit",
"avatar_url": "https://pbs.twimg.com/profile_images/1790000000000000000/avatar_400x400.jpg",
"posts": {
"value": 18,
"previous": 15,
"change": 20
},
"reactions": {
"value": 2140,
"previous": 1890,
"change": 13.23
},
"comments": {
"value": 188,
"previous": 205,
"change": -8.29
},
"engagement_rate": {
"value": 4.12,
"previous": 3.85,
"change": 7.01
},
"reposts": {
"value": 96,
"previous": 80,
"change": 20
},
"impressions": {
"value": 61300,
"previous": 52010,
"change": 17.86
},
"clicks": {
"value": 512,
"previous": 430,
"change": 19.07
},
"views": {
"value": 48210,
"previous": 39900,
"change": 20.83
},
"shares": {
"value": 140,
"previous": 118,
"change": 18.64
},
"saves": {
"value": 210,
"previous": 175,
"change": 20
},
"follows_gained": {
"value": 41,
"previous": 37,
"change": 10.81
},
"reach": {
"value": 30120,
"previous": 27400,
"change": 9.93
},
"watch_time_minutes": {
"value": 1830.5,
"previous": 1502.25,
"change": 21.85
},
"average_watch_time_seconds": {
"value": 14.2,
"previous": 12.8,
"change": 10.94
},
"status": "connected"
}
],
"coverage": [
{
"social_account_id": "9c8b7a65-4d3e-4f2a-8b1c-0d9e8f7a6b54",
"collector": "publication_backfill",
"status": "complete",
"target_since": "2026-04-11T00:00:00.000000Z",
"oldest_reached_at": "2026-04-11T09:12:00.000000Z",
"high_watermark_at": "2026-10-08T06:00:00.000000Z",
"last_success_at": "2026-10-08T06:00:00.000000Z",
"last_error_category": null
}
]
}{
"message": "Unauthenticated."
}{
"message": "Active subscription required."
}{
"message": "<string>"
}{
"message": "<string>",
"errors": {}
}{
"name": "rate_limit_exceeded",
"message": "Rate limit exceeded. Please retry after 30 seconds."
}Get workspace analytics
Returns the analytics report of the workspace for a date range, compared with the previous range of the same length: summary, followers, posts per bucket, top posts, per-channel performance and collection coverage. Days are calendar days in the API key user’s time zone (Settings → Preferences) and weekly buckets start on that user’s start of week. With custom (or start/end without range), the dates are clamped to the days with data in scope (bounds; for a channel, that channel’s). When there is no data yet, the dates are ignored and the last 30 days are returned. A missing end defaults to the last day with data, and a missing start to 29 days before end. Read range (or filters.start/filters.end) in the response for the days actually used. The report reads analytics TryPost has already collected from the networks, not live data. LinkedIn, LinkedIn pages, Telegram, Discord and Google Business are not included.
curl --request GET \
--url https://app.trypost.it/api/analytics \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.trypost.it/api/analytics"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.trypost.it/api/analytics', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.trypost.it/api/analytics",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.trypost.it/api/analytics"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.trypost.it/api/analytics")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.trypost.it/api/analytics")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"bounds": {
"min": "2026-04-11",
"max": "2026-10-08"
},
"range": {
"start": "2026-10-02",
"end": "2026-10-08"
},
"previous_range": {
"start": "2026-09-25",
"end": "2026-10-01"
},
"summary": {
"posts": {
"value": 18,
"previous": 15,
"change": 20
},
"followers": {
"value": 12480,
"previous": 12160,
"change": 320
},
"net_followers": {
"value": 320,
"previous": 250,
"change": 28
},
"reactions": {
"value": 2140,
"previous": 1890,
"change": 13.23
},
"comments": {
"value": 188,
"previous": 205,
"change": -8.29
},
"engagement_rate": {
"value": 4.12,
"previous": 3.85,
"change": 7.01
},
"views": {
"value": 48210,
"previous": 39900,
"change": 20.83
},
"impressions": {
"value": 61300,
"previous": 52010,
"change": 17.86
},
"clicks": {
"value": 512,
"previous": 430,
"change": 19.07
},
"reposts": {
"value": 96,
"previous": 80,
"change": 20
},
"quotes": {
"value": 12,
"previous": 9,
"change": 33.33
},
"reach": {
"value": 30120,
"previous": 27400,
"change": 9.93
},
"shares": {
"value": 140,
"previous": 118,
"change": 18.64
},
"saves": {
"value": 210,
"previous": 175,
"change": 20
},
"watch_time_minutes": {
"value": 1830.5,
"previous": 1502.25,
"change": 21.85
},
"average_watch_time_seconds": {
"value": 14.2,
"previous": 12.8,
"change": 10.94
},
"follows_gained": {
"value": 41,
"previous": 37,
"change": 10.81
}
},
"followers": {
"total": 12480,
"accounts": [
{
"social_account_key": "9c8b7a65-4d3e-4f2a-8b1c-0d9e8f7a6b54",
"social_account_id": "9c8b7a65-4d3e-4f2a-8b1c-0d9e8f7a6b54",
"platform": "x",
"network": "x",
"name": "TryPost",
"username": "trypostit",
"avatar_url": "https://pbs.twimg.com/profile_images/1790000000000000000/avatar_400x400.jpg",
"value": 12480,
"growth": 320,
"net": 320,
"provenance": "provider",
"status": "connected"
}
],
"series": [
{
"date": "2026-10-02",
"accounts": {
"9c8b7a65-4d3e-4f2a-8b1c-0d9e8f7a6b54": 12160
}
},
{
"date": "2026-10-08",
"accounts": {
"9c8b7a65-4d3e-4f2a-8b1c-0d9e8f7a6b54": 12480
}
}
]
},
"posts": {
"resolution": "daily",
"accounts": [
{
"social_account_key": "9c8b7a65-4d3e-4f2a-8b1c-0d9e8f7a6b54",
"platform": "x",
"name": "TryPost",
"username": "trypostit",
"avatar_url": "https://pbs.twimg.com/profile_images/1790000000000000000/avatar_400x400.jpg",
"count": 18,
"status": "connected"
}
],
"buckets": [
{
"start": "2026-10-02",
"end": "2026-10-02",
"accounts": {
"9c8b7a65-4d3e-4f2a-8b1c-0d9e8f7a6b54": 3
},
"total": 3
}
]
},
"top_posts": {
"reactions": [
{
"id": "9d4a0b1c-2d3e-4f5a-8b6c-7d8e9f0a1b2c",
"post_platform_id": "9d3c1f2b-1a2b-4c3d-8e4f-5a6b7c8d9e10",
"post_id": "9d3c1f2a-6b4e-4c8a-9f1e-2a7b5c8d0e41",
"social_account_key": "9c8b7a65-4d3e-4f2a-8b1c-0d9e8f7a6b54",
"platform": "x",
"name": "TryPost",
"username": "trypostit",
"avatar_url": "https://pbs.twimg.com/profile_images/1790000000000000000/avatar_400x400.jpg",
"origin": "trypost",
"content_type": "image",
"availability": "available",
"published_at": "2026-10-02 14:00:00",
"permalink": "https://x.com/trypostit/status/1841234567890123456",
"excerpt": "We just shipped scheduled threads. Here is how they work.",
"preview_metadata": null,
"reactions": 412,
"comments": 38,
"status": "connected"
}
],
"comments": [
{
"id": "9d4a0b1c-2d3e-4f5a-8b6c-7d8e9f0a1b2c",
"post_platform_id": "9d3c1f2b-1a2b-4c3d-8e4f-5a6b7c8d9e10",
"post_id": "9d3c1f2a-6b4e-4c8a-9f1e-2a7b5c8d0e41",
"social_account_key": "9c8b7a65-4d3e-4f2a-8b1c-0d9e8f7a6b54",
"platform": "x",
"name": "TryPost",
"username": "trypostit",
"avatar_url": "https://pbs.twimg.com/profile_images/1790000000000000000/avatar_400x400.jpg",
"origin": "trypost",
"content_type": "image",
"availability": "available",
"published_at": "2026-10-02 14:00:00",
"permalink": "https://x.com/trypostit/status/1841234567890123456",
"excerpt": "We just shipped scheduled threads. Here is how they work.",
"preview_metadata": null,
"reactions": 412,
"comments": 38,
"status": "connected"
}
]
},
"performance": [
{
"social_account_key": "9c8b7a65-4d3e-4f2a-8b1c-0d9e8f7a6b54",
"platform": "x",
"name": "TryPost",
"username": "trypostit",
"avatar_url": "https://pbs.twimg.com/profile_images/1790000000000000000/avatar_400x400.jpg",
"posts": {
"value": 18,
"previous": 15,
"change": 20
},
"reactions": {
"value": 2140,
"previous": 1890,
"change": 13.23
},
"comments": {
"value": 188,
"previous": 205,
"change": -8.29
},
"engagement_rate": {
"value": 4.12,
"previous": 3.85,
"change": 7.01
},
"reposts": {
"value": 96,
"previous": 80,
"change": 20
},
"impressions": {
"value": 61300,
"previous": 52010,
"change": 17.86
},
"clicks": {
"value": 512,
"previous": 430,
"change": 19.07
},
"views": {
"value": 48210,
"previous": 39900,
"change": 20.83
},
"shares": {
"value": 140,
"previous": 118,
"change": 18.64
},
"saves": {
"value": 210,
"previous": 175,
"change": 20
},
"follows_gained": {
"value": 41,
"previous": 37,
"change": 10.81
},
"reach": {
"value": 30120,
"previous": 27400,
"change": 9.93
},
"watch_time_minutes": {
"value": 1830.5,
"previous": 1502.25,
"change": 21.85
},
"average_watch_time_seconds": {
"value": 14.2,
"previous": 12.8,
"change": 10.94
},
"status": "connected"
}
],
"coverage": [
{
"social_account_id": "9c8b7a65-4d3e-4f2a-8b1c-0d9e8f7a6b54",
"collector": "publication_backfill",
"status": "complete",
"target_since": "2026-04-11T00:00:00.000000Z",
"oldest_reached_at": "2026-04-11T09:12:00.000000Z",
"high_watermark_at": "2026-10-08T06:00:00.000000Z",
"last_success_at": "2026-10-08T06:00:00.000000Z",
"last_error_category": null
}
]
}{
"message": "Unauthenticated."
}{
"message": "Active subscription required."
}{
"message": "<string>"
}{
"message": "<string>",
"errors": {}
}{
"name": "rate_limit_exceeded",
"message": "Rate limit exceeded. Please retry after 30 seconds."
}Authorizations
Workspace API key from Settings → API Keys.
Query Parameters
7d (last 7 days), 30d (last 30 days, the default), mtd (month to date) or custom. Days are calendar days in the API key user's time zone, today included.
7d, 30d, mtd, custom First day, Y-m-d. Required with range=custom and ignored for the other presets. Sending start and end without range means custom.
Last day, Y-m-d, on or after start. Required with range=custom.
Only these social accounts. Unknown ids and accounts without analytics are ignored without an error; when none of the ids is usable, the report covers every channel.
Response
The report.
First and last day with analytics data in scope (null when there is none).
Show child attributes
Show child attributes
Calendar days in the API key user's time zone (both ends included).
Show child attributes
Show child attributes
Calendar days in the API key user's time zone (both ends included).
Show child attributes
Show child attributes
Totals for the range compared with the previous range. posts counts posts published in the range (made in TryPost or not). engagement_rate is a percent. watch_time_minutes and average_watch_time_seconds cover videos.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Up to 5 posts of the range with the most reactions, and up to 5 with the most comments.
Show child attributes
Show child attributes
One row per channel with at least one post in the range, with each metric compared with the previous range.
Show child attributes
Show child attributes
How far back analytics have been collected for each connected channel. Each channel can have one row per collector.
Show child attributes
Show child attributes

