SoftSolzSoftSolz
HomeAPI GuideAPI ReferenceWidget Tester
blogs

Every post ranked for a date range.

Views, change, reads, read time, scroll, read-through and top channel per post. Sort with sort (views, change, reads, read_time, scroll, read_through, title, published, clicks, impressions, ctr, position) and direction (asc or desc); filter with filter (all, page1, growing, falling); search by title or slug. meta carries range, counts per filter and google. Google search fields appear only when the key also holds service.seo.view and acts for a member (a connected app); otherwise google is { connected: false, reason }.

GEThttps://app.softsolz.uk/api/v1/services/blogs/performance/posts

Recent Requests

Kept only in this browser
TimeStatusTook
Send a request with Try it to see it here.

Headers

Authorizationstringrequired

Bearer token: `Bearer sk_live_...` (or `sk_test_...` for sandbox). A login token will not work here.

Query Params

fromstring

First day, YYYY-MM-DD (UTC).

tostring

Last day, YYYY-MM-DD (UTC), inclusive.

daysinteger

Length of the range ending today, 1 to 400, when from and to are not given. Default 30.

comparestring

previous (default) compares with the period before, year with the same period last year, none turns comparison off.

sortstring

Column to sort by. Default views.

directionstring

asc or desc.

filterstring

all, page1, growing or falling.

searchstring

Words in the title or slug.

limitinteger

Page size, 1 to 100. Default 25.

offsetinteger

Rows to skip.

Response

Response Body · array of objects

post_idnumber | nullPost id.
slugstring | nullPost slug.
titlestring | nullPost title.
statusstring | nullPost status.
published_atstring | nullWhen the post was published.
urlstring | nullPublic address of the post, when the blog address is set.
urlsarray of objectsEvery public address of the post.
viewsnumber | nullViews in the period. Every opening counts.
previous_viewsnumber | nullViews in the comparison period.
views_changenumber | nullChange in views as a ratio (0.5 = +50%), null when there were none before.
tracked_viewsnumber | nullViews with a recorded source.
readsnumber | nullReads (a reader stayed at least a few seconds).
previous_readsnumber | nullReads in the comparison period.
avg_read_secondsnumber | nullAverage read time in seconds.
avg_scrollnumber | nullAverage scroll depth, 0 to 100.
read_throughnumber | nullShare of reads that reached 75% of the post.
top_channelobject | nullChannel that brought the most tracked views.
googleobject | nullGoogle clicks, impressions, CTR, average position and change for the period.

Request

curl --request GET \
--url https://app.softsolz.uk/api/v1/services/blogs/performance/posts \
--header 'Authorization: Bearer sk_live_your_key'

Credentials

Sent as a Bearer token and used in the samples above and in Try it. Kept only in this browser. Use an sk_test_ key to stay in your sandbox.

Response · 200

{
"data": [
{
"post_id": 42,
"slug": "launch-announcement",
"title": "Launch announcement",
"status": "published",
"published_at": "your-published-at",
"url": "https://example.com",
"urls": [
{}
],
"views": 320,
"previous_views": 210,
"views_change": 0.52,
"tracked_views": 260,
"reads": 120,
"previous_reads": 90,
"avg_read_seconds": 88,
"avg_scroll": 61,
"read_through": 0.4,
"top_channel": {
"channel": "organic_search",
"label": "Organic search",
"views": 140
},
"google": {}
}
],
"meta": {
"limit": 50,
"offset": 0,
"total": 1,
"has_more": false
}
}