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

# Get PGY blogger note cases v2 (cross-platform)

> Get PGY blogger note cases v2 (cross-platform)

Get PGY blogger note cases v2 (cross-platform)

**Pricing** — base \$0.029 per successful call (provider cost × 1.45; final charge scales by your plan multiplier). Charged only when the upstream response body `code` is `200`.

<Note>
  Response structure is not yet fully documented — **refer to the actual API response**.
</Note>

## Example

```bash theme={null}
curl -X POST "https://api.aisa.one/apis/v1/tikhub/xiaohongshu/pgy/get_blogger_notes_v2" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'  # see request schema below
```


## OpenAPI

````yaml openapi/tikhub.json POST /tikhub/xiaohongshu/pgy/get_blogger_notes_v2
openapi: 3.0.0
info:
  title: TikHub API
  description: >-
    Multi-platform social media data — Douyin, TikTok, Bilibili, Kuaishou,
    Weibo, Xiaohongshu, Zhihu, and commercial (Xingtu/Huahuo/Billboard)
    endpoints.
  version: 1.0.0
servers:
  - url: https://api.aisa.one/apis/v1
security:
  - bearerAuth: []
paths:
  /tikhub/xiaohongshu/pgy/get_blogger_notes_v2:
    post:
      tags:
        - TikHub - Xiaohongshu
      summary: Get PGY blogger note cases v2 (cross-platform)
      description: >-
        Xiaohongshu (pgy). Pricing and billing notes describe the upstream
        provider. Use the AIsa price quote for gateway calls.


        ### Purpose

        - Paginated note cases of a blogger (v2). A **separate endpoint** from
        `the upstream V1 note-list endpoint (not exposed in this
        specification)`:
          wider coverage (incl. cross-platform notes) and a different response shape
        - **Use this when `the upstream V1 note-list endpoint (not exposed in
        this specification)` returns an empty list**

        - The two endpoints differ in note_type values and return fields; do not
        mix them


        ### Request Body Parameters

        - user_id: **required**, blogger user ID

        - page_number: page number from 1

        - page_size: **1-8** (fixed at 8 on the PGY web page, cannot be larger)

        - note_type: 0=all (default), 1=image-text, 2=video

        - order_type: 1=newest (default), 2=most read, 3=most engaged


        ### Return

        - noteList[]: each item has noteInfo (noteId / title / imageUrl /
        notePublishTime /
          noteType / impNum / readNum / engageNum / favNum) + userInfo
        - total: total notes matching the filters


        ### Paging

        - Change page_number only, keep other params identical; an empty array
        means no more data


        ### Response shape (two layers)

        - `resp["data"]` is PGY's raw envelope (with `code`/`msg`/`success`);
        the payload is one level deeper

        - Correct access: `data = resp["data"]["data"]` — every field listed
        under "Return" lives here


        ### Billing

        - HTTP 200 → **charged**, including "no result" (`data` is null, e.g. ID
        not found or filters matched
          nothing): the request did reach PGY, so retrying on empty data just burns quota
        - HTTP 400 → not charged (malformed params, or upstream
        unavailable/error)
      operationId: post_tikhub_xiaohongshu_pgy_get_blogger_notes_v2
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NotesV2Req'
        required: true
      responses:
        '200':
          description: >-
            Successful response. The outer object follows `ResponseModel`; the
            endpoint-specific payload is in `data`.


            ### Return

            - noteList[]: each item has noteInfo (noteId / title / imageUrl /
            notePublishTime /
              noteType / impNum / readNum / engageNum / favNum) + userInfo
            - total: total notes matching the filters


            ### Response shape (two layers)

            - `resp["data"]` is PGY's raw envelope (with
            `code`/`msg`/`success`); the payload is one level deeper

            - Correct access: `data = resp["data"]["data"]` — every field listed
            under "Return" lives here
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseModel'
components:
  schemas:
    NotesV2Req:
      properties:
        user_id:
          type: string
          title: User Id
          description: Blogger user ID
          example: 5c668b3e0000000012021605
        page_number:
          type: integer
          maximum: 1000
          minimum: 1
          title: Page Number
          description: Page number, from 1
          default: 1
          example: 1
        page_size:
          type: integer
          maximum: 8
          minimum: 1
          title: Page Size
          description: Page size, 1-8 (fixed at 8 on PGY web)
          default: 8
          example: 8
        note_type:
          type: integer
          enum:
            - 0
            - 1
            - 2
          title: Note Type
          description: |-
            Note type: 0=All types (default), 1=Image & text, 2=Video

            Usage: 0=all (default), 1=image-text, 2=video
          default: 0
          example: 0
        order_type:
          type: integer
          enum:
            - 1
            - 2
            - 3
          title: Order Type
          description: |-
            Sort: 1=Latest (default), 2=Most read, 3=Most engaged

            Usage: 1=newest (default), 2=most read, 3=most engaged
          default: 1
          example: 1
      additionalProperties: false
      type: object
      required:
        - user_id
      title: NotesV2Req
    ResponseModel:
      properties:
        code:
          type: integer
          title: Code
          description: HTTP status code
          default: 200
        request_id:
          title: Request Id
          description: Unique request identifier
          nullable: true
          type: string
        message:
          type: string
          title: Message
          description: Response message (EN-US)
          default: Request successful. This request will incur a charge.
        message_zh:
          type: string
          title: Message Zh
          description: Response message (ZH-CN)
          default: 请求成功，本次请求将被计费。
        support:
          type: string
          title: Support
          description: Support message
          default: 'Discord: https://discord.gg/aMEAS8Xsvz'
        time:
          type: string
          title: Time
          description: The time the response was generated
        time_stamp:
          type: integer
          title: Time Stamp
          description: The timestamp the response was generated
        time_zone:
          type: string
          title: Time Zone
          description: The timezone of the response time
          default: America/Los_Angeles
        docs:
          title: Docs
          description: Link to the API Swagger documentation for this endpoint
          nullable: true
          type: string
        cache_message:
          title: Cache Message
          description: Cache message (EN-US)
          default: >-
            This response is cached and accessible via the URL below for 24
            hours at no extra cost. The cache is for request tracing only — it
            doesn't affect the API's data freshness and won't be returned
            through the API again.
          nullable: true
          type: string
        cache_message_zh:
          title: Cache Message Zh
          description: Cache message (ZH-CN)
          default: >-
            本次响应已缓存，可通过下方 URL 直接查看，有效期 24
            小时，访问缓存链接无额外费用。缓存仅用于请求溯源，不影响接口数据的时效性，也不会再次通过接口返回。
          nullable: true
          type: string
        cache_url:
          title: Cache Url
          description: The URL to access the cached result
          nullable: true
          type: string
        router:
          type: string
          title: Router
          description: The endpoint that generated this response
          default: ''
        params:
          title: Params
          description: The parameters used in the request
          default: {}
        data:
          title: Data
          description: >-
            Endpoint-specific response payload. The official shared model does
            not declare a fixed type or field set. Use the operation's
            documented return fields or response example; an operation-specific
            schema, when present, describes the documented fields. Undocumented
            fields must be read from the actual response rather than assumed.
          nullable: true
      type: object
      title: ResponseModel
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: AIsa API key. Get yours at https://aisa.one

````