# Fixed reference example. Playground inputs do not update this sample.
curl --request POST \
--url https://api.aisa.one/apis/v1/tikhub/xiaohongshu/pgy/get_content_square \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"biz_type": 1
}'curl --request POST \
--url https://api.aisa.one/apis/v1/tikhub/xiaohongshu/pgy/get_content_square \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"biz_type": 1
}'import requests
url = "https://api.aisa.one/apis/v1/tikhub/xiaohongshu/pgy/get_content_square"
payload = { "biz_type": 1 }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({biz_type: 1})
};
fetch('https://api.aisa.one/apis/v1/tikhub/xiaohongshu/pgy/get_content_square', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.aisa.one/apis/v1/tikhub/xiaohongshu/pgy/get_content_square",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'biz_type' => 1
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.aisa.one/apis/v1/tikhub/xiaohongshu/pgy/get_content_square"
payload := strings.NewReader("{\n \"biz_type\": 1\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.aisa.one/apis/v1/tikhub/xiaohongshu/pgy/get_content_square")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"biz_type\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/tikhub/xiaohongshu/pgy/get_content_square")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"biz_type\": 1\n}"
response = http.request(request)
puts response.read_body{
"cache_message": "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.",
"cache_message_zh": "本次响应已缓存,可通过下方 URL 直接查看,有效期 24 小时,访问缓存链接无额外费用。缓存仅用于请求溯源,不影响接口数据的时效性,也不会再次通过接口返回。",
"cache_url": "<string>",
"code": 200,
"data": "<unknown>",
"docs": "<string>",
"message": "Request successful. This request will incur a charge.",
"message_zh": "请求成功,本次请求将被计费。",
"params": {},
"request_id": "<string>",
"router": "",
"support": "Discord: https://discord.gg/aMEAS8Xsvz",
"time": "<string>",
"time_stamp": 123,
"time_zone": "America/Los_Angeles"
}xiaohongshu get_content_square
PGY content square leaderboards
# Fixed reference example. Playground inputs do not update this sample.
curl --request POST \
--url https://api.aisa.one/apis/v1/tikhub/xiaohongshu/pgy/get_content_square \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"biz_type": 1
}'curl --request POST \
--url https://api.aisa.one/apis/v1/tikhub/xiaohongshu/pgy/get_content_square \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"biz_type": 1
}'import requests
url = "https://api.aisa.one/apis/v1/tikhub/xiaohongshu/pgy/get_content_square"
payload = { "biz_type": 1 }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({biz_type: 1})
};
fetch('https://api.aisa.one/apis/v1/tikhub/xiaohongshu/pgy/get_content_square', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.aisa.one/apis/v1/tikhub/xiaohongshu/pgy/get_content_square",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'biz_type' => 1
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.aisa.one/apis/v1/tikhub/xiaohongshu/pgy/get_content_square"
payload := strings.NewReader("{\n \"biz_type\": 1\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.aisa.one/apis/v1/tikhub/xiaohongshu/pgy/get_content_square")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"biz_type\": 1\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/tikhub/xiaohongshu/pgy/get_content_square")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"biz_type\": 1\n}"
response = http.request(request)
puts response.read_body{
"cache_message": "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.",
"cache_message_zh": "本次响应已缓存,可通过下方 URL 直接查看,有效期 24 小时,访问缓存链接无额外费用。缓存仅用于请求溯源,不影响接口数据的时效性,也不会再次通过接口返回。",
"cache_url": "<string>",
"code": 200,
"data": "<unknown>",
"docs": "<string>",
"message": "Request successful. This request will incur a charge.",
"message_zh": "请求成功,本次请求将被计费。",
"params": {},
"request_id": "<string>",
"router": "",
"support": "Discord: https://discord.gg/aMEAS8Xsvz",
"time": "<string>",
"time_stamp": 123,
"time_zone": "America/Los_Angeles"
}code is 200.
Example
curl -X POST "https://api.aisa.one/apis/v1/tikhub/xiaohongshu/pgy/get_content_square" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}' # see request schema below
Request contract
- Method and path: POST /apis/v1/tikhub/xiaohongshu/pgy/get_content_square
- Availability: enabled
- Request URL template:
https://api.aisa.one/apis/v1/tikhub/xiaohongshu/pgy/get_content_square - Runtime facts: 85ae03121f63417c9ff9d57a0fd59fdc6386fd71e2dc732a002843e6d8979d87
{
"operationId": "post_tikhub_xiaohongshu_pgy_get_content_square",
"method": "POST",
"path": "/apis/v1/tikhub/xiaohongshu/pgy/get_content_square",
"servers": [
{
"url": "https://api.aisa.one"
}
],
"parameters": [],
"security": [
{
"bearerAuth": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"additionalProperties": false,
"properties": {
"author_type": {
"description": "Board 4 only: 1=Dandelion creator, 2=celebrity",
"enum": [
1,
2,
null
],
"example": 1,
"title": "Author Type",
"type": [
"integer",
"null"
]
},
"biz_type": {
"description": "Leaderboard: 1=Xiaohongshu Popular, 2=Product Seeding, 3=E-commerce Promotion, 4=Dandelion Collaboration, 5=Lead Collection, 6=E-commerce Hot, 7=Direct Seeding, 8=App Promotion",
"enum": [
1,
2,
3,
4,
5,
6,
7,
8
],
"example": 1,
"title": "Biz Type",
"type": "integer"
},
"category": {
"description": "Board 1 only. Category uses the literal prefixes \"内容类目#\" or \"所属行业#\" followed by an original Chinese label, for example \"内容类目#美妆\". Copy labels verbatim; do not translate them.",
"example": "内容类目#美妆",
"maxLength": 64,
"title": "Category",
"type": [
"string",
"null"
]
},
"content_type": {
"description": "Content source: 1=Blogger partnership, 2=Celebrity partnership, 3=Employee, 5=Buyer, 6=Professional account, 11=Director, -1=User",
"enum": [
1,
2,
3,
5,
6,
11,
-1,
null
],
"example": 1,
"title": "Content Type",
"type": [
"integer",
"null"
]
},
"date_range": {
"default": 7,
"description": "Date window in days: 3, 7 (default), 14, or 30.",
"enum": [
3,
7,
14,
30
],
"example": 7,
"title": "Date Range",
"type": "integer"
},
"fans": {
"anyOf": [
{
"allOf": [
{
"additionalProperties": false,
"description": "Numeric range. Either bound may be omitted; at least one must be provided.",
"properties": {
"max": {
"description": "Maximum value (inclusive); omit for no upper limit",
"maximum": 9999999.0,
"minimum": 0.0,
"title": "Max",
"type": [
"integer",
"null"
]
},
"min": {
"description": "Minimum value (inclusive)",
"maximum": 9999999.0,
"minimum": 0.0,
"title": "Min",
"type": [
"integer",
"null"
]
}
},
"title": "RangeFilter",
"type": "object"
}
],
"description": "Creator follower count range (board 4 only)"
},
{
"enum": [
null
],
"type": [
"string",
"null"
]
}
],
"description": "Creator follower count range (board 4 only)"
},
"industry": {
"description": "Industry name, used by boards 2/3/4/5/6/7/8. Copy the original Chinese label verbatim. Boards 3 and 6 use e-commerce product categories; the other boards use industry names.",
"example": "母婴",
"maxLength": 64,
"title": "Industry",
"type": [
"string",
"null"
]
},
"marketing_target": {
"description": "Board 3 only: 3=product promotion, 8=live stream promotion",
"enum": [
3,
8,
null
],
"example": 3,
"title": "Marketing Target",
"type": [
"integer",
"null"
]
},
"note_type": {
"description": "Content type: 1=Image+text, 2=Video",
"enum": [
1,
2,
null
],
"example": 2,
"title": "Note Type",
"type": [
"integer",
"null"
]
},
"order_by": {
"default": "",
"description": "Sort field. Leave empty to use the default for the selected board; see the endpoint sort-key table.",
"example": "premium_imp_num",
"maxLength": 64,
"title": "Order By",
"type": "string"
},
"page_num": {
"default": 1,
"description": "Page number, 1-100. Each board exposes only 100 items; keep all other parameters unchanged between pages.",
"example": 1,
"maximum": 100.0,
"minimum": 1.0,
"title": "Page Num",
"type": "integer"
},
"page_size": {
"default": 34,
"description": "Items per page, 1-34; defaults to 34 as on the web page.",
"example": 34,
"maximum": 34.0,
"minimum": 1.0,
"title": "Page Size",
"type": "integer"
},
"placement": {
"description": "Traffic placement (boards 2/3/5/7/8): 1=Discover feed, 2=Search, 3=In-video traffic",
"enum": [
1,
2,
3,
null
],
"example": 1,
"title": "Placement",
"type": [
"integer",
"null"
]
},
"price": {
"anyOf": [
{
"allOf": [
{
"additionalProperties": false,
"description": "Web page \"Creator Pricing\": image-text and video are two independent channels; one must be selected first.",
"properties": {
"kind": {
"description": "Quote type: 1=image-text note, 2=video note",
"enum": [
1,
2
],
"title": "Kind",
"type": "integer"
},
"range": {
"allOf": [
{
"additionalProperties": false,
"description": "Numeric range. Either bound may be omitted; at least one must be provided.",
"properties": {
"max": {
"description": "Maximum value (inclusive); omit for no upper limit",
"maximum": 9999999.0,
"minimum": 0.0,
"title": "Max",
"type": [
"integer",
"null"
]
},
"min": {
"description": "Minimum value (inclusive)",
"maximum": 9999999.0,
"minimum": 0.0,
"title": "Min",
"type": [
"integer",
"null"
]
}
},
"title": "RangeFilter",
"type": "object"
}
],
"description": "Quote range (CNY)"
}
},
"required": [
"kind",
"range"
],
"title": "PriceFilter",
"type": "object"
}
],
"description": "Creator price (board 4 only)"
},
{
"enum": [
null
],
"type": [
"string",
"null"
]
}
],
"description": "Creator price (board 4 only)"
},
"search_word": {
"default": "",
"description": "Search keyword; leave empty to view the full board. Supports comma-separated batch search.",
"example": "Face Mask",
"maxLength": 100,
"title": "Search Word",
"type": "string"
},
"sub_biz_type": {
"description": "Board 8 only: 1=app download, 2=mini-program promotion, 3=app re-engagement (default).",
"enum": [
1,
2,
3,
null
],
"example": 3,
"title": "Sub Biz Type",
"type": [
"integer",
"null"
]
},
"theme": {
"description": "Theme name, used by boards 2/4/5/7/8. Copy the original Chinese theme label verbatim.",
"example": "开箱",
"maxLength": 64,
"title": "Theme",
"type": [
"string",
"null"
]
}
},
"required": [
"biz_type"
],
"title": "ContentSquareReq",
"type": "object"
}
}
},
"required": true
},
"x-aisa-status": "enabled",
"x-aisa-pricing": {
"cost_contract": "fixed_success",
"customer_multiplier": 1.0,
"customer_pricing": "provider_cost_multiplier",
"default_request_estimate_usd": 0.02,
"estimate_source": "profile_seed",
"evidence_source": "request_snapshot"
},
"components": {
"securitySchemes": {
"bearerAuth": {
"scheme": "bearer",
"type": "http"
}
}
}
}
Cost and request rules
Published reference price: $0.02 USD per successful request. Account-specific pricing and final settlement may differ. Published reference values are not an account-specific quote or a settled charge. For endpoints supporting X-AISA-Cost-Mode: quote, obtain a free quote for your exact request before execution; reconcile the settled cost with response metadata and Usage Logs. USD amounts use 1,000,000 integer micro-USD per dollar.- Default request reference estimate (USD): 0.02
- Cost contract: fixed_success
- Published reference multiplier: 1.0
- Settlement evidence source: request_snapshot
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Leaderboard: 1=Xiaohongshu Popular, 2=Product Seeding, 3=E-commerce Promotion, 4=Dandelion Collaboration, 5=Lead Collection, 6=E-commerce Hot, 7=Direct Seeding, 8=App Promotion
1, 2, 3, 4, 5, 6, 7, 8 1
Board 4 only: 1=Dandelion creator, 2=celebrity
1, 2, null 1
Board 1 only. Category uses the literal prefixes "内容类目#" or "所属行业#" followed by an original Chinese label, for example "内容类目#美妆". Copy labels verbatim; do not translate them.
64"内容类目#美妆"
Content source: 1=Blogger partnership, 2=Celebrity partnership, 3=Employee, 5=Buyer, 6=Professional account, 11=Director, -1=User
1, 2, 3, 5, 6, 11, -1, null 1
Date window in days: 3, 7 (default), 14, or 30.
3, 7, 14, 30 7
Creator follower count range (board 4 only)
Show child attributes
Show child attributes
Industry name, used by boards 2/3/4/5/6/7/8. Copy the original Chinese label verbatim. Boards 3 and 6 use e-commerce product categories; the other boards use industry names.
64"母婴"
Board 3 only: 3=product promotion, 8=live stream promotion
3, 8, null 3
Content type: 1=Image+text, 2=Video
1, 2, null 2
Sort field. Leave empty to use the default for the selected board; see the endpoint sort-key table.
64"premium_imp_num"
Page number, 1-100. Each board exposes only 100 items; keep all other parameters unchanged between pages.
1 <= x <= 1001
Items per page, 1-34; defaults to 34 as on the web page.
1 <= x <= 3434
Traffic placement (boards 2/3/5/7/8): 1=Discover feed, 2=Search, 3=In-video traffic
1, 2, 3, null 1
Creator price (board 4 only)
Show child attributes
Show child attributes
Search keyword; leave empty to view the full board. Supports comma-separated batch search.
100"Face Mask"
Board 8 only: 1=app download, 2=mini-program promotion, 3=app re-engagement (default).
1, 2, 3, null 3
Theme name, used by boards 2/4/5/7/8. Copy the original Chinese theme label verbatim.
64"开箱"
Response
Successful response. The outer object follows ResponseModel; the endpoint-specific payload is in data.
7. Return
noteList[]: matched notes; each hasnoteInfo(title, noteType, noteLink, noteImages, readNum, likeNum, favNum, cmtNum, videoDuration, notePublishTime) plus blogger infototal: always 100 (board capacity)pageInfoDto: upstream paging echo; itstotalPageis always0and unusable
Response shape (two layers)
resp["data"]is PGY's raw envelope (withcode/msg/success); the payload is one level deeper- Correct access:
data = resp["data"]["data"]— every field listed under "Return" lives here
Cache message (EN-US)
Cache message (ZH-CN)
The URL to access the cached result
HTTP status code
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.
Link to the API Swagger documentation for this endpoint
Response message (EN-US)
Response message (ZH-CN)
The parameters used in the request
Unique request identifier
The endpoint that generated this response
Support message
The time the response was generated
The timestamp the response was generated
The timezone of the response time