postproxy-dev Comments API

Read and reply to comments on published posts

Operations 12

GET /api/comments List comments across posts #
GET /api/posts/{post_id}/comments List comments on a post #
POST /api/posts/{post_id}/comments Create comment or reply #
GET /api/posts/{post_id}/comments/{id} Get comment #
PATCH /api/posts/{post_id}/comments/{id} Edit comment #
DELETE /api/posts/{post_id}/comments/{id} Delete comment #
POST /api/posts/{post_id}/comments/{id}/hide Hide comment #
POST /api/posts/{post_id}/comments/{id}/unhide Unhide comment #
POST /api/posts/{post_id}/comments/{id}/like Like comment #
POST /api/posts/{post_id}/comments/{id}/unlike Unlike comment #
POST /api/posts/{post_id}/comments/{id}/pin Pin comment #
POST /api/posts/{post_id}/comments/{id}/unpin Unpin comment #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/postproxy-dev:postproxy-dev-comments-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

postproxy-dev-comments-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Postproxy Social Media Comments API
  version: '2026-09-21'
  summary: Unified social media API for publishing, comments, direct messages, and reviews.
  description: 'The Postproxy API lets you programmatically create and manage social media posts across Facebook, Instagram, TikTok, LinkedIn, YouTube, X (Twitter), Threads, Pinterest, Bluesky, Telegram, and Google Business. Beyond publishing you can read and reply to comments, read and send direct messages, and reply to Google Business reviews and Facebook Page recommendations.


    Send one payload; Postproxy maps it to each platform''s rules and returns a per-platform outcome. Sandbox mode is included on all plans for development without real accounts.


    Human-readable reference: https://postproxy.dev/reference/overview/


    ## Versioning and deprecation


    The API has a single stable version served at https://api.postproxy.dev/api. Releases are identified by this document''s date-based `info.version`. Changes are additive: new endpoints, new optional parameters, and new response fields may appear, and clients should ignore fields they do not recognize. Existing fields, parameters, and status codes are not changed or removed without a deprecation cycle.


    When an endpoint or field is deprecated it is marked `deprecated: true` in this specification and announced in the changelog (https://postproxy.dev/getting-started/changelog/) at least 90 days before removal.'
  termsOfService: https://postproxy.dev/terms-conditions/
  contact:
    name: Postproxy Support
    url: https://postproxy.dev/developers/
    email: support@postproxy.dev
  x-versioning:
    strategy: stable-single-version
    spec-version-format: date (YYYY-MM-DD)
    compatibility: additive-only; breaking changes go through a deprecation cycle
    deprecation-signal: 'deprecated: true in this spec, plus a changelog announcement at least 90 days before removal'
    changelog: https://postproxy.dev/getting-started/changelog/
servers:
- url: https://api.postproxy.dev
  description: Production
security:
- bearerAuth: []
tags:
- name: Comments
  description: Read and reply to comments on published posts
  externalDocs:
    url: https://postproxy.dev/reference/comments/
paths:
  /api/comments:
    get:
      operationId: comments_list_across_posts
      summary: List comments across posts
      description: 'Retrieves comments spanning many posts and profiles in a single request. The response is flat: every comment, top-level or reply, is its own entry in data, linked to its parent by parent_external_id, ordered by created_at descending.'
      tags:
      - Comments
      externalDocs:
        url: https://postproxy.dev/reference/comments/
      parameters:
      - $ref: '#/components/parameters/ProfileGroupId'
      - name: post_ids
        in: query
        required: false
        schema:
          type: string
        description: Comma-separated post IDs. Omit to include every post in scope. Unknown or out-of-scope IDs are ignored. Passing a thread's parent post also returns comments on that thread's child posts.
      - name: profiles
        in: query
        required: false
        schema:
          type: string
        description: Comma-separated profile IDs or network names (e.g. instagram,twitter, abc123,def456, or mixed). Network names are matched against known platforms (facebook, instagram, tiktok, linkedin, youtube, twitter, threads, pinterest, bluesky, telegram); anything else is treated as a profile ID.
      - name: from
        in: query
        required: false
        schema:
          type: string
        description: ISO 8601 date/time — only comments received (created_at) at or after this point. A bare date means that date's start of day.
      - name: to
        in: query
        required: false
        schema:
          type: string
        description: ISO 8601 date/time — only comments received (created_at) at or before this point.
      - $ref: '#/components/parameters/Page'
      - $ref: '#/components/parameters/PerPage'
      responses:
        '200':
          description: Flat, paginated list of comments across posts. Pagination counts every comment, not just top-level ones.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommentCrossPostListResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /api/posts/{post_id}/comments:
    parameters:
    - name: post_id
      in: path
      required: true
      schema:
        type: string
      description: Post ID
    get:
      operationId: comments_list
      summary: List comments on a post
      description: Retrieves a paginated list of top-level comments for a published post on a specific profile. Each top-level comment includes a flat replies array containing all nested replies sorted by creation date.
      tags:
      - Comments
      externalDocs:
        url: https://postproxy.dev/reference/comments/
      parameters:
      - $ref: '#/components/parameters/ProfileGroupId'
      - name: profile_id
        in: query
        required: true
        schema:
          type: string
        description: Profile ID
      - $ref: '#/components/parameters/Page'
      - $ref: '#/components/parameters/PerPage'
      - name: from
        in: query
        required: false
        schema:
          type: string
        description: ISO 8601 date/time — only comments received (created_at) at or after this point. A bare date means that date's start of day. Applies to top-level comments only; a comment in range brings its full replies array. Unparseable values return 400.
      - name: to
        in: query
        required: false
        schema:
          type: string
        description: ISO 8601 date/time — only comments received (created_at) at or before this point.
      responses:
        '200':
          description: Paginated list of top-level comments, each with a replies array. Pagination applies to top-level comments only.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommentListResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    post:
      operationId: comments_create
      summary: Create comment or reply
      description: Creates a new comment on a published post, or a reply when parent_id is given. The comment is stored immediately with status pending and published to the platform asynchronously.
      tags:
      - Comments
      externalDocs:
        url: https://postproxy.dev/reference/comments/
      parameters:
      - $ref: '#/components/parameters/ProfileGroupId'
      - $ref: '#/components/parameters/IdempotencyKey'
      - name: profile_id
        in: query
        required: true
        schema:
          type: string
        description: Profile ID
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CommentCreateRequest'
      responses:
        '201':
          description: Comment created with status pending and external_id null; the status updates asynchronously once published to the platform.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Comment'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '422':
          $ref: '#/components/responses/ValidationError'
  /api/posts/{post_id}/comments/{id}:
    parameters:
    - name: post_id
      in: path
      required: true
      schema:
        type: string
      description: Post ID
    - name: id
      in: path
      required: true
      schema:
        type: string
      description: Comment ID — accepts either the Postproxy hashid or the platform's native (external) comment ID
    get:
      operationId: comments_get
      summary: Get comment
      description: Retrieves a single comment with its direct replies.
      tags:
      - Comments
      externalDocs:
        url: https://postproxy.dev/reference/comments/
      parameters:
      - $ref: '#/components/parameters/ProfileGroupId'
      - name: profile_id
        in: query
        required: true
        schema:
          type: string
        description: Profile ID
      responses:
        '200':
          description: The comment with its replies.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Comment'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    patch:
      operationId: comments_edit
      summary: Edit comment
      description: Replaces the text of a comment you published, asynchronously. Facebook and YouTube only. Once the platform confirms, `body` is replaced, `external_edited_at` is set and a `comment.edited` webhook fires; if the platform rejects the edit, `body` is unchanged and `comment.edit_failed` fires.
      tags:
      - Comments
      externalDocs:
        url: https://postproxy.dev/reference/comments/#edit-comment
      parameters:
      - $ref: '#/components/parameters/ProfileGroupId'
      - $ref: '#/components/parameters/IdempotencyKey'
      - name: profile_id
        in: query
        required: true
        schema:
          type: string
        description: Profile ID
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - body
              properties:
                body:
                  type: string
                  description: New comment text (`text` is accepted as an alias).
      responses:
        '200':
          description: Edit accepted for asynchronous processing.
          content:
            application/json:
              schema:
                type: object
                properties:
                  accepted:
                    type: boolean
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '422':
          $ref: '#/components/responses/ValidationError'
    delete:
      operationId: comments_delete
      summary: Delete comment
      description: Deletes a comment from the platform asynchronously.
      tags:
      - Comments
      externalDocs:
        url: https://postproxy.dev/reference/comments/
      parameters:
      - $ref: '#/components/parameters/ProfileGroupId'
      - $ref: '#/components/parameters/IdempotencyKey'
      - name: profile_id
        in: query
        required: true
        schema:
          type: string
        description: Profile ID
      responses:
        '200':
          description: Deletion accepted for asynchronous processing.
          content:
            application/json:
              schema:
                type: object
                properties:
                  accepted:
                    type: boolean
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '422':
          $ref: '#/components/responses/ValidationError'
  /api/posts/{post_id}/comments/{id}/hide:
    parameters:
    - name: post_id
      in: path
      required: true
      schema:
        type: string
      description: Post ID
    - name: id
      in: path
      required: true
      schema:
        type: string
      description: Comment ID — accepts either the Postproxy hashid or the platform's native (external) comment ID
    post:
      operationId: comments_hide
      summary: Hide comment
      description: Hides a comment on the platform asynchronously. Hidden comments are not visible to the public.
      tags:
      - Comments
      externalDocs:
        url: https://postproxy.dev/reference/comments/
      parameters:
      - $ref: '#/components/parameters/ProfileGroupId'
      - $ref: '#/components/parameters/IdempotencyKey'
      - name: profile_id
        in: query
        required: true
        schema:
          type: string
        description: Profile ID
      responses:
        '200':
          description: Hide accepted for asynchronous processing.
          content:
            application/json:
              schema:
                type: object
                properties:
                  accepted:
                    type: boolean
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
  /api/posts/{post_id}/comments/{id}/unhide:
    parameters:
    - name: post_id
      in: path
      required: true
      schema:
        type: string
      description: Post ID
    - name: id
      in: path
      required: true
      schema:
        type: string
      description: Comment ID — accepts either the Postproxy hashid or the platform's native (external) comment ID
    post:
      operationId: comments_unhide
      summary: Unhide comment
      description: Unhides a previously hidden comment on the platform asynchronously.
      tags:
      - Comments
      externalDocs:
        url: https://postproxy.dev/reference/comments/
      parameters:
      - $ref: '#/components/parameters/ProfileGroupId'
      - $ref: '#/components/parameters/IdempotencyKey'
      - name: profile_id
        in: query
        required: true
        schema:
          type: string
        description: Profile ID
      responses:
        '200':
          description: Unhide accepted for asynchronous processing.
          content:
            application/json:
              schema:
                type: object
                properties:
                  accepted:
                    type: boolean
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
  /api/posts/{post_id}/comments/{id}/like:
    parameters:
    - name: post_id
      in: path
      required: true
      schema:
        type: string
      description: Post ID
    - name: id
      in: path
      required: true
      schema:
        type: string
      description: Comment ID — accepts either the Postproxy hashid or the platform's native (external) comment ID
    post:
      operationId: comments_like
      summary: Like comment
      description: Likes a comment on the platform asynchronously.
      tags:
      - Comments
      externalDocs:
        url: https://postproxy.dev/reference/comments/
      parameters:
      - $ref: '#/components/parameters/ProfileGroupId'
      - $ref: '#/components/parameters/IdempotencyKey'
      - name: profile_id
        in: query
        required: true
        schema:
          type: string
        description: Profile ID
      responses:
        '200':
          description: Like accepted for asynchronous processing.
          content:
            application/json:
              schema:
                type: object
                properties:
                  accepted:
                    type: boolean
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
  /api/posts/{post_id}/comments/{id}/unlike:
    parameters:
    - name: post_id
      in: path
      required: true
      schema:
        type: string
      description: Post ID
    - name: id
      in: path
      required: true
      schema:
        type: string
      description: Comment ID — accepts either the Postproxy hashid or the platform's native (external) comment ID
    post:
      operationId: comments_unlike
      summary: Unlike comment
      description: Removes a like from a comment on the platform asynchronously.
      tags:
      - Comments
      externalDocs:
        url: https://postproxy.dev/reference/comments/
      parameters:
      - $ref: '#/components/parameters/ProfileGroupId'
      - $ref: '#/components/parameters/IdempotencyKey'
      - name: profile_id
        in: query
        required: true
        schema:
          type: string
        description: Profile ID
      responses:
        '200':
          description: Unlike accepted for asynchronous processing.
          content:
            application/json:
              schema:
                type: object
                properties:
                  accepted:
                    type: boolean
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
  /api/posts/{post_id}/comments/{id}/pin:
    parameters:
    - name: post_id
      in: path
      required: true
      schema:
        type: string
      description: Post ID
    - name: id
      in: path
      required: true
      schema:
        type: string
      description: Comment ID — accepts either the Postproxy hashid or the platform's native (external) comment ID
    post:
      operationId: comments_pin
      summary: Pin comment
      description: Pins a comment to the top of the video asynchronously. TikTok only — requires a profile connected on or after 2026-09-30. TikTok keeps one pinned comment per video, so pinning a second comment moves the pin.
      tags:
      - Comments
      externalDocs:
        url: https://postproxy.dev/reference/comments/
      parameters:
      - $ref: '#/components/parameters/ProfileGroupId'
      - $ref: '#/components/parameters/IdempotencyKey'
      - name: profile_id
        in: query
        required: true
        schema:
          type: string
        description: Profile ID
      responses:
        '200':
          description: Pin accepted for asynchronous processing.
          content:
            application/json:
              schema:
                type: object
                properties:
                  accepted:
                    type: boolean
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
  /api/posts/{post_id}/comments/{id}/unpin:
    parameters:
    - name: post_id
      in: path
      required: true
      schema:
        type: string
      description: Post ID
    - name: id
      in: path
      required: true
      schema:
        type: string
      description: Comment ID — accepts either the Postproxy hashid or the platform's native (external) comment ID
    post:
      operationId: comments_unpin
      summary: Unpin comment
      description: Removes the pin from a comment asynchronously. TikTok only.
      tags:
      - Comments
      externalDocs:
        url: https://postproxy.dev/reference/comments/
      parameters:
      - $ref: '#/components/parameters/ProfileGroupId'
      - $ref: '#/components/parameters/IdempotencyKey'
      - name: profile_id
        in: query
        required: true
        schema:
          type: string
        description: Profile ID
      responses:
        '200':
          description: Unpin accepted for asynchronous processing.
          content:
            application/json:
              schema:
                type: object
                properties:
                  accepted:
                    type: boolean
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
components:
  responses:
    ValidationError:
      description: Validation failed.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ValidationErrors'
    Unauthorized:
      description: Invalid, missing, or insufficient API key permissions.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            invalidKey:
              value:
                error: Invalid API key
    NotFound:
      description: Resource does not exist or is not accessible.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            notFound:
              value:
                error: Not found
    MethodNotAllowed:
      description: Unsupported method for this platform or resource.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    BadRequest:
      description: Missing required parameters.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/BadRequestError'
  schemas:
    CommentCreateRequest:
      type: object
      description: Payload for creating a comment or reply on a published post.
      required:
      - body
      properties:
        body:
          type: string
          description: Comment text content. (The legacy text parameter is still accepted as an alias.)
        parent_id:
          type: string
          description: ID of comment to reply to (Postproxy ID or external ID). Omit to comment on the post itself.
    CommentCrossPostListResponse:
      type: object
      description: 'Flat, paginated list of comments across posts and profiles. Replies are not nested: every comment is its own entry, linked to its parent by parent_external_id.'
      properties:
        total:
          type: integer
          description: Total number of matching comments, replies included
        page:
          type: integer
          description: Current page number
        per_page:
          type: integer
          description: Items per page
        data:
          type: array
          description: Flat array of comment objects
          items:
            allOf:
            - $ref: '#/components/schemas/Comment'
            - type: object
              properties:
                post_id:
                  type: string
                  description: ID of the post the comment belongs to
                profile_id:
                  type: string
                  description: ID of the profile the comment was left on
                platform:
                  type: string
                  description: Network name, e.g. instagram
    PlatformErrorDetails:
      type:
      - object
      - 'null'
      description: Structured platform error (omitted when no platform error info is available).
      properties:
        platform_error_code:
          type:
          - string
          - 'null'
          description: Error code returned by the platform API
        platform_error_subcode:
          type:
          - string
          - 'null'
          description: Error subcode returned by the platform API
        platform_error_message:
          type:
          - string
          - 'null'
          description: Error message returned by the platform API
        postproxy_note:
          type:
          - string
          - 'null'
          description: Additional context from Postproxy about the error
    ValidationErrors:
      type: object
      properties:
        errors:
          type: array
          items:
            type: string
      required:
      - errors
    CommentAttachment:
      type: object
      description: Media attached to a comment. Postproxy downloads each asset to durable storage; the url is stable once status is processed.
      properties:
        id:
          type: string
          description: Attachment hashid
        type:
          type: string
          enum:
          - image
          - video
          - audio
          - gif
          - external
          - file
        url:
          type:
          - string
          - 'null'
          description: Stable storage URL to the asset. While status is pending, this temporarily falls back to the source URL on the platform until the file is mirrored to Postproxy storage.
        status:
          type: string
          enum:
          - pending
          - processed
          - failed
          description: pending (still being mirrored), processed (stored and ready), failed (could not be downloaded)
        external_id:
          type:
          - string
          - 'null'
          description: Platform-side identifier for the attachment (e.g. Facebook attachment target ID). Omitted when the platform did not provide one.
    Comment:
      type: object
      description: A comment on a published post.
      properties:
        id:
          type: string
          description: Unique comment identifier (ID)
        external_id:
          type:
          - string
          - 'null'
          description: Platform's native comment ID (null for pending comments)
        body:
          type: string
          description: Comment text content
        status:
          type: string
          enum:
          - synced
          - pending
          - published
          - failed
          - failed_waiting_for_retry
          - delivery_unconfirmed
          description: Comment status. Only published and failed are terminal — treat every other value as still in progress.
        error:
          type:
          - string
          - 'null'
          description: Error summary if the comment failed to publish (null otherwise)
        error_details:
          $ref: '#/components/schemas/PlatformErrorDetails'
        author_username:
          type:
          - string
          - 'null'
          description: Author's display name or username
        author_avatar_url:
          type:
          - string
          - 'null'
          description: Stable Postproxy storage URL of the author's profile picture once mirrored; the platform URL until then
        author_external_id:
          type:
          - string
          - 'null'
          description: Author's platform-specific ID
        metadata:
          $ref: '#/components/schemas/CommentMetadata'
        parent_external_id:
          type:
          - string
          - 'null'
          description: Parent comment's external ID (null for top-level comments)
        like_count:
          type: integer
          description: Number of likes on the comment
        is_hidden:
          type: boolean
          description: Whether the comment is hidden
        permalink:
          type:
          - string
          - 'null'
          description: Direct URL to the comment on the platform (when available)
        platform_data:
          type:
          - object
          - 'null'
          description: Platform-specific metadata
          additionalProperties: true
        attachments:
          type: array
          items:
            $ref: '#/components/schemas/CommentAttachment'
          description: Media attached to the comment. Empty array when there are none. Always empty on a freshly created (pending) comment.
        external_edited_at:
          type:
          - string
          - 'null'
          description: ISO 8601 timestamp of the last edit made through Postproxy (null if never edited)
        posted_at:
          type:
          - string
          - 'null'
          description: ISO 8601 timestamp when the comment was posted on the platform
        created_at:
          type: string
          description: ISO 8601 timestamp of record creation
        replies:
          type: array
          items:
            $ref: '#/components/schemas/Comment'
          description: All replies (regardless of nesting depth) flattened under the root top-level comment, sorted by created_at ascending. Present on per-post list and get responses.
    CommentListResponse:
      type: object
      description: Paginated list of top-level comments for a post.
      properties:
        total:
          type: integer
          description: Total number of top-level comments
        page:
          type: integer
          description: Current page number
        per_page:
          type: integer
          description: Items per page
        data:
          type: array
          items:
            $ref: '#/components/schemas/Comment'
          description: Array of top-level comment objects, each with a replies array
    BadRequestError:
      type: object
      properties:
        status:
          type: integer
          const: 400
        error:
          type: string
        message:
          type: string
    Error:
      type: object
      properties:
        error:
          type: string
      required:
      - error
    CommentMetadata:
      type:
      - object
      - 'null'
      description: Additional author signals fetched asynchronously from the platform after the comment is ingested. Null until the lookup completes; individual keys may be absent depending on platform support.
      properties:
        author_fetched_at:
          type: string
          description: ISO 8601 timestamp of the last author-info refresh
        is_verified_user:
          type: boolean
          description: Author has a verified account (instagram)
        is_user_follow_business:
          type: boolean
          description: Author follows the business profile (instagram)
        is_business_follow_user:
          type: boolean
          description: The business profile follows the author (instagram)
        follower_count:
          type: integer
          description: Author's follower count (instagram)
      additionalProperties: true
  parameters:
    PerPage:
      name: per_page
      in: query
      required: false
      description: Number of items per page.
      schema:
        type: integer
        default: 10
    ProfileGroupId:
      name: profile_group_id
      in: query
      required: false
      description: Profile group context for the request. Optional when the API key is scoped to a profile group (that group is used automatically); with a full-access key, defaults to the first profile group in the account.
      schema:
        type: string
    Page:
      name: page
      in: query
      required: false
      description: Page number (1-based). Passing 0 returns page 1.
      schema:
        type: integer
        default: 1
        minimum: 0
    IdempotencyKey:
      name: Idempotency-Key
      in: header
      required: false
      description: 'Optional idempotency key (up to 255 characters; a UUID is ideal). Retrying a successful write with the same key replays the original response (with an Idempotent-Replay: true header) instead of executing again. Stored responses are kept for 24 hours; only 2xx responses are stored.'
      schema:
        type: string
        maxLength: 255
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key sent as a Bearer token in the Authorization header. Keys are either full-access (entire account) or scoped to a single profile group. Create keys at https://app.postproxy.dev under Settings → API Keys.
externalDocs:
  description: Full API reference
  url: https://postproxy.dev/reference/overview/