---
title: "GET /brands/{brandId}/reports/performance"
method: GET
path: "/brands/{brandId}/reports/performance"
---

# GET /brands/{brandId}/reports/performance

`GET /brands/{brandId}/reports/performance`

## Request

- Base URL: `https://api.publinio.com/v1`
- URL: `https://api.publinio.com/v1/brands/{brandId}/reports/performance`
- Auth: HTTP bearer

Read versioned activity, publication-cohort or observed audience facts with coverage and freshness. Choose kind explicitly. Unknown metrics are null; reads never trigger paid X work. Required scope: analytics:read.

## Path parameters

- `brandId` string, required

## Query parameters

- `kind` 'activity' | 'posts' | 'audience', required
- `since` string, date, required
- `until` string, date, required
- `accountIds` string[]

## Response `200`

Result; lists contain data and nextCursor. Posts report their actual status and approval_state.

- object
  - `id` string, uuid, required
  - `status` string, required
  - `revision` integer, required
  - `approval_state` string
  - `scheduled_at` string, date-time, nullable

## Other responses

- `400`: Structured error with error.code, error.message and requestId.
- `401`: Structured error with error.code, error.message and requestId.
- `403`: Structured error with error.code, error.message and requestId.
- `404`: Structured error with error.code, error.message and requestId.
- `409`: Structured error with error.code, error.message and requestId.
- `422`: Structured error with error.code, error.message and requestId.
- `429`: Structured error with error.code, error.message and requestId.
- `500`: Structured error with error.code, error.message and requestId.

---

[API](https://skmtc.dev/publinio/apis/publinio-developer-api.md) · [All operations](https://skmtc.dev/publinio/apis/publinio-developer-api/llms.txt) · [OpenAPI document](https://skmtc.dev/publinio/apis/publinio-developer-api/revisions/2a193fb6939b?raw)
