> ## 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 WeChat MP Account Articles

> Get WeChat MP Account Articles

Get WeChat MP Account Articles

**Pricing** — billed per successful call; the 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/wechat_mp/v2/fetch_account_articles" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'  # see request schema below
```


## OpenAPI

````yaml openapi/tikhub.json POST /tikhub/wechat_mp/v2/fetch_account_articles
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/wechat_mp/v2/fetch_account_articles:
    post:
      tags:
        - TikHub - Wechat_mp
      summary: Get WeChat MP Account Articles
      description: >-
        WeChat Official Accounts (v2). Pricing and billing notes describe the
        upstream provider. Use the AIsa price quote for gateway calls.


        ### Purpose

        - Pass a `gh_username` to get a **single page** of the account's
        historical posts (**article** tab).

        - **Manual paging**: leave `offset` empty for the first page → take
        `next_offset` (base64 cursor) from the response → pass it as
        **`offset`** in the next request; `is_end` truthy means the last page.

        - ⏱️ Due to WeChat server latency, this endpoint responds slowly; please
        set your client request timeout to 30 seconds — a timeout that is too
        small may result in being billed without receiving the response.


        ### Parameters

        - username: Official account `gh_username` (`gh_…`). E.g.
        `gh_363b924965e9`

        - page_size: Optional, default 20. NOTE: WeChat currently **ignores**
        this parameter — the count is decided by the account itself (1 and 40
        return identically). Paginate with `offset` / `next_offset`.

        - offset: Optional pagination cursor (base64), **leave empty for the
        first page**; for the next page pass `next_offset` from the previous
        response. E.g. `CAMQChiS5KfRBiAKOJLkp9EGQABIAVgAYABwAQ==`

        - item_show_type: Optional content tab (matches the "Articles / Videos /
        Audios" tabs on the account homepage). Empty / `0`=articles (default),
        `5`=videos, `7`=audios, `8`=image-text posts. Omitting it = articles,
        behavior unchanged.

        - raw: Optional, default True. True=raw; False=simplified parsing.


        ### Return

        - Single page of articles with pagination cursor


        > Tip: `offset` is a base64 cursor (contains `+/=`), hence POST body.
        This endpoint **fetches a single page only and does not auto-paginate**.


        ### Response structure & JSON Path

        #### `raw=false` (simplified, snake_case):

        - Account username: `$.data.biz_username`

        - Is last page (0/1): `$.data.is_end`

        - Articles returned on this page: `$.data.count`

        - Next-page cursor (pass back as `offset`; null at the last page):
        `$.data.next_offset`

        - Article list: `$.data.articles[]`

        - Single article (N is the index):
            - Article appmsgid: `$.data.articles[N].app_msg_id`
            - Title: `$.data.articles[N].title`
            - Digest: `$.data.articles[N].digest`
            - URL: `$.data.articles[N].url`
            - Cover: `$.data.articles[N].cover` (multi-ratio `$.data.articles[N].covers`)
            - Publish / update timestamps: `$.data.articles[N].create_time` / `.update_time`
            - Position / type within the batch: `$.data.articles[N].idx` / `.msg_type` / `.item_show_type`
            - Image count / paid flags: `$.data.articles[N].pic_count` / `.is_paid` / `.is_pay_subscribe`
        #### `raw=true` (raw, default for this endpoint):

        - `data` top-level fields match the simplified version (`biz_username` /
        `is_end` / `count` / `next_offset`), but `articles[]` are full raw batch
        entries (nested camelCase):
            - Per entry: `$.data.articles[N].appMsg` (with `baseInfo` / `detailInfo`), `$.data.articles[N].baseInfo` (`msgId` / `msgType` / `dateTime` / `status`)
            - Article bodies are in `$.data.articles[N].appMsg.detailInfo` (one batch may contain multiple articles: headline / secondary)
            - Pagination also uses top-level `next_offset` passed back as `offset`. For list display, prefer `raw=false` for cleaner paths.
      operationId: post_tikhub_wechat_mp_v2_fetch_account_articles
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FetchAccountArticlesRequest'
        required: true
      responses:
        '200':
          description: >-
            Successful response. The outer object follows `ResponseModel`; the
            endpoint-specific payload is in `data`.


            ### Return

            - Single page of articles with pagination cursor


            > Tip: `offset` is a base64 cursor (contains `+/=`), hence POST
            body. This endpoint **fetches a single page only and does not
            auto-paginate**.


            ### Response structure & JSON Path

            #### `raw=false` (simplified, snake_case):

            - Account username: `$.data.biz_username`

            - Is last page (0/1): `$.data.is_end`

            - Articles returned on this page: `$.data.count`

            - Next-page cursor (pass back as `offset`; null at the last page):
            `$.data.next_offset`

            - Article list: `$.data.articles[]`

            - Single article (N is the index):
                - Article appmsgid: `$.data.articles[N].app_msg_id`
                - Title: `$.data.articles[N].title`
                - Digest: `$.data.articles[N].digest`
                - URL: `$.data.articles[N].url`
                - Cover: `$.data.articles[N].cover` (multi-ratio `$.data.articles[N].covers`)
                - Publish / update timestamps: `$.data.articles[N].create_time` / `.update_time`
                - Position / type within the batch: `$.data.articles[N].idx` / `.msg_type` / `.item_show_type`
                - Image count / paid flags: `$.data.articles[N].pic_count` / `.is_paid` / `.is_pay_subscribe`
            #### `raw=true` (raw, default for this endpoint):

            - `data` top-level fields match the simplified version
            (`biz_username` / `is_end` / `count` / `next_offset`), but
            `articles[]` are full raw batch entries (nested camelCase):
                - Per entry: `$.data.articles[N].appMsg` (with `baseInfo` / `detailInfo`), `$.data.articles[N].baseInfo` (`msgId` / `msgType` / `dateTime` / `status`)
                - Article bodies are in `$.data.articles[N].appMsg.detailInfo` (one batch may contain multiple articles: headline / secondary)
                - Pagination also uses top-level `next_offset` passed back as `offset`. For list display, prefer `raw=false` for cleaner paths.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseModel'
components:
  schemas:
    FetchAccountArticlesRequest:
      properties:
        username:
          type: string
          maxLength: 80
          pattern: ^[0-9A-Za-z][-_0-9A-Za-z]{1,63}(@[0-9A-Za-z]{1,16})?$
          title: Username
          description: >-
            Official account username. Three forms are supported: `gh_…`,
            `gh_…@app` (mini-program-linked accounts) and custom WeChat IDs
            (e.g. `nikejdi`). Taken from `$.data.content.user_name` of the
            article detail endpoints


            Usage: Official account `gh_username` (`gh_…`). E.g.
            `gh_363b924965e9`
          example: gh_363b924965e9
        page_size:
          type: integer
          maximum: 100
          minimum: 1
          title: Page Size
          description: >-
            Articles per page (default 20). WeChat currently ignores this
            parameter; the account determines the returned count. Paginate using
            offset and next_offset.
          default: 20
        offset:
          title: Offset
          description: >-
            Optional pagination cursor (base64), **leave empty for the first
            page**; for the next page pass `next_offset` from the previous
            response. E.g. `CAMQChiS5KfRBiAKOJLkp9EGQABIAVgAYABwAQ==`
          default: ''
          nullable: true
          type: string
          maxLength: 8192
          pattern: ^[A-Za-z0-9+/=_-]*$
        item_show_type:
          title: Item Show Type
          description: >-
            Optional content tab (matches the "Articles / Videos / Audios" tabs
            on the account homepage). Empty / `0`=articles (default),
            `5`=videos, `7`=audios, `8`=image-text posts. Omitting it =
            articles, behavior unchanged.
          nullable: true
          type: integer
        raw:
          type: boolean
          title: Raw
          description: True=raw response; False=simplified parsed structure
          default: true
      type: object
      required:
        - username
      title: FetchAccountArticlesRequest
    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

````

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