curl --request POST \
--url https://api.aisa.one/apis/v1/tikhub/douyin/search/fetch_challenge_search_v2 \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"backtrace": "",
"content_type": "0",
"cursor": 0,
"filter_duration": "0",
"keyword": "猫咪",
"publish_time": "0",
"search_id": "",
"sort_type": "0"
}
'import requests
url = "https://api.aisa.one/apis/v1/tikhub/douyin/search/fetch_challenge_search_v2"
payload = {
"backtrace": "",
"content_type": "0",
"cursor": 0,
"filter_duration": "0",
"keyword": "猫咪",
"publish_time": "0",
"search_id": "",
"sort_type": "0"
}
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({
backtrace: '',
content_type: '0',
cursor: 0,
filter_duration: '0',
keyword: '猫咪',
publish_time: '0',
search_id: '',
sort_type: '0'
})
};
fetch('https://api.aisa.one/apis/v1/tikhub/douyin/search/fetch_challenge_search_v2', 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/douyin/search/fetch_challenge_search_v2",
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([
'backtrace' => '',
'content_type' => '0',
'cursor' => 0,
'filter_duration' => '0',
'keyword' => '猫咪',
'publish_time' => '0',
'search_id' => '',
'sort_type' => '0'
]),
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/douyin/search/fetch_challenge_search_v2"
payload := strings.NewReader("{\n \"backtrace\": \"\",\n \"content_type\": \"0\",\n \"cursor\": 0,\n \"filter_duration\": \"0\",\n \"keyword\": \"猫咪\",\n \"publish_time\": \"0\",\n \"search_id\": \"\",\n \"sort_type\": \"0\"\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/douyin/search/fetch_challenge_search_v2")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"backtrace\": \"\",\n \"content_type\": \"0\",\n \"cursor\": 0,\n \"filter_duration\": \"0\",\n \"keyword\": \"猫咪\",\n \"publish_time\": \"0\",\n \"search_id\": \"\",\n \"sort_type\": \"0\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/tikhub/douyin/search/fetch_challenge_search_v2")
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 \"backtrace\": \"\",\n \"content_type\": \"0\",\n \"cursor\": 0,\n \"filter_duration\": \"0\",\n \"keyword\": \"猫咪\",\n \"publish_time\": \"0\",\n \"search_id\": \"\",\n \"sort_type\": \"0\"\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"
}douyin fetch_challenge_search
获取话题搜索 V2
curl --request POST \
--url https://api.aisa.one/apis/v1/tikhub/douyin/search/fetch_challenge_search_v2 \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"backtrace": "",
"content_type": "0",
"cursor": 0,
"filter_duration": "0",
"keyword": "猫咪",
"publish_time": "0",
"search_id": "",
"sort_type": "0"
}
'import requests
url = "https://api.aisa.one/apis/v1/tikhub/douyin/search/fetch_challenge_search_v2"
payload = {
"backtrace": "",
"content_type": "0",
"cursor": 0,
"filter_duration": "0",
"keyword": "猫咪",
"publish_time": "0",
"search_id": "",
"sort_type": "0"
}
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({
backtrace: '',
content_type: '0',
cursor: 0,
filter_duration: '0',
keyword: '猫咪',
publish_time: '0',
search_id: '',
sort_type: '0'
})
};
fetch('https://api.aisa.one/apis/v1/tikhub/douyin/search/fetch_challenge_search_v2', 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/douyin/search/fetch_challenge_search_v2",
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([
'backtrace' => '',
'content_type' => '0',
'cursor' => 0,
'filter_duration' => '0',
'keyword' => '猫咪',
'publish_time' => '0',
'search_id' => '',
'sort_type' => '0'
]),
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/douyin/search/fetch_challenge_search_v2"
payload := strings.NewReader("{\n \"backtrace\": \"\",\n \"content_type\": \"0\",\n \"cursor\": 0,\n \"filter_duration\": \"0\",\n \"keyword\": \"猫咪\",\n \"publish_time\": \"0\",\n \"search_id\": \"\",\n \"sort_type\": \"0\"\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/douyin/search/fetch_challenge_search_v2")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"backtrace\": \"\",\n \"content_type\": \"0\",\n \"cursor\": 0,\n \"filter_duration\": \"0\",\n \"keyword\": \"猫咪\",\n \"publish_time\": \"0\",\n \"search_id\": \"\",\n \"sort_type\": \"0\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/tikhub/douyin/search/fetch_challenge_search_v2")
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 \"backtrace\": \"\",\n \"content_type\": \"0\",\n \"cursor\": 0,\n \"filter_duration\": \"0\",\n \"keyword\": \"猫咪\",\n \"publish_time\": \"0\",\n \"search_id\": \"\",\n \"sort_type\": \"0\"\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 为 200 时计费。
示例
curl -X POST "https://api.aisa.one/apis/v1/tikhub/douyin/search/fetch_challenge_search_v2" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}' # 请求体结构见下方 schema
请求规范
- 方法与路径: POST /apis/v1/tikhub/douyin/search/fetch_challenge_search_v2
- 可用状态: enabled
- 请求 URL 模板: https://api.aisa.one/apis/v1/tikhub/douyin/search/fetch_challenge_search_v2
- Runtime 事实版本: 85ae03121f63417c9ff9d57a0fd59fdc6386fd71e2dc732a002843e6d8979d87
{
"operationId": "post_tikhub_douyin_search_fetch_challenge_search_v2",
"method": "POST",
"path": "/apis/v1/tikhub/douyin/search/fetch_challenge_search_v2",
"servers": [
{
"url": "https://api.aisa.one"
}
],
"parameters": [],
"security": [
{
"bearerAuth": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"properties": {
"backtrace": {
"default": "",
"description": "Backtrace for pagination, obtained from the last response",
"title": "Backtrace",
"type": "string"
},
"content_type": {
"default": "0",
"description": "Content type: 0=All, 1=Video, 2=Picture, 3=Article\n\nUsage: Content type filter\n - `0`: Unlimited\n - `1`: Video\n - `2`: Image\n - `3`: Article",
"title": "Content Type",
"type": "string"
},
"cursor": {
"default": 0,
"description": "Offset cursor for pagination, obtained from the last response\n\nUsage: Pagination cursor (0 for first page, use the last response cursor for subsequent pages)",
"title": "Cursor",
"type": "integer"
},
"filter_duration": {
"default": "0",
"description": "Video duration filter: 0=Unlimited, 0-1=Within 1 minute, 1-5=1 to 5 minutes, 5-10000=More than 5 minutes",
"title": "Filter Duration",
"type": "string"
},
"keyword": {
"default": "猫咪",
"description": "Keyword",
"title": "Keyword",
"type": "string"
},
"publish_time": {
"default": "0",
"description": "Publish time filter: 0=Unlimited, 1=Last day, 7=Last week, 180=Last half year",
"title": "Publish Time",
"type": "string"
},
"search_id": {
"default": "",
"description": "Search ID for pagination, obtained from the last response",
"title": "Search Id",
"type": "string"
},
"sort_type": {
"default": "0",
"description": "Sort type: 0=Comprehensive, 1=Most Likes, 2=Latest\n\nUsage: Sorting method\n - `0`: Comprehensive\n - `1`: Most likes\n - `2`: Latest",
"title": "Sort Type",
"type": "string"
}
},
"title": "ChallengeSearchV2Request",
"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.01,
"estimate_source": "profile_seed",
"evidence_source": "request_snapshot"
},
"components": {
"securitySchemes": {
"bearerAuth": {
"scheme": "bearer",
"type": "http"
}
}
}
}
费用与请求规则
公开参考价格:每次成功请求 $0.01 USD。 最终费用以账户适用价格及实际结算为准。 公开参考值不是你的账户报价或最终扣费。对于支持 X-AISA-Cost-Mode: quote 的接口,执行前请针对完整请求获取免费报价;执行后通过响应费用元数据和 Usage Logs 核对结算费用。1 USD 等于 1,000,000 个整数 micro-USD。- 默认请求参考估价(USD): 0.01
- 计费依据: fixed_success
- 公开参考倍率: 1.0
- 结算证据来源: request_snapshot
授权
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
请求体
Backtrace for pagination, obtained from the last response
Content type: 0=All, 1=Video, 2=Picture, 3=Article
Usage: Content type filter
- 0: Unlimited
- 1: Video
- 2: Image
- 3: Article
Offset cursor for pagination, obtained from the last response
Usage: Pagination cursor (0 for first page, use the last response cursor for subsequent pages)
Video duration filter: 0=Unlimited, 0-1=Within 1 minute, 1-5=1 to 5 minutes, 5-10000=More than 5 minutes
Keyword
Publish time filter: 0=Unlimited, 1=Last day, 7=Last week, 180=Last half year
Search ID for pagination, obtained from the last response
Sort type: 0=Comprehensive, 1=Most Likes, 2=Latest
Usage: Sorting method
- 0: Comprehensive
- 1: Most likes
- 2: Latest
响应
Successful Response
Response (common fields, actual response may contain more fields)
business_data(list of hashtag search results)data_id: Unique identifier for the resulttype: Data type (fixed2)data.challenge_info:cid: Challenge IDcha_name: Challenge namedesc: Challenge descriptionschema: Challenge detail schema link (aweme:// schema, used to deep link inside Douyin App)hashtag_profile: URL of the hashtag cover imageuser_count: Number of participantsview_count: Number of viewschallenge_status: Status (1 = active, others = abnormal)author: Creator infouid: User IDnickname: Nicknameavatar_thumb.url_list: Thumbnail avatar URLsis_verified: Whether the creator is verifiedfollower_count: Number of followers
share_info:share_url: Shareable URLshare_title: Title for sharingshare_desc: Description for sharing
Cache message (EN-US)
Cache message (ZH-CN)
The URL to access the cached result
HTTP 状态码
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