---
title: "Get Pinterest account-level insights"
method: GET
path: "/v1/analytics/pinterest/account-insights"
tags: ["Analytics"]
---

# Get Pinterest account-level insights

`GET /v1/analytics/pinterest/account-insights`

## Request

- Base URL: `https://zernio.com/api`
- URL: `https://zernio.com/api/v1/analytics/pinterest/account-insights`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/zernio/apis/zernio-api/docs/v1/analytics/pinterest/account-insights/get.ts> (a function with typed inputs; its response is checked against the schema)

Returns account-level daily Pinterest metrics, read live from Pinterest's account analytics, plus the follower history from Zernio's daily snapshots.

These are account totals. They include every pin on the account, also pins published long before the account was connected to Zernio, which per-post analytics cannot cover.

- Response shape matches /v1/analytics/instagram/account-insights.
- Defaults to the last 30 days. Pinterest serves at most the last 89 days, so a fromDate older than that returns 400.
- Pinterest reports the latest 1-2 days as still processing. Those days are left out of values and totals until Pinterest settles them.

## Query parameters

- `accountId` string, required
- `metrics` string
- `fromDate` string, date
- `toDate` string, date
- `since` string, date
- `until` string, date
- `metricType` 'time_series' | 'total_value'

## Response `200`

Account insights data

- InstagramAccountInsightsResponse: Shared account-insights response envelope used by every platform-level analytics endpoint (/v1/analytics/{facebook|instagram|youtube|linkedin|tiktok|pinterest}/*). The name is historical - the shape was first shipped for Instagram and every new platform endpoint reuses it for response-shape consistency. The platform field echoes back which platform served the response.
  - `success` boolean
  - `accountId` string: The Zernio SocialAccount ID
  - `platform` 'facebook' | 'instagram' | 'youtube' | 'linkedin' | 'tiktok' | 'pinterest': Platform that served this response.
  - `dateRange` object
    - `since` string, date
    - `until` string, date
  - `metricType` 'time_series' | 'total_value'
  - `breakdown` string: Breakdown dimension used (only present when breakdown was requested)
  - `metrics` object: Object keyed by metric name. - For time_series: each metric has "total" (number) and "values" (array of {date, value}). - For total_value: each metric has "total" (number) and optionally "breakdowns" (array of {dimension, value}). **Monetary metrics** also carry "unit" and "currency". Zernio never rescales money: "total" and every "values[].value" are the platform's raw numbers in the stated unit. Monetary metrics keep "values" even on metricType=total_value, because their "total" is the sum of the daily buckets the platform returned over the range. Keep the series to reconcile that sum against the platform's own reporting before invoicing on it. A metric that could not be served is absent from this object and listed in "unavailableMetrics" instead, so an unavailable metric is never reported as a zero.
  - `unavailableMetrics` object[]: Requested metrics that could not be served. Present only when at least one metric is unavailable, absent otherwise. Each listed metric is OMITTED from "metrics" rather than reported as 0, which is how an unavailable metric is distinguished from a genuine zero. The request itself still succeeds with HTTP 200.
    - `metric` string: The requested metric name.
    - `reason` 'not_enrolled' | 'permission_missing' | 'unsupported_metric' | 'no_data' | 'unreadable_value' | 'mixed_currency' | 'upstream_error': Why the metric is unavailable: - "not_enrolled": the account is not enrolled in the program behind this metric. - "permission_missing": the connected user lacks access to this metric. - "unsupported_metric": the platform does not accept this metric name on the API version Zernio uses. - "no_data": the platform returned no bucket for this metric over the requested range. - "unreadable_value": the platform returned a value shape Zernio cannot read, so no total is reported. - "mixed_currency": readable values disagree on currency or unit within the range. - "upstream_error": any other platform failure. "no_data" is the common case in practice. The others are defensive: "not_enrolled" and "unsupported_metric" in particular have not been observed on live Facebook traffic, since a non-enrolled Page returns zeros rather than an error and metric names are validated before any platform call.
    - `message` string: Platform-provided explanation when available (access tokens redacted), otherwise Zernio copy.
  - `dataDelay` string

## Other responses

- `400`: Bad request (invalid accountId / metrics / metricType, a fromDate older than 89 days, or account is not a Pinterest account)
- `401`: Missing or invalid API key. `code` is `missing_credentials` when no Authorization header was sent and `invalid_credentials` when the key is unknown, revoked or expired.
- `402`: Analytics access required. Legacy plans need the Analytics add-on; included by default on usage-based plans.
- `404`: Account not found

## Changes

- **2026-11-10** `d568bb00ed73`: 5 info
  - added the optional property `docsUrl` to the response with the `401` status
  - added the optional property `provider` to the response with the `401` status
  - added the optional property `providerError` to the response with the `401` status
  - added the optional property `requestId` to the response with the `401` status
  - …1 more
- **2026-11-09** `3377f30cc94f`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/zernio/apis/zernio-api/changes/v1/analytics/pinterest/account-insights/get.md)

---

[API](https://skmtc.dev/zernio/apis/zernio-api.md) - [All operations](https://skmtc.dev/zernio/apis/zernio-api/llms.txt) - [OpenAPI document](https://skmtc.dev/zernio/apis/zernio-api/revisions/c6871b2611ac?raw)
