Reference example
# Fixed reference example. Playground inputs do not update this sample.
curl --request POST \
--url https://api.aisa.one/apis/v1/waveinflu/ai-search \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"query": "beauty creators in the US"
}'curl --request POST \
--url https://api.aisa.one/apis/v1/waveinflu/ai-search \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"query": "beauty creators in the US"
}
'import requests
url = "https://api.aisa.one/apis/v1/waveinflu/ai-search"
payload = { "query": "beauty creators in the US" }
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({query: 'beauty creators in the US'})
};
fetch('https://api.aisa.one/apis/v1/waveinflu/ai-search', 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/waveinflu/ai-search",
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([
'query' => 'beauty creators in the US'
]),
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/waveinflu/ai-search"
payload := strings.NewReader("{\n \"query\": \"beauty creators in the US\"\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/waveinflu/ai-search")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"query\": \"beauty creators in the US\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/waveinflu/ai-search")
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 \"query\": \"beauty creators in the US\"\n}"
response = http.request(request)
puts response.read_body{
"billingRequestId": "3f522b56-2bb4-426c-9b76-5c04c91a9cb3",
"data": {
"count": 2,
"items": [
{
"accountPositioning": [
"<string>"
],
"ageRange": "<string>",
"aiDescription": "<string>",
"averageEngagementRate": 123,
"averagePlayCount": 123,
"biography": "<string>",
"email": "<string>",
"ethnicity": "<string>",
"faceVisibility": "<string>",
"followerCount": 123,
"fullName": "<string>",
"gender": "<string>",
"id": "<string>",
"language": "<string>",
"medianEngagementRate": 123,
"medianPlayCount": 123,
"platform": "<string>",
"profileUrl": "<string>",
"region": "<string>",
"score": 123,
"username": "<string>"
}
]
},
"requestId": "req-b6l"
}WaveInflu
Creator AI Search
在 Instagram、TikTok 或 YouTube 上,用自然语言描述查找创作者。
POST
https://api.aisa.one
/
apis
/
v1
/
waveinflu
/
ai-search
Reference example
# Fixed reference example. Playground inputs do not update this sample.
curl --request POST \
--url https://api.aisa.one/apis/v1/waveinflu/ai-search \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"query": "beauty creators in the US"
}'curl --request POST \
--url https://api.aisa.one/apis/v1/waveinflu/ai-search \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"query": "beauty creators in the US"
}
'import requests
url = "https://api.aisa.one/apis/v1/waveinflu/ai-search"
payload = { "query": "beauty creators in the US" }
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({query: 'beauty creators in the US'})
};
fetch('https://api.aisa.one/apis/v1/waveinflu/ai-search', 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/waveinflu/ai-search",
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([
'query' => 'beauty creators in the US'
]),
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/waveinflu/ai-search"
payload := strings.NewReader("{\n \"query\": \"beauty creators in the US\"\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/waveinflu/ai-search")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"query\": \"beauty creators in the US\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/waveinflu/ai-search")
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 \"query\": \"beauty creators in the US\"\n}"
response = http.request(request)
puts response.read_body{
"billingRequestId": "3f522b56-2bb4-426c-9b76-5c04c91a9cb3",
"data": {
"count": 2,
"items": [
{
"accountPositioning": [
"<string>"
],
"ageRange": "<string>",
"aiDescription": "<string>",
"averageEngagementRate": 123,
"averagePlayCount": 123,
"biography": "<string>",
"email": "<string>",
"ethnicity": "<string>",
"faceVisibility": "<string>",
"followerCount": 123,
"fullName": "<string>",
"gender": "<string>",
"id": "<string>",
"language": "<string>",
"medianEngagementRate": 123,
"medianPlayCount": 123,
"platform": "<string>",
"profileUrl": "<string>",
"region": "<string>",
"score": 123,
"username": "<string>"
}
]
},
"requestId": "req-b6l"
}用自然语言描述而非种子账号来查找创作者。
在你的 agent 里把这个端点跑起来 →
platform 与 query 为必填;另有 limit(1–100,默认 40)和与相似创作者相同的可选 filters(地区、语言、粉丝数与播放量区间、性别、种族、创作者类型、露脸情况、工作区去重)。
用一句话描述你想要的创作者(例如 "beauty creators in the US"),响应返回的创作者结构与相似创作者一致:id、username、fullName、biography、email、followerCount、averagePlayCount / medianPlayCount、averageEngagementRate / medianEngagementRate、region、language,以及 AI 推断的 gender、ageRange、ethnicity、faceVisibility、accountPositioning、aiDescription、profileUrl 和相关度 score。结果按 score 降序排列。
已有具体种子账号而非文字描述?请用 post_waveinflu_similar_creators。多数匹配已自带 email;对为 null 的结果请用 post_waveinflu_email_lookup。
按实际交付的达人数(data.count)计费。
示例
curl -X POST "https://api.aisa.one/apis/v1/waveinflu/ai-search" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"platform": "instagram",
"query": "beauty creators in the US",
"limit": 10
}'
// 把整段复制给 Claude Code、Codex、Cursor 或任意 coding agent。
// 连接、授权、跑通这个例子需要的东西都在里面 ——
// 不用粘贴任何 key,浏览器里点一次 Allow 就好。
{
"calls": [
{
"call_id": "1",
"tool": "post_waveinflu_ai_search",
"arguments": {
"platform": "instagram",
"query": "beauty creators in the US",
"limit": 10
}
}
]
}
// ── for the agent ─────────────────────────────────────────────────────────
// Register the AIsa MCP server, then call its `batch_quote` tool with the JSON above.
// name aisa
// endpoint https://mcp.aisa.one/mcp
// transport streamable-http
// auth OAuth. The server publishes RFC 9728 metadata, so open a
// browser and the user clicks Allow once — nothing to paste.
// If AISA_API_KEY is set, send it as a bearer header instead.
// Use your own MCP mechanism, not a hand-edited config file:
// Codex codex mcp add aisa --url https://mcp.aisa.one/mcp
// Claude Code claude mcp add --transport http -s user aisa https://mcp.aisa.one/mcp
// Cursor / VS Code a "url" entry for https://mcp.aisa.one/mcp in the MCP config
// The server reaches https://mcp.aisa.one/servers worth of APIs through a few meta
// tools: search, list_categories, get_details, batch_quote, batch_use.
// search, get_details and batch_quote are free; batch_use is billed per
// call. This operation's full contract — every argument, the response
// shape, the price and the pitfalls — is at
// https://aisa.one/docs/zh/api-reference/waveinflu/post_waveinflu-ai-search.md
// Show me the quoted cost. Once I approve, run the same calls with
// batch_use and show me the result.
第一次用? 把任意 MCP 客户端指向
https://mcp.aisa.one/mcp —— Claude Code、
Codex、Cursor、VS Code 都可以。鉴权走 OAuth:客户端打开浏览器,你点一次
Allow,不需要粘贴任何 key。之后智能体通过几个元工具调用所有端点:
search、list_categories、get_details 和 batch_quote 免费,batch_use
按次计费。各客户端的接入步骤见通过 MCP 连接;实时工具列表和
每次调用的价格见 aisa.one/zh-cn/mcp。请求规范
- 方法与路径: POST /apis/v1/waveinflu/ai-search
- 可用状态: enabled
- 请求 URL 模板: https://api.aisa.one/apis/v1/waveinflu/ai-search
- Runtime 事实版本: 07c55e3b4ddc50d84ed500d7a6565527fe43b35f658661845202ff79800fe621
{
"operationId": "post_waveinflu_ai_search",
"method": "POST",
"path": "/apis/v1/waveinflu/ai-search",
"servers": [
{
"url": "https://api.aisa.one"
}
],
"parameters": [],
"security": [
{
"bearerAuth": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"properties": {
"filters": {
"description": "Optional filters applied before matching. All fields are optional.",
"properties": {
"creatorTypes": {
"description": "Creator account types, e.g. [\"individual\", \"brand\"].",
"items": {
"type": "string"
},
"type": "array"
},
"ethnicities": {
"description": "Inferred creator ethnicities.",
"items": {
"type": "string"
},
"type": "array"
},
"faceVisibilities": {
"description": "Face-visibility classifications, e.g. [\"clear_face\", \"mixed\", \"no_face\"].",
"items": {
"type": "string"
},
"type": "array"
},
"genders": {
"description": "Inferred creator genders, e.g. [\"female\", \"male\"].",
"items": {
"type": "string"
},
"type": "array"
},
"languages": {
"description": "Creator languages, e.g. [\"en\", \"ja\", \"zh-cn\"].",
"items": {
"type": "string"
},
"type": "array"
},
"maxFollowers": {
"description": "Maximum follower / subscriber count.",
"type": "number"
},
"maxPlayCount": {
"description": "Maximum play / view count, measured by `playCountMetric`.",
"type": "number"
},
"minFollowers": {
"description": "Minimum follower / subscriber count.",
"type": "number"
},
"minPlayCount": {
"description": "Minimum play / view count, measured by `playCountMetric`.",
"type": "number"
},
"playCountMetric": {
"description": "Whether `minPlayCount` / `maxPlayCount` are compared against the median or the average play count.",
"enum": [
"median",
"average"
],
"type": "string"
},
"regions": {
"description": "Creator regions (ISO country codes), e.g. [\"US\", \"GB\", \"JP\"].",
"items": {
"type": "string"
},
"type": "array"
},
"workspaceDeduplicationEnabled": {
"description": "When true, creators already saved in your workspace are excluded from the results.",
"type": "boolean"
}
},
"type": "object"
},
"limit": {
"default": 25,
"description": "Maximum number of creators to return. Default 25, range 1–100. Caps the billed count.",
"example": 10,
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"platform": {
"default": "youtube",
"description": "Target platform.",
"enum": [
"instagram",
"tiktok",
"youtube"
],
"example": "instagram",
"type": "string"
},
"query": {
"description": "Natural-language description of the creators you are looking for.",
"example": "beauty creators in the US",
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
}
}
},
"required": true
},
"x-aisa-status": "enabled",
"x-aisa-pricing": {
"cost_contract": "response_units",
"customer_multiplier": 1.0,
"customer_pricing": "provider_cost_multiplier",
"default_request_estimate_usd": 0.124425,
"estimate_source": "profile_seed",
"evidence_source": "response_body",
"maximum_units": 100,
"unit": "similar_creator_point",
"unit_rate_usd": 0.004977
},
"components": {
"securitySchemes": {
"bearerAuth": {
"scheme": "bearer",
"type": "http"
}
}
}
}
费用与请求规则
按用量计费;默认请求预估费用:$0.124425 USD(不是固定价格)。 声明的单位费率:每 similar_creator_point $0.004977 USD。 最终费用以账户适用价格及实际结算为准。 公开参考值不是你的账户报价或最终扣费。对于支持 X-AISA-Cost-Mode: quote 的接口,执行前请针对完整请求获取免费报价;执行后通过响应费用元数据和 Usage Logs 核对结算费用。1 USD 等于 1,000,000 个整数 micro-USD。- 默认请求参考估价(USD): 0.124425
- 声明的单位费率(USD): 0.004977
- 计费单位: similar_creator_point
- 计费依据: response_units
- 公开参考倍率: 1.0
- 声明的最大计数或单位数: 100
- 结算证据来源: response_body
授权
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
请求体
application/json
Natural-language description of the creators you are looking for.
示例:
"beauty creators in the US"
Optional filters applied before matching. All fields are optional.
Show child attributes
Show child attributes
Maximum number of creators to return. Default 25, range 1–100. Caps the billed count.
必填范围:
1 <= x <= 100示例:
10
Target platform.
可用选项:
instagram, tiktok, youtube 示例:
"instagram"