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

# Get Private Notes in a Chat

> This endpoint retrieves a paginated list of all private notes from a specific chat (in descending order of timestamp). 

#### Response

The response is an array of JSON note objects. Refer to [the note object here](/api-reference/objects/the-note-object)



## OpenAPI

````yaml GET /chats/{chat_id}/notes
openapi: 3.0.3
info:
  title: API - Local
  description: >-
    #### Welcome to the official Postman collection of Periskope API


    Periskope APIs enable you automate actions on your WhatsApp phone, and the
    Periskope platform


    - Read more about the APIs & webhooks here -
    [https://docs.periskope.app/api-reference/introduction](https://docs.periskope.app/api-reference/introduction)
        
    - We encourage responsible usage of the APIs. Follow these best practices
    and recommendations for safe actions on WhatsApp -
    [https://docs.periskope.app/get-started/best-practices](https://docs.periskope.app/get-started/best-practices)
        

    #### Getting Started


    ##### Pre-requisites:


    1. **Sign up for a free account on Periskope:** To use the Periskope API,
    you need to have an active Periskope account. If you don’t have one, you can
    sign up for a 7-day free trial [here](https://console.periskope.app).
        
    2. **Scan the QR code from WhatsApp to connect your phone:** A connected
    phone is required to use the APIs
        
    3. **Go to** [Settings &gt;
    API](https://console.periskope.app/settings/api), and generate an API key
    for your organization - The API key is used to authenticate every request.
    Please keep this secure
        

    ##### Using Postman:


    1. **Fork the collection so you can edit values and test the APIs in your
    own postman environment:** To fork the collection, click on the three dots
    next to v1. Then click on create a fork (_shortcut: Ctrl + Alt + F)._
        
    2. **Update the value of the variables in the collection:**  
        \- Update the API key with the key generated in Step 3  
        \- Update the phone number with your connected number. This number will be added to the `x-phone` header across requests
        
        It must be in the format of country code+number, with no special characters or spaces _e.g. +91 98745 32456 becomes 919874532456_
        

    For any help or feedback, please contact us at
    [support@periskope.app](https://mailto:support@periskope.app), or ping us on
    [WhatsApp](https://what.sapp.link/periskope)
  version: 1.0.0
  contact: {}
servers:
  - url: https://api.periskope.app/v1
security:
  - bearerAuth: []
tags:
  - name: contacts
  - name: tickets
  - name: tasks
  - name: phones
  - name: message
  - name: queue
  - name: chats
  - name: group
  - name: members
  - name: webhooks
paths:
  /chats/{chat_id}/notes:
    get:
      tags:
        - chats
      summary: Get Private Notes in a Chat
      description: >-
        This endpoint retrieves a paginated list of all private notes from a
        specific chat (in descending order of timestamp). 


        #### Response


        The response is an array of JSON note objects. Refer to [the note object
        here](/api-reference/objects/the-note-object)
      operationId: getNotesByChat
      parameters:
        - name: chat_id
          in: path
          required: true
          schema:
            type: string
            example: 9184090XXXXX@c.us
            description: >-
              - The unique id of a chat 

              - For groups, enter the chat_id of the group. This will be a
              string that ends with @g.us

              - For 1-1 chats, enter the country_code + number of the recipient
              e.g. [919537851844@c.us](https://mailto:919537851844@c.us) (The
              @c.us is optional)
        - name: offset
          in: query
          schema:
            type: number
            example: '0'
            description: |-
              - The offset value for paginating the results
              - Default `0`
        - name: limit
          in: query
          schema:
            type: number
            example: '10'
            description: |-
              - The maximum number of notes to retrieve
              - Default `500`
        - name: x-phone
          in: header
          schema:
            type: string
            example: '{{orgPhone}}'
          description: >-
            **Optional.** The phone to scope this request to — in country code +
            number format with no spaces or special characters (e.g.
            919876543210), or the phone_id (phone-xxxxxxxxxxxx). When set, only
            notes in this chat for that phone are returned. When omitted, notes
            in this chat are returned — across all phones your token can access
            (the phones in your token's scope, or every phone in your
            organization if the token is unscoped). Passing a phone that is
            outside your token's scope returns a 401.
        - name: start_time
          in: query
          schema:
            type: string
            example: 2025-04-25 or 2025-04-25T00:00:00Z
            description: '- Filter for all notes from the start_time timestamp onwards'
        - name: end_time
          in: query
          schema:
            type: string
            example: 2025-04-31 or 2025-04-31T23:59:59Z
            description: '- Filter for all notes up to the end_time timestamp'
      responses:
        '200':
          description: Note
          headers:
            Access-Control-Allow-Origin:
              schema:
                type: string
                example: '*'
            Connection:
              schema:
                type: string
                example: keep-alive
            Content-Length:
              schema:
                type: string
                example: '70'
            Date:
              schema:
                type: string
                example: Wed, 22 Jan 2025 10:07:53 GMT
            ETag:
              schema:
                type: string
                example: W/"46-G83wmhGAIRrmKrMUWfoeGk61n3A"
            Keep-Alive:
              schema:
                type: string
                example: timeout=5
            X-Powered-By:
              schema:
                type: string
                example: Express
            X-RateLimit-Limit:
              schema:
                type: string
                example: '10'
            X-RateLimit-Remaining:
              schema:
                type: string
                example: '9'
            X-RateLimit-Reset:
              schema:
                type: string
                example: '1737540475'
            x-periskope-org-id:
              schema:
                type: string
                example: 2997dd64-89bf-48d3-9a22-b314fca017e5
            x-periskope-phone-id:
              schema:
                type: string
                example: phone-bqzvyibhmwkaergr
            x-periskope-trace-id:
              schema:
                type: string
                example: bec43610-d8a8-11ef-8033-3b03afb6e098
          content:
            application/json:
              schema:
                type: object
                properties:
                  from:
                    type: number
                    example: 1
                    description: The starting index of the notes returned
                  to:
                    type: number
                    example: 10
                    description: The ending index of the notes returned
                  start_time:
                    type: string
                    example: '2025-08-15T00:00:00Z'
                    description: >-
                      The start_time of the notes returned. The format should be
                      YYYY-MM-DDTHH:MM:SSZ
                  end_time:
                    type: string
                    example: '2025-08-15T23:59:59Z'
                    description: >-
                      The end_time of the notes returned. The format should be
                      YYYY-MM-DDTHH:MM:SSZ
                  count:
                    type: number
                    example: 10
                    description: The total number of notes returned
                  notes:
                    type: array
                    description: >-
                      An array of note objects. Refer to [the note object
                      here](/api-reference/objects/the-note-object)
              examples:
                Notes:
                  value:
                    from: 1
                    start_time: '2025-08-15T00:00:00Z'
                    end_time: '2025-08-15T23:59:59Z'
                    to: 2
                    count: 2
                    notes:
                      - message_id: true_2dc1aa2c-d711-4497-864d-92bb5709xxxx_api
                        org_id: 2997dd64-89bf-48d3-9a22-b314fca0xxxx
                        ack: '3'
                        body: testing with a new note payload
                        from_me: true
                        message_type: audio
                        chat_id: 91882424xxxx@c.us
                        timestamp: '2025-08-20T10:58:27.642+00:00'
                        org_phone: 91852718xxxx@c.us
                        performed_by: api
                        prev_body: null
                        quoted_message_id: null
                        sender_phone: 91852718xxxx@c.us
                        sent_message_id: 2dc1aa2c-d711-4497-864d-92bb57092073
                        updated_at: '2025-08-20T10:58:27.642+00:00'
                        is_private_note: true
                        media:
                          path: >-
                            https://storage.googleapis.com/periskope-attachments/2997dd64-89bf-48d3-9a22-b314fca017e5%2F918527184400%40c.us%2F2dc1aa2c-d711-4497-864d-92bb57092073%2Fbeep.wav
                          filename: beep.wav
                          mimetype: audio/wav
                        unique_id: 2dc1aa2c-d711-4497-864d-92bb57092073
                        mentioned_ids: []
                        is_deleted: null
                      - message_id: true_51421242-ec06-4454-bbc0-24249c15xxxx_api
                        org_id: 2997dd64-89bf-48d3-9a22-b314fca0xxxx
                        ack: '3'
                        body: testing with a new note payload
                        from_me: true
                        message_type: audio
                        chat_id: 91882424xxxx@c.us
                        timestamp: '2025-08-20T10:26:30.091+00:00'
                        org_phone: 91852718xxxx@c.us
                        performed_by: api
                        prev_body: null
                        quoted_message_id: 52643136-1573-4011-ad22-b95ca6ea8e0c
                        sender_phone: 91852718xxxx@c.us
                        sent_message_id: 51421242-ec06-4454-bbc0-24249c150303
                        updated_at: '2025-08-20T10:26:30.091+00:00'
                        is_private_note: true
                        media:
                          path: >-
                            https://storage.googleapis.com/periskope-attachments/2997dd64-89bf-48d3-9a22-b314fca017e5%2F918527184400%40c.us%2F51421242-ec06-4454-bbc0-24249c150303%2Fbeep.wav
                          filename: beep.wav
                          mimetype: audio/wav
                        unique_id: 51421242-ec06-4454-bbc0-24249c150303
                        mentioned_ids: []
                        is_deleted: null
      x-codeSamples:
        - lang: TypeScript
          label: Node.js
          source: |-
            import { PeriskopeApi } from '@periskope/periskope-client';

            const client = new PeriskopeApi({
              authToken: 'YOUR_API_KEY',
              phone: 'YOUR_PHONE_NUMBER', // Optional for this endpoint — omit to return notes in this chat across all phones your token can access
            });

            async function fetchNotes() {
              const response = await client.chat.getNotesByChat({
                chat_id: '91987654xxxx@c.us'
              });

              console.log(response);
            }
            fetchNotes();
        - lang: cURL
          label: cURL
          source: >-
            # x-phone is optional for this endpoint — omit it to return notes in
            this chat across all phones your token can access

            curl -X GET \
              https://api.periskope.app/v1/chats/{chat_id}/notes \
              -H 'Authorization: Bearer <token>' \
              -H 'Content-Type: application/json' \
              -H 'x-phone: YOUR_PHONE_NUMBER' \
              -d '{
                "chat_id": "919537851844@c.us",
                "start_time": "2025-08-10 10:00:00",
                "end_time": "2025-08-15 10:00:00",
                "offset": "0",
                "limit": "1000"
            }'
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````