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

# Get a Public Reply Note

> Retrieve the body of a single public reply note by its note ID — the pull counterpart to the content-free `submission.public_reply` webhook. The webhook tells you *that* a reply happened and gives you a `note_id`; this endpoint returns the text.

**Only public replies are retrievable.** Internal notes are never returned. A note ID that does not exist, identifies an internal note, belongs to a different submission than the `displayId` you passed, or belongs to another company all return the same `404` with the same body — the responses are deliberately indistinguishable, so a non-public note's existence is never revealed.

Company scoping is an **exact** match on the calling partner's own company, mirroring the webhook side: you can resolve exactly the note IDs you were pushed, and no others. A parent company cannot read a child company's note even where broader visibility exists elsewhere in the platform.



## OpenAPI

````yaml get /submission/{displayId}/notes/{id}
openapi: 3.0.0
info:
  title: Cover Whale API V1
  contact:
    name: Cover Whale API Team
  version: '1.0'
servers:
  - url: https://api.coverwhale.dev/v1
security:
  - AccessToken: []
tags:
  - name: Authentication
    description: Authenticating & Interacting with the API
paths:
  /submission/{displayId}/notes/{id}:
    get:
      tags:
        - Submissions
      summary: Get a Public Reply Note
      description: >-
        Retrieve the body of a single public reply note by its note ID — the
        pull counterpart to the content-free `submission.public_reply` webhook.
        The webhook tells you *that* a reply happened and gives you a `note_id`;
        this endpoint returns the text.


        **Only public replies are retrievable.** Internal notes are never
        returned. A note ID that does not exist, identifies an internal note,
        belongs to a different submission than the `displayId` you passed, or
        belongs to another company all return the same `404` with the same body
        — the responses are deliberately indistinguishable, so a non-public
        note's existence is never revealed.


        Company scoping is an **exact** match on the calling partner's own
        company, mirroring the webhook side: you can resolve exactly the note
        IDs you were pushed, and no others. A parent company cannot read a child
        company's note even where broader visibility exists elsewhere in the
        platform.
      operationId: getSubmissionNote
      parameters:
        - name: Accept
          in: header
          required: true
          schema:
            type: string
          example: application/json
        - name: AccessToken
          in: header
          required: true
          schema:
            type: string
          example: eyJraWQiOiJnRk5oTTh2RnRKWXVDVXU1S........
        - name: displayId
          in: path
          description: Submission display ID. Must be the submission the note belongs to.
          required: true
          schema:
            type: string
          example: '2261310'
        - name: id
          in: path
          description: >-
            Note ID, as delivered in the `note_id` field of a
            `submission.public_reply` webhook.
          required: true
          schema:
            type: string
          example: '884213'
      responses:
        '200':
          description: Public reply note
          content:
            application/json:
              schema:
                properties:
                  note_id:
                    description: The note's ID, echoed back as a string.
                    type: string
                    example: '884213'
                  display_id:
                    description: The submission the note belongs to.
                    type: string
                    example: '2261310'
                  body:
                    description: The reply text. There is no separate subject field.
                    type: string
                    example: Your down payment has been received — coverage is active.
                  occurred_at:
                    description: When the note was created. ISO 8601 with offset.
                    type: string
                    format: date-time
                    example: '2026-07-06T20:41:07+00:00'
                type: object
        '401':
          description: Unauthorized — missing or invalid AccessToken
        '404':
          description: >-
            Not found. Returned identically for a missing note, an internal
            (non-public) note, a display ID that does not match the note, and a
            note belonging to another company.
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: string
                    example: Not found.
                type: object
components:
  securitySchemes:
    AccessToken:
      type: apiKey
      description: >-
        JWT returned as AccessToken by the /authentication endpoint (the Cognito
        ID token carrying the email claim). It expires after 3600 seconds.
      name: AccessToken
      in: header

````

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