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

# List post engagements

> Read cursor-paginated reactions and comments of delivered engagers. Rate limit: 120 requests per fixed minute per API key, shared by all post engagement monitor endpoints.

> [!NOTE]
>
> Post engagement monitoring requires a **V2 workspace API key**. Legacy V1 API keys are not supported by these endpoints. Monitors and their credits belong to the V2 workspace associated with the key.

List the individual reactions and comments of delivered engagers, newest detection first. Set `limit` from 1 to 100 (default 50) and pass the returned `next_cursor` unchanged; it is `null` on the last page. Only engagements of engagers delivered (and paid for) are returned.

Each engagement has `engager_id`, `type` (`reaction` or `comment`), `post_url`, `source_url` (the followed source), `post_author_url`, `comment` (the comment text, or `null` for a reaction), `occurred_at` (when the person engaged, or `null` when unknown), and `detected_at`.

Reading engagements spends no credits.

## Next step

Use [List engagers](https://docs.airscale.io/api-reference/post-engagement-monitors/engagers.md) for one row per person.


## OpenAPI

````yaml openapi.json GET /v1/post-engagement-monitors/{monitor_id}/engagements
openapi: 3.1.0
info:
  title: Airscale Public API
  version: '2026-09-11'
  description: >-
    Search, enrich, resolve public business data, and monitor job changes with
    Airscale.
  x-airscale-source-repository: ViceScale/airscale-code
  x-airscale-source-sha: 1de19e1b70a052a4b8d9c2075021a7e5e7a94d51
servers:
  - url: https://api.airscale.io
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Search and discovery
    description: Search people, companies, and the web.
  - name: Contact data
    description: Find professional and personal contact data.
  - name: Profiles and reverse lookup
    description: Extract profiles or resolve a person from known contact data.
  - name: Post engagement
    description: Retrieve and enrich people who liked or commented on LinkedIn posts.
  - name: LinkedIn content
    description: >-
      Search LinkedIn posts, read profile and company feeds, and retrieve
      profile comments and comment reactions.
  - name: Job change monitoring
    description: Track LinkedIn profiles and receive job-change events.
  - name: New hire monitoring
    description: Watch companies or the market for people who start a matching role.
  - name: Post engagement monitoring
    description: >-
      Follow LinkedIn company pages and profiles and receive the people who
      engage with their posts.
  - name: Account
    description: Inspect workspace account state.
  - name: Miscellaneous
    description: >-
      Find website technologies and check WhatsApp availability, Meta ads, and
      email deliverability.
paths:
  /v1/post-engagement-monitors/{monitor_id}/engagements:
    get:
      tags:
        - Post engagement monitoring
      summary: List engagements
      description: >-
        Returns cursor-paginated individual reactions and comments of delivered
        engagers, newest detection first. Send next_cursor unchanged on the next
        request. Requires a V2 workspace API key. Legacy V1 API keys are not
        supported. Monitors and their credits belong to the V2 workspace.
      operationId: listPostEngagementMonitorEngagements
      parameters:
        - name: monitor_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          example: 71111111-1111-4111-8111-111111111111
        - name: limit
          in: query
          required: false
          description: Number of engagements to return, from 1 to 100. Defaults to 50.
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 50
          example: 50
        - name: cursor
          in: query
          required: false
          description: Opaque cursor from the preceding response. Send it unchanged.
          schema:
            type: string
            minLength: 1
            maxLength: 200
          example: eyJ0IjoiMjAyNi0xMS0wMlQwOTowMjowMC4wMDBaIn0
      responses:
        '200':
          description: The requested engagement page.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: false
                required:
                  - engagements
                  - next_cursor
                properties:
                  engagements:
                    type: array
                    items:
                      $ref: '#/components/schemas/PostEngagementEngagement'
                  next_cursor:
                    type:
                      - string
                      - 'null'
              examples:
                success:
                  summary: Successful response
                  value:
                    engagements:
                      - id: 75555555-5555-4555-8555-555555555555
                        monitor_id: 71111111-1111-4111-8111-111111111111
                        engager_id: 73333333-3333-4333-8333-333333333333
                        type: comment
                        post_url: >-
                          https://www.linkedin.com/posts/example-person_example-activity-7376356221991178240
                        source_url: https://www.linkedin.com/in/example-person
                        post_author_url: https://www.linkedin.com/in/example-person
                        comment: Great launch, congratulations to the team.
                        occurred_at: '2026-11-01T17:16:11.000Z'
                        detected_at: '2026-11-02T09:01:00.000Z'
                      - id: 75555556-5555-4555-8555-555555555556
                        monitor_id: 71111111-1111-4111-8111-111111111111
                        engager_id: 73333333-3333-4333-8333-333333333333
                        type: reaction
                        post_url: >-
                          https://www.linkedin.com/posts/example-person_example-activity-7376356221991178240
                        source_url: https://www.linkedin.com/in/example-person
                        post_author_url: https://www.linkedin.com/in/example-person
                        comment: null
                        occurred_at: null
                        detected_at: '2026-11-02T09:01:00.000Z'
                    next_cursor: null
        '401':
          $ref: '#/components/responses/MonitorUnauthorized'
        '404':
          description: monitor_not_found in this workspace.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MonitorApiError'
              examples:
                error:
                  summary: Error response
                  value:
                    error:
                      code: monitor_not_found
                      message: Monitor not found
        '422':
          description: >-
            invalid_page (limit outside 1–100 or an unknown query parameter) or
            invalid_cursor.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MonitorApiError'
              examples:
                error:
                  summary: Error response
                  value:
                    error:
                      code: invalid_page
                      message: Invalid page
        '429':
          description: >-
            The API key has exceeded 120 requests in the current minute across
            post engagement monitor endpoints. Wait for the Retry-After seconds
            before retrying.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                error:
                  summary: Error response
                  value:
                    error: Too Many Requests
                    message: 'Rate limit exceeded: 120 requests per minute'
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: string
              example: '60'
        '503':
          description: >-
            service_unavailable: post engagement monitoring is temporarily
            unavailable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MonitorApiError'
components:
  schemas:
    PostEngagementEngagement:
      type: object
      additionalProperties: false
      required:
        - id
        - monitor_id
        - engager_id
        - type
        - post_url
        - source_url
        - post_author_url
        - comment
        - occurred_at
        - detected_at
      properties:
        id:
          type: string
          format: uuid
        monitor_id:
          type: string
          format: uuid
        engager_id:
          type: string
          format: uuid
        type:
          type: string
          enum:
            - reaction
            - comment
        post_url:
          type: string
        source_url:
          type: string
          description: The followed source whose post received the engagement.
        post_author_url:
          type:
            - string
            - 'null'
        comment:
          type:
            - string
            - 'null'
          description: The comment text for a comment; null for a reaction.
        occurred_at:
          type:
            - string
            - 'null'
          format: date-time
        detected_at:
          type: string
          format: date-time
    MonitorApiError:
      type: object
      additionalProperties: false
      required:
        - error
      properties:
        error:
          type: object
          additionalProperties: false
          required:
            - code
            - message
          properties:
            code:
              type: string
            message:
              type: string
    Error:
      type: object
      additionalProperties: true
      properties:
        error:
          type: string
        message:
          type: string
  responses:
    MonitorUnauthorized:
      description: >-
        A missing Bearer token returns
        {"error":"Unauthorized","message":"Missing or invalid bearer token"}. An
        unknown API key returns invalid_api_key.
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/MonitorApiError'
              - $ref: '#/components/schemas/Error'
          examples:
            invalidKey:
              summary: Unknown API key
              value:
                error:
                  code: invalid_api_key
                  message: The API key is not valid
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API key
      description: >-
        Use an Airscale workspace API key. Never expose the key in client-side
        code.

````

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