> ## Documentation Index
> Fetch the complete documentation index at: https://docs.postqueen.ai/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> PostQueen's hosted API is https://api.postqueen.ai. The public API base is https://api.postqueen.ai/public/v1 and takes the raw API key in the Authorization header, with no Bearer prefix.
> The MCP server for posting is https://api.postqueen.ai/mcp/YOUR_API_KEY (or /mcp with Authorization: Bearer YOUR_API_KEY). docs.postqueen.ai/mcp only searches these docs and cannot post.
> The API key is under Connections > API Keys in the app, and only workspace admins can see it.

# Get an analytics summary

> Totals across your published posts in a range, per channel and per weekday.

The same stored metrics as [List post analytics](/public-api/analytics/posts), added up for the posts published in the range: how many posts, their reactions, comments and impressions, a row per channel, and how many posts went out on each weekday (Monday first, by the UTC publish date).

A total is `null` when any post in the range does not report that metric, so a range that mixes networks, such as Pinterest and X, can show `null` reactions. `engagementMix` adds up what is known anyway.

It takes the same filters as the list: `date`, `integrationIds`, `platform` and `q`.


## OpenAPI

````yaml GET /analytics/summary
openapi: 3.1.0
info:
  title: PostQueen Public API
  version: 1.0.0
  license:
    name: MIT
    identifier: MIT
  description: >-
    Schedule posts, upload media, read analytics and manage the channels of your
    PostQueen workspace.


    ## Authentication


    Send your API key in the `Authorization` header exactly as it is, with no
    prefix:


    ```

    Authorization: YOUR_API_KEY

    ```


    The key is under **Connections > API Keys** in the app. Only a workspace
    Admin or Super Admin can reveal or rotate it. An app your users sign in to
    with OAuth sends its `pos_` access token in the same header, also with no
    prefix. The workspace needs a subscription, and the free trial counts.


    ## Rate limits


    A workspace can send 30 `POST /posts` requests an hour, and a request
    refused with `400` counts too. `POST /upload` and `POST /upload-from-url`
    allow 300 requests an hour each, per workspace. Nothing else is limited. A
    limited endpoint answers with `X-RateLimit-Limit`, `X-RateLimit-Remaining`
    and `X-RateLimit-Reset` headers, and over the limit with `429` and
    `Retry-After` (seconds).


    ## Terminology


    The app says channel, the API says integration. They are the same thing: a
    connected account on a network.
servers:
  - url: https://api.postqueen.ai/public/v1
    description: PostQueen
security:
  - ApiKeyAuth: []
tags:
  - name: Channels
    description: Connected channels. The API calls them integrations.
  - name: Posts
    description: Create, list, change and delete posts
  - name: Media
    description: Upload files to the media library
  - name: Clipping
    description: >-
      Turn a YouTube video into short vertical clips. Not available on PostQueen
      yet
  - name: AI video
    description: Generate a video with AI into the media library
  - name: Analytics
    description: Channel and post metrics
  - name: Notifications
    description: The workspace's notifications
  - name: OAuth
    description: Sign-in for apps that act for other PostQueen workspaces
paths:
  /analytics/summary:
    get:
      tags:
        - Analytics
      summary: Get an analytics summary
      description: >-
        Totals across the published posts in a date range, from the same stored
        metrics as List post analytics. A total is null when any post in the
        range has no value for it.
      operationId: postAnalyticsSummary
      parameters:
        - name: date
          in: query
          required: false
          description: Days to look back by publish date, 1 to 90. Default 30
          schema:
            type: integer
            minimum: 1
            maximum: 90
            default: 30
        - name: integrationIds
          in: query
          required: false
          description: Comma-separated channel ids to limit the report to
          schema:
            type: string
        - name: q
          in: query
          required: false
          description: Text to match in the post content, channel name or platform
          schema:
            type: string
            maxLength: 200
        - name: platform
          in: query
          required: false
          description: The network's identifier, such as x or instagram
          schema:
            type: string
            maxLength: 64
      responses:
        '200':
          description: Totals for the range
          content:
            application/json:
              schema:
                type: object
                properties:
                  syncing:
                    type: boolean
                  date:
                    type: integer
                  notes:
                    type: object
                    description: >-
                      Fixed reading notes: the range filters posts by publish
                      date, numbers are current lifetime totals, null means
                      unknown rather than zero, Facebook returns no comments,
                      Pinterest no reactions or comments, Google Business no
                      post metrics
                  posts:
                    type: integer
                    description: Posts in the range
                  reactions:
                    type:
                      - integer
                      - 'null'
                  comments:
                    type:
                      - integer
                      - 'null'
                  impressions:
                    type:
                      - integer
                      - 'null'
                  channels:
                    type: array
                    items:
                      type: object
                      properties:
                        integrationId:
                          type: string
                        platform:
                          type: string
                        channelName:
                          type: string
                        posts:
                          type: integer
                        impressions:
                          type:
                            - integer
                            - 'null'
                  weekdays:
                    type: array
                    items:
                      type: integer
                    description: Posts per weekday, Monday first, by UTC publish date
                  engagementMix:
                    type:
                      - object
                      - 'null'
                    description: >-
                      Known reactions and comments, summed over the posts that
                      report them
        '400':
          $ref: '#/components/responses/ValidationError'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  responses:
    ValidationError:
      description: The body or query failed validation. `message` lists every problem
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/NestError'
          example:
            message:
              - startDate must be a valid ISO 8601 date string
            error: Bad Request
            statusCode: 400
    Unauthorized:
      description: >-
        `No API Key found`, `Invalid API key`, `Invalid OAuth token`, or `No
        subscription found` when the workspace has no subscription
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/MessageError'
          example:
            msg: Invalid API key
  schemas:
    NestError:
      type: object
      description: >-
        The standard error shape: validation errors, not-found errors and rate
        limits
      properties:
        statusCode:
          type: integer
        message:
          oneOf:
            - type: string
            - type: array
              items:
                type: string
        error:
          type: string
    MessageError:
      type: object
      description: The error shape of most checks written into the public API itself
      properties:
        msg:
          type: string
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        Your API key from Connections > API Keys, or an OAuth access token
        (`pos_...`). Send it as it is, with no `Bearer` prefix.

````