Read dated cumulative post metric observations

GET/sites/{site_id}/linkedin/posts/{post_id}/metrics-historylinkedin:read

Stored organic lifetime post counters by UTC capture date, not daily activity. Existing latest observations seed the first row; future refreshes preserve daily snapshots. Requires linkedin:read and explicit site access. Parent post ownership is checked. No LinkedIn call or credit charge.

RequestGET https://satelliteai.io/api/v1/sites/{site_id}/linkedin/posts/{post_id}/metrics-history
Permissionlinkedin:read
ResponseA list (cursor or offset paginated): data is array of LinkedInPostMetricObservation.
Operation IDlistLinkedInPostMetricHistory

More context and worked examples are in the developer guide.

Example request

cURL · Bash
curl --fail-with-body \
  'https://satelliteai.io/api/v1/sites/123/linkedin/posts/321/metrics-history' \
  -H "Authorization: Bearer $SATELLITE_API_KEY"

Replace the example IDs with values returned by the discovery endpoints. Example values are placeholders, not real records.

Parameters

NameInTypeDescription
site_idrequiredpathintegerID from GET /sites.
min 1
post_idrequiredpathinteger
min 1
limitqueryintegerMaximum rows per page.
default 50 · min 1 · max 100
cursorquerystringOpaque next_cursor from the prior response. Expires after 24 hours; bound to integration, permissions, sites and unchanged filters. Restart pagination if access changes.
max length 4096
start_datequerystring (date)Inclusive UTC capture-date boundary (YYYY-MM-DD).
end_datequerystring (date)Inclusive UTC capture-date boundary (YYYY-MM-DD).

Unknown or repeated query parameters return 400.

Data dictionary

Stored results. Lists can be empty when no history has been imported yet. Cumulative organic post metrics observed on a capture date. These are observations, not daily activity increments. Do not sum them.

[] marks an array element. nullable means the value can be null; treat it as unknown, not zero. always present means the key is always included in the object.

Fields in data
FieldTypeDescription
data[].idintegerSatellite identifier for this record.
min 1
data[].site_idintegerSatellite site ID (from GET /sites).
min 1
data[].org_urnstringnullable
max length 4096
data[].post_urnstringnullable
max length 4096
data[].snapshot_datestring (date)nullableObservation date, not a proven reporting period.
data[].metrics_fetched_atstring (date-time)nullable
data[].created_atstring (date-time)nullableWhen Satellite created the record (UTC, RFC 3339).
data[].updated_atstring (date-time)nullableWhen Satellite last updated the record (UTC, RFC 3339).
data[].impressionsintegernullable
data[].unique_impressionsintegernullableUnique within the reported period. Never sum daily unique impressions into a range unique total.
data[].clicksintegernullable
data[].reactionsintegernullable
data[].commentsintegernullable
data[].sharesintegernullable
data[].engagement_ratenumbernullableStored percentage, not a 0-to-1 fraction.
data[].provider_engagement_ratenumbernullableProvider-reported organic engagement as a fraction, not a percent.
data[].truncated_fieldsarray of stringFields exceeding public text, URL, JSON, or array limits.
data[].provider_engagement_rate_unitstring
one of: fraction
data[].content_scopestring
one of: organic
data[].metric_periodstring
one of: lifetime
data[].observation_historyboolean
one of: True
data[].timezonestring
one of: UTC

Response metadata

Fields in meta
FieldTypeDescription
meta.request_idstringRequest identifier; also returned in X-Request-ID. Include it in support requests.
meta.api_versionstringAPI version that produced the response.
one of: v1
meta.limitintegerMaximum records per page applied to this request.
min 1 · max 100
meta.has_morebooleanTrue when another page is available.
meta.next_cursorstringnullableOpaque cursor for the next page; send as cursor. Null on the last page.
meta.availabilitystringavailable when stored data exists; not_available when it does not.
one of: available, not_available
meta.billingobjectPresent for paid live SERP requests; replayed receipts describe the original debit, not an additional charge.
meta.billing.operationstringalways present
one of: client_api_serp_refresh
meta.billing.credits_chargedintegeralways present
min 0
meta.billing.transaction_idintegeralways present
meta.billing.replayedbooleanalways present
meta.sourcestringalways present
one of: stored
meta.org_urnstringnullable
max length 4096
meta.metric_periodstring
one of: lifetime
meta.observation_historyboolean

Error responses

Errors return {"error": {"code", "message", "request_id"}}. See error handling for retry guidance.

HTTPWhen
400Invalid or repeated query parameter, filter, limit, or cursor.
401Missing, invalid, expired, or revoked credential.
403Required scope, active integration, or company API entitlement is unavailable.
404The resource is missing or outside the granted company/site boundary.
413The response or stored artifact exceeds the configured retrieval limit.
429API request quota exceeded. Retry after the indicated interval.
503A required storage, rate-limit, or artifact dependency is unavailable.