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

# Read post measurement history

> Required permissions: analytics-read. Reads stored measurements only; never triggers collection. Counters are decimal strings; null means missing data, not zero. generatedAt is the response time, collectedAt is the measurement time. Returns up to the latest 1000 retained observations, oldest first. Recent 30 days keep raw observations; older history uses daily closing observations. Values are cumulative counters, not interval deltas. Empty items means no measurements yet. Another project’s post/account pair returns 404.



## OpenAPI

````yaml /api-reference/openapi.json get /analytics/posts/{postId}/{accountId}
openapi: 3.1.0
info:
  title: Postinger Public API
  version: 1.0.0
  description: >-
    Project-scoped API keys. JSON bodies up to 100 KB. Upload media directly to
    the returned R2 URL, then complete the upload. Rate limits are shared by all
    keys in the project. Scheduling requires posts-publish in addition to
    posts-write. A paused key returns 403 with error.code api_key_paused.
servers:
  - url: https://api.dev.postinger.dev/public/v1
security: []
paths:
  /analytics/posts/{postId}/{accountId}:
    get:
      tags:
        - Analytics
      summary: Read post measurement history
      description: >-
        Required permissions: analytics-read. Reads stored measurements only;
        never triggers collection. Counters are decimal strings; null means
        missing data, not zero. generatedAt is the response time, collectedAt is
        the measurement time. Returns up to the latest 1000 retained
        observations, oldest first. Recent 30 days keep raw observations; older
        history uses daily closing observations. Values are cumulative counters,
        not interval deltas. Empty items means no measurements yet. Another
        project’s post/account pair returns 404.
      operationId: getPostAnalyticsHistory
      parameters:
        - name: postId
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: accountId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Stored analytics
          headers:
            X-Request-Id:
              schema:
                type: string
              description: Request identifier for troubleshooting.
            Cache-Control:
              schema:
                type: string
                const: no-store
            X-RateLimit-Limit:
              schema:
                type: integer
              description: Project-wide limit, when supplied by the rate limiter.
            X-RateLimit-Remaining:
              schema:
                type: integer
              description: Remaining project requests, when supplied by the rate limiter.
          content:
            application/json:
              schema:
                type: object
                required:
                  - data
                  - meta
                properties:
                  data:
                    $ref: '#/components/schemas/AnalyticsHistory'
                  meta:
                    type: object
                    required:
                      - requestId
                    properties:
                      requestId:
                        type: string
        '400':
          description: Request failed. Check error.code and meta.requestId.
          headers:
            X-Request-Id:
              schema:
                type: string
              description: Request identifier for troubleshooting.
            Cache-Control:
              schema:
                type: string
                const: no-store
            X-RateLimit-Limit:
              schema:
                type: integer
              description: Project-wide limit, when supplied by the rate limiter.
            X-RateLimit-Remaining:
              schema:
                type: integer
              description: Remaining project requests, when supplied by the rate limiter.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                  - meta
                properties:
                  error:
                    type: object
                    required:
                      - code
                      - message
                    properties:
                      code:
                        type: string
                      message:
                        anyOf:
                          - type: string
                          - type: array
                            items:
                              type: string
                  meta:
                    type: object
                    required:
                      - requestId
                    properties:
                      requestId:
                        type: string
        '401':
          description: Request failed. Check error.code and meta.requestId.
          headers:
            X-Request-Id:
              schema:
                type: string
              description: Request identifier for troubleshooting.
            Cache-Control:
              schema:
                type: string
                const: no-store
            X-RateLimit-Limit:
              schema:
                type: integer
              description: Project-wide limit, when supplied by the rate limiter.
            X-RateLimit-Remaining:
              schema:
                type: integer
              description: Remaining project requests, when supplied by the rate limiter.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                  - meta
                properties:
                  error:
                    type: object
                    required:
                      - code
                      - message
                    properties:
                      code:
                        type: string
                      message:
                        anyOf:
                          - type: string
                          - type: array
                            items:
                              type: string
                  meta:
                    type: object
                    required:
                      - requestId
                    properties:
                      requestId:
                        type: string
        '403':
          description: Request failed. Check error.code and meta.requestId.
          headers:
            X-Request-Id:
              schema:
                type: string
              description: Request identifier for troubleshooting.
            Cache-Control:
              schema:
                type: string
                const: no-store
            X-RateLimit-Limit:
              schema:
                type: integer
              description: Project-wide limit, when supplied by the rate limiter.
            X-RateLimit-Remaining:
              schema:
                type: integer
              description: Remaining project requests, when supplied by the rate limiter.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                  - meta
                properties:
                  error:
                    type: object
                    required:
                      - code
                      - message
                    properties:
                      code:
                        type: string
                      message:
                        anyOf:
                          - type: string
                          - type: array
                            items:
                              type: string
                  meta:
                    type: object
                    required:
                      - requestId
                    properties:
                      requestId:
                        type: string
        '404':
          description: Request failed. Check error.code and meta.requestId.
          headers:
            X-Request-Id:
              schema:
                type: string
              description: Request identifier for troubleshooting.
            Cache-Control:
              schema:
                type: string
                const: no-store
            X-RateLimit-Limit:
              schema:
                type: integer
              description: Project-wide limit, when supplied by the rate limiter.
            X-RateLimit-Remaining:
              schema:
                type: integer
              description: Remaining project requests, when supplied by the rate limiter.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                  - meta
                properties:
                  error:
                    type: object
                    required:
                      - code
                      - message
                    properties:
                      code:
                        type: string
                      message:
                        anyOf:
                          - type: string
                          - type: array
                            items:
                              type: string
                  meta:
                    type: object
                    required:
                      - requestId
                    properties:
                      requestId:
                        type: string
        '409':
          description: Request failed. Check error.code and meta.requestId.
          headers:
            X-Request-Id:
              schema:
                type: string
              description: Request identifier for troubleshooting.
            Cache-Control:
              schema:
                type: string
                const: no-store
            X-RateLimit-Limit:
              schema:
                type: integer
              description: Project-wide limit, when supplied by the rate limiter.
            X-RateLimit-Remaining:
              schema:
                type: integer
              description: Remaining project requests, when supplied by the rate limiter.
            Retry-After:
              schema:
                type: integer
              description: Present for idempotency_in_progress; wait before retrying.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                  - meta
                properties:
                  error:
                    type: object
                    required:
                      - code
                      - message
                    properties:
                      code:
                        type: string
                      message:
                        anyOf:
                          - type: string
                          - type: array
                            items:
                              type: string
                  meta:
                    type: object
                    required:
                      - requestId
                    properties:
                      requestId:
                        type: string
        '413':
          description: >-
            JSON body exceeds the 100 KB limit. This can be rejected before the
            controller, so the public error envelope is not guaranteed.
        '429':
          description: Request failed. Check error.code and meta.requestId.
          headers:
            X-Request-Id:
              schema:
                type: string
              description: Request identifier for troubleshooting.
            Cache-Control:
              schema:
                type: string
                const: no-store
            X-RateLimit-Limit:
              schema:
                type: integer
              description: Project-wide limit, when supplied by the rate limiter.
            X-RateLimit-Remaining:
              schema:
                type: integer
              description: Remaining project requests, when supplied by the rate limiter.
            Retry-After:
              schema:
                type: integer
              description: Seconds before retrying.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                  - meta
                properties:
                  error:
                    type: object
                    required:
                      - code
                      - message
                    properties:
                      code:
                        type: string
                      message:
                        anyOf:
                          - type: string
                          - type: array
                            items:
                              type: string
                  meta:
                    type: object
                    required:
                      - requestId
                    properties:
                      requestId:
                        type: string
        '500':
          description: Request failed. Check error.code and meta.requestId.
          headers:
            X-Request-Id:
              schema:
                type: string
              description: Request identifier for troubleshooting.
            Cache-Control:
              schema:
                type: string
                const: no-store
            X-RateLimit-Limit:
              schema:
                type: integer
              description: Project-wide limit, when supplied by the rate limiter.
            X-RateLimit-Remaining:
              schema:
                type: integer
              description: Remaining project requests, when supplied by the rate limiter.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                  - meta
                properties:
                  error:
                    type: object
                    required:
                      - code
                      - message
                    properties:
                      code:
                        type: string
                      message:
                        anyOf:
                          - type: string
                          - type: array
                            items:
                              type: string
                  meta:
                    type: object
                    required:
                      - requestId
                    properties:
                      requestId:
                        type: string
        '503':
          description: Request failed. Check error.code and meta.requestId.
          headers:
            X-Request-Id:
              schema:
                type: string
              description: Request identifier for troubleshooting.
            Cache-Control:
              schema:
                type: string
                const: no-store
            X-RateLimit-Limit:
              schema:
                type: integer
              description: Project-wide limit, when supplied by the rate limiter.
            X-RateLimit-Remaining:
              schema:
                type: integer
              description: Remaining project requests, when supplied by the rate limiter.
          content:
            application/json:
              schema:
                type: object
                required:
                  - error
                  - meta
                properties:
                  error:
                    type: object
                    required:
                      - code
                      - message
                    properties:
                      code:
                        type: string
                      message:
                        anyOf:
                          - type: string
                          - type: array
                            items:
                              type: string
                  meta:
                    type: object
                    required:
                      - requestId
                    properties:
                      requestId:
                        type: string
      security:
        - ApiKey: []
components:
  schemas:
    AnalyticsHistory:
      $schema: https://json-schema.org/draft/2020-12/schema
      type: object
      properties:
        postId:
          type: string
          format: uuid
          pattern: >-
            ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
        accountId:
          type: string
          format: uuid
          pattern: >-
            ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
        items:
          type: array
          items:
            type: object
            properties:
              metrics:
                type: object
                properties:
                  views:
                    type: object
                    properties:
                      value:
                        type:
                          - string
                          - 'null'
                      status:
                        type: string
                        enum:
                          - available
                          - unavailable
                          - unsupported
                          - permission_required
                      collectedAt:
                        anyOf:
                          - type: string
                            format: date-time
                            pattern: >-
                              ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                          - type: 'null'
                    required:
                      - value
                      - status
                      - collectedAt
                  reach:
                    type: object
                    properties:
                      value:
                        type:
                          - string
                          - 'null'
                      status:
                        type: string
                        enum:
                          - available
                          - unavailable
                          - unsupported
                          - permission_required
                      collectedAt:
                        anyOf:
                          - type: string
                            format: date-time
                            pattern: >-
                              ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                          - type: 'null'
                    required:
                      - value
                      - status
                      - collectedAt
                  likes:
                    type: object
                    properties:
                      value:
                        type:
                          - string
                          - 'null'
                      status:
                        type: string
                        enum:
                          - available
                          - unavailable
                          - unsupported
                          - permission_required
                      collectedAt:
                        anyOf:
                          - type: string
                            format: date-time
                            pattern: >-
                              ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                          - type: 'null'
                    required:
                      - value
                      - status
                      - collectedAt
                  comments:
                    type: object
                    properties:
                      value:
                        type:
                          - string
                          - 'null'
                      status:
                        type: string
                        enum:
                          - available
                          - unavailable
                          - unsupported
                          - permission_required
                      collectedAt:
                        anyOf:
                          - type: string
                            format: date-time
                            pattern: >-
                              ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                          - type: 'null'
                    required:
                      - value
                      - status
                      - collectedAt
                  shares:
                    type: object
                    properties:
                      value:
                        type:
                          - string
                          - 'null'
                      status:
                        type: string
                        enum:
                          - available
                          - unavailable
                          - unsupported
                          - permission_required
                      collectedAt:
                        anyOf:
                          - type: string
                            format: date-time
                            pattern: >-
                              ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                          - type: 'null'
                    required:
                      - value
                      - status
                      - collectedAt
                  saves:
                    type: object
                    properties:
                      value:
                        type:
                          - string
                          - 'null'
                      status:
                        type: string
                        enum:
                          - available
                          - unavailable
                          - unsupported
                          - permission_required
                      collectedAt:
                        anyOf:
                          - type: string
                            format: date-time
                            pattern: >-
                              ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                          - type: 'null'
                    required:
                      - value
                      - status
                      - collectedAt
                  replies:
                    type: object
                    properties:
                      value:
                        type:
                          - string
                          - 'null'
                      status:
                        type: string
                        enum:
                          - available
                          - unavailable
                          - unsupported
                          - permission_required
                      collectedAt:
                        anyOf:
                          - type: string
                            format: date-time
                            pattern: >-
                              ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                          - type: 'null'
                    required:
                      - value
                      - status
                      - collectedAt
                  watch_time_seconds:
                    type: object
                    properties:
                      value:
                        type:
                          - string
                          - 'null'
                      status:
                        type: string
                        enum:
                          - available
                          - unavailable
                          - unsupported
                          - permission_required
                      collectedAt:
                        anyOf:
                          - type: string
                            format: date-time
                            pattern: >-
                              ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                          - type: 'null'
                    required:
                      - value
                      - status
                      - collectedAt
                  average_watch_time_seconds:
                    type: object
                    properties:
                      value:
                        type:
                          - string
                          - 'null'
                      status:
                        type: string
                        enum:
                          - available
                          - unavailable
                          - unsupported
                          - permission_required
                      collectedAt:
                        anyOf:
                          - type: string
                            format: date-time
                            pattern: >-
                              ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                          - type: 'null'
                    required:
                      - value
                      - status
                      - collectedAt
                required:
                  - views
                  - reach
                  - likes
                  - comments
                  - shares
                  - saves
                  - replies
                  - watch_time_seconds
                  - average_watch_time_seconds
              collectedAt:
                anyOf:
                  - type: string
                    format: date-time
                    pattern: >-
                      ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
                  - type: 'null'
            required:
              - metrics
              - collectedAt
      required:
        - postId
        - accountId
        - items
  securitySchemes:
    ApiKey:
      type: http
      scheme: bearer
      bearerFormat: Postinger API key

````

## Related topics

- [Read analytics](/guides/analytics.md)
- [Read account analytics report](/api-reference/analytics/read-account-analytics-report.md)
- [List published post performance](/api-reference/analytics/list-published-post-performance.md)
- [Read account counters and daily analytics](/api-reference/analytics/read-account-counters-and-daily-analytics.md)
- [List supported analytics metrics and platforms](/api-reference/analytics/list-supported-analytics-metrics-and-platforms.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.