Agent 调用文档完整调用流程、安全说明与后台监控方案
使用方法
  1. 1查看或下载文档
  2. 2提供 Key 与 ASIN配置
  3. 3交给 Agent 执行
REST API · STABLE · VERSION 1.1

ASIN 分析 API

API 与 Web 共用相同的账号配额、任务队列和结果文件。API 创建的任务会实时出现在 Web 任务中心;Web 创建的任务也能通过 API 查询。完整接口定义也可通过 openapi.json(OpenAPI 3.0 规范)导入 Swagger UI / Apifox 等工具查看。

协议HTTP / JSON
API 版本v1.1 Stable
任务模式异步轮询
BASE URLhttps://cy126.com/openapi/v1
这是异步长任务 任务通常需要 30–60 分钟,也可能因队列繁忙而更久。提交成功只代表任务已进入系统,请保存 task_id。推荐先轮询查询任务状态(建议每 5 分钟一次),确认任务成功或失败后,再调用下载接口获取文件或读取 error 错误原因。不要保持 HTTP 长连接等待;任务失败或超时后,直接重新提交即可。
01

鉴权与积分

基础分析8分,可选采集和AI配置各1分,全选20分。初始100永久积分;无每日任务次数上限。会员及完整积分规则。usage.balance / temporary / permanent 为精确十进制字符串,分别代表可用、有期限、永久积分;任务 billing 返回扣分和退款明细。失败/超时全额返还积分;过期订阅积分退入24小时补偿批次,到期剩余再按20%转存。

API Key 在“个人中心 → API 设置”中管理:创建即生效,无需启用操作。每个用户只能拥有一个 Key;若 Key 泄露,可点击“重新生成”,旧 Key 立即失效。普通业务接口支持以下任一 Header,推荐 Bearer:

Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

# 等价写法
X-API-Key: YOUR_API_KEY

每个已鉴权 JSON 响应都会附带以下公共字段:

字段类型说明
usageobject当前账号的用量信息
├─useddecimal string累计净消耗积分(含消耗)
├─limitdecimal string累计净消耗加可用积分,兼容字段
├─remainingdecimal string / null当前可用积分;超级用户为 null
└─is_unlimitedbool是否不限量(超级用户为 true)
api_request_countint当前 Key 的累计 API 请求次数(每次鉴权调用 +1)
{
  "usage": {
    "used": "20",
    "limit": "100",
    "remaining": "80",
    "is_unlimited": false
  },
  "api_request_count": 18
}

文件直链通过短期 ticket 查询参数鉴权,二进制响应通过 X-Usage-* 与 X-API-Request-Count Header 返回用量信息。

02

接口约定

请求格式UTF-8 JSON

POST 请求使用 application/json;布尔值必须传 JSON boolean。

成功响应200 / 202

查询成功返回 200,异步任务受理返回 202。

积分规则按配置计费

初始100永久积分;任务基础8分,可选项各1分,全选20分;管理员免费。

轮询建议每 5 分钟

terminal=true 后停止轮询并处理最终状态。

数据隔离每个 Key 只能查询和下载其所属用户的任务。任务不存在与无权访问统一返回 404 task_not_found,避免泄露其它用户的任务信息。
POST/tasks提交一个 ASIN 分析任务
202 已受理400 参数错误401 鉴权失败429 配额用尽502 上游异常

提交任务

每次提交一个 ASIN,成功返回 HTTP 202 与任务 ID。处理服务器维护时任务状态为 waiting,恢复后会自动执行。

curl -X POST "https://cy126.com/openapi/v1/tasks" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "asin": "B0XXXXXXXX",
    "site": "US",
    "collection_config": {
      "bullet_points": true,
      "reviews": true,
      "ad_difficulty": false
    },
    "ai_analysis": {
      "basic": true,
      "ad_strategy": true,
      "product_selection": false,
      "visual": false,
      "inventory": false,
      "copy": true,
      "development": false,
      "pricing": false,
      "weakness": false,
      "strategy": false
    }
    }'

请求参数

字段类型必填默认说明
asinstring是—要分析的 ASIN,10 位字母或数字,自动转大写
sitestring是—站点:US(美国站)或 JP(日本站),缺省返回 invalid_site
collection_configobject否—数据采集配置;整个对象缺省时所有开关均为 false
├─bullet_pointsbool否false五点描述:采集竞品 Listing 五点描述数据
├─reviewsbool否false评价数据:采集竞品评论数据用于分析
└─ad_difficultybool否false广告难易:计算关键词广告投放难度
ai_analysisobject否—可选 AI 分析配置;基础分析默认执行
├─basicbool否—基础分析:市场与竞品的基础 AI 分析报告。服务端始终执行,收取8积分;该字段可省略
├─ad_strategybool否false广告分析:关键词流量与广告投放策略分析报告
├─product_selectionbool否false市场分析:市场需求与趋势分析报告
├─visualbool否false视觉分析:主图与 A+ 视觉呈现分析报告
├─inventorybool否false经营分析:库存、动销与经营表现分析报告
├─copybool否false文案分析:Listing 文案质量分析报告
├─developmentbool否false开发分析:产品开发方向分析报告
├─pricingbool否false利润分析:利润空间、价格带与定价策略分析报告
├─weaknessbool否false竞争分析:竞争格局、竞品短板与自身改进点分析报告
└─strategybool否false决策分析:可独立读取本次关键词与产品数据;其它已选专项报告作为可选增强输入

响应字段(HTTP 202)

字段类型说明
successbooltrue 表示任务已受理
messagestring提示信息;服务器维护时为“任务已保存并将在恢复后自动执行”
taskobject任务对象(Task 结构,所有接口通用)
├─task_idstring任务唯一 ID(12 位十六进制),用于查询与下载
├─asinstring任务对应的 ASIN
├─sitestring站点(US / JP)
├─sourcestring提交来源:api 或 web
├─statusstring任务状态,取值见「任务状态机」
├─status_textstring与 Web 端一致的实际状态文案:等待中 / 排队中 / 获取中 / 分析中 / 待分析 / 下载中 / 已完成 / 失败 / 超时
├─stagestring / null执行阶段:stage1(数据采集)/ stage2(AI 分析);仅 running 状态时可能有值,其余为 null
├─terminalbooltrue 表示终态(success / failed / timeout),无需继续轮询
├─archivedbool任务是否已在 Web 端归档
├─submitted_atstring提交时间,YYYY-MM-DD HH:MM:SS
├─completed_atstring / null完成时间;未完成为 null
├─errorstring / null失败原因;仅 failed / timeout 时有值
├─file_availablebool结果 XLSX 是否可下载
├─file_info_urlstring / null文件信息接口地址;仅 status=success 且文件就绪时非空
├─collection_configobject回显采集配置:bullet_points / reviews / ad_difficulty
└─ai_analysisobject回显 AI 分析配置:basic / ad_strategy / product_selection / visual / inventory / copy / development / pricing / weakness / strategy
duration_noticestring任务时长提示文案
usageobject公共字段,见「鉴权与积分」
api_request_countint公共字段,见「鉴权与积分」

响应示例

{
  "success": true,
  "message": "任务已提交",
  "task": {
    "task_id": "a1b2c3d4e5f6",
    "asin": "B0XXXXXXXX",
    "site": "US",
    "source": "api",
    "status": "queued",
    "status_text": "排队中",
    "stage": null,
    "terminal": false,
    "archived": false,
    "submitted_at": "2026-08-20 10:00:00",
    "completed_at": null,
    "error": null,
    "file_available": false,
    "file_info_url": null,
    "collection_config": { "bullet_points": true, "reviews": true, "ad_difficulty": false },
    "ai_analysis": { "basic": true, "ad_strategy": true, "product_selection": false, "visual": false,
                     "inventory": false, "copy": true, "development": false, "pricing": false,
                     "weakness": false, "strategy": false }
  },
  "duration_notice": "任务通常需要 30-60 分钟,也可能因队列繁忙而更久;建议每 5 分钟轮询一次状态",
  "usage": { "used": "20", "limit": "100", "remaining": "80" },
  "api_request_count": 19
}
POST/tasks/batch一次提交最多 10 个 ASIN 分析任务
202 已受理400 参数错误401 鉴权失败429 配额不足502 上游异常

批量提交任务

API 单次最多提交 10 个任务;网页任务中心每次提交单个 ASIN。每个元素的字段与「提交任务」完全一致(site 必填,基础分析自动执行)。任一元素校验失败则整批拒绝(不会部分创建);积分按每个任务的勾选配置合计,整批原子扣分。个别任务被处理服务器拒绝时,会出现在响应的 failed 数组中,其余任务正常受理。

curl -X POST "https://cy126.com/openapi/v1/tasks/batch" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "tasks": [
      {
        "asin": "B0XXXXXXXX",
        "site": "US",
        "collection_config": { "reviews": true },
        "ai_analysis": { "basic": true, "copy": true }
      },
      {
        "asin": "B0YYYYYYYY",
        "site": "US",
        "ai_analysis": { "basic": true }
      }
    ]
  }'

请求参数

字段类型必填说明
tasksarray是任务数组,1–10 个元素;每个元素的字段与「提交任务」的请求体完全一致(含 asin / site / collection_config / ai_analysis)

响应字段(HTTP 202)

字段类型说明
successbooltrue 表示批次已受理
messagestring提示信息;服务器维护时为“任务已保存并将在恢复后自动执行”
tasksarray任务对象数组(Task 结构,与「提交任务」响应中的 task 层级完全一致),顺序与请求一致
failedarray被处理服务器拒绝的任务列表,元素为 { task_id, message };正常时为空数组
duration_noticestring任务时长提示文案
usage / api_request_countobject / int公共字段,见「鉴权与积分」
GET/tasks/{task_id}查询单个任务状态
200 成功401 鉴权失败404 任务不存在

查询单个任务

轮询工作流 保存 task_id,每 5 分钟查询一次

先确认任务状态:success 后获取并下载文件;failed 或 timeout 时读取 error,需要继续时重新提交一个新任务。

排队中 获取中 分析中 待分析
status_text 返回 Web 端同款状态文案,stage 标注当前执行阶段;全部取值见下方「任务状态机」。
curl "https://cy126.com/openapi/v1/tasks/a1b2c3d4e5f6" \
  -H "Authorization: Bearer YOUR_API_KEY"

请求参数

参数位置必填说明
task_idpath是任务 ID;只能查询属于当前 Key 用户的任务
Authorizationheader是Bearer YOUR_API_KEY

响应字段(HTTP 200)

字段类型说明
successbooltrue
taskobject任务对象,Task 结构与「提交任务」响应中的 task 层级完全一致;terminal=true 表示不必继续轮询,只有 status=success 且文件就绪时才返回 file_info_url
usageobject公共字段,见「鉴权与积分」
api_request_countint公共字段,见「鉴权与积分」

任务不存在或不属于当前用户时返回 HTTP 404 task_not_found。查询到 waiting 状态的任务时,服务端会自动尝试唤醒等待队列。

GET/tasks分页查询当前用户的全部任务
200 成功400 参数错误401 鉴权失败

查询当前用户的全部任务

返回通过 Web 与 API 提交的所有任务,包括已归档任务,适合 Agent 恢复上下文和批量检查进度。

curl "https://cy126.com/openapi/v1/tasks?page=1&page_size=50" \
  -H "Authorization: Bearer YOUR_API_KEY"

# 可选筛选
?status=running
?source=api
?status=success&source=web

请求参数

参数位置必填默认说明
pagequery否1页码,从 1 开始
page_sizequery否50每页数量,范围 1–100
statusquery否—按状态筛选:waiting / queued / running / downloading / success / failed / timeout
sourcequery否—按提交来源筛选:web / api
Authorizationheader是—Bearer YOUR_API_KEY

响应字段(HTTP 200)

字段类型说明
successbooltrue
tasksarray任务对象数组,按提交时间倒序;数组元素为 Task 结构,与「提交任务」响应中的 task 层级完全一致
paginationobject分页信息
├─pageint当前页码
├─page_sizeint每页数量
├─totalint符合条件的任务总数
└─total_pagesint总页数
usageobject公共字段,见「鉴权与积分」
api_request_countint公共字段,见「鉴权与积分」

status / source 传入非法值时分别返回 invalid_status / invalid_source;page / page_size 非整数时返回 invalid_pagination(HTTP 400)。

GET/tasks/{task_id}/file获取文件信息与鉴权下载直链
200 JSON401 鉴权失败404 任务/文件不存在409 任务未完成

下载最终 XLSX

下载任务生成的最终 XLSX 文件。先获取文件信息及可直接访问的 download_url,再请求该地址保存文件;XLSX 中包含数据表、AI 分析及任务生成的全部产物。

# 第一步:获取文件信息
curl "https://cy126.com/openapi/v1/tasks/a1b2c3d4e5f6/file" \
  -H "Authorization: Bearer YOUR_API_KEY"

# 第二步:直接请求响应中的完整 download_url
curl -L "DOWNLOAD_URL_FROM_RESPONSE" -o result.xlsx

请求参数

参数位置必填说明
task_idpath是任务 ID;只能获取属于当前 Key 用户的文件
Authorization / X-API-Keyheader是二选一;推荐 Authorization: Bearer YOUR_API_KEY

响应(HTTP 200)

字段类型说明
file.task_idstring所属任务 ID
file.filenamestring建议保存的 XLSX 文件名
file.content_typestringXLSX MIME 类型
file.size_bytesint文件字节数
file.download_urlstring包含 ticket 的完整直链,可直接 GET
file.auth_methodstring固定为 signed_ticket
file.expires_atstringUTC 到期时间,5 分钟有效;Key 重置后旧 URL 立即失效
usage / api_request_countobject / int公共用量字段

响应示例

{
  "success": true,
  "file": {
    "task_id": "a1b2c3d4e5f6",
    "filename": "B0XXXXXXXX-US-分析结果.xlsx",
    "content_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
    "size_bytes": 428617,
    "download_url": "https://cy126.com/openapi/v1/tasks/a1b2c3d4e5f6/file/download?ticket=SHORT_LIVED_TICKET",
    "auth_method": "signed_ticket",
    "expires_at": "2026-09-07T00:05:00Z"
  },
  "usage": { "used": "20", "limit": "100", "remaining": "80", "is_unlimited": false },
  "api_request_count": 20
}
下载链接包含凭据当前站点通过 HTTPS 提供下载,请勿将完整 URL 写入日志、工单或聊天消息,也不要发送给第三方。链接 5 分钟有效,Key 重置后立即失效;任务 ID 不变时,可用新 Key 重新调用文件信息接口获取新链接。
GET/tasks/{task_id}/file/download?ticket=...返回 XLSX 二进制附件
200 XLSX401 Key 无效404 无权访问/文件不存在

任务未完成时返回 HTTP 409 task_not_ready,请继续每 5 分钟轮询一次状态,待 status=success 后再下载,不要重复提交同一任务;任务不存在返回 404 task_not_found;文件丢失返回 404 file_not_found。

任务状态机

status 字段的全部取值及流转规则如下;status_text 为对应的实际状态文案(running 状态会按服务端队列细分为 获取中 / 分析中 / 待分析,与 Web 端显示一致)。

状态status_text说明是否中间态备注
waiting等待中服务器维护,任务已持久保存是调用查询接口会尝试唤醒队列;服务恢复后自动转为 queued
queued排队中进入处理队列等待调度是任务按队列顺序执行,无需干预
running获取中分析中待分析执行中正在采集数据 / AI 分析是按 stage 细分:stage1=获取中(数据采集),stage2 且 current=分析中(AI 分析),stage2 且 waiting=待分析(采集完成等待分析)
downloading下载中结果文件同步中是结果正在从处理服务器同步到 Web,稍后即可下载
success已完成任务完成,可下载文件终态terminal=true,调用下载接口获取 XLSX
failed失败执行失败终态读取 error 字段获取原因;直接重新提交任务即可
timeout超时执行超时终态任务本身不设置执行超时时间,仅当处理服务器长时间停止时才会将排队中/处理中的任务判定为超时
超时与重试每个提交的任务都不设置执行超时时间。timeout 只在处理服务器长时间停止响应时对排队中或处理中的任务触发。任务失败或超时后,调用方直接重新提交任务即可,API 不提供重试操作。
归档规则API 不提供归档操作。归档请在 Web 任务中心进行;查询全部任务(GET /tasks)时会包含已归档任务,通过 archived=true 字段区分。
06

Python / Agent 完整流程

import time
import requests

BASE_URL = "https://cy126.com/openapi/v1"
HEADERS = {"Authorization": "Bearer YOUR_API_KEY"}

created = requests.post(
    f"{BASE_URL}/tasks",
    headers=HEADERS,
    json={
        "asin": "B0XXXXXXXX",
        "site": "US",
        "collection_config": {"reviews": True},
        "ai_analysis": {"basic": True, "copy": True},
    },
    timeout=30,
)
created.raise_for_status()
task_id = created.json()["task"]["task_id"]

# 建议每 5 分钟轮询一次状态,先确认状态再决定下载或重提
while True:
    response = requests.get(f"{BASE_URL}/tasks/{task_id}", headers=HEADERS, timeout=30)
    response.raise_for_status()
    task = response.json()["task"]
    if task["status"] == "success":
        break
    if task["terminal"]:
        # failed / timeout:读取 error 后直接重新提交任务即可
        raise RuntimeError(task.get("error") or task["status"])
    time.sleep(300)

file_info_response = requests.get(
    f"{BASE_URL}/tasks/{task_id}/file",
    headers=HEADERS,
    timeout=30,
)
file_info_response.raise_for_status()
file_info = file_info_response.json()["file"]

# download_url 已包含短期 ticket,请在 5 分钟内下载;不要记录完整 URL
file_response = requests.get(file_info["download_url"], timeout=120)
file_response.raise_for_status()
with open(f"{task_id}.xlsx", "wb") as output:
    output.write(file_response.content)

print("usage:", file_response.headers.get("X-Usage-Used"))
07

Agent 调用文档

这是一份平台无关的 Markdown 文档,包含全部接口、参数、状态、错误码、安全约束和完整调用流程。可以直接将文档提交给 Agent、AI 助手或 vibe coding 工具,让其按文档调用 API。

Agent 对话要求Agent 与用户交流时必须使用中文表达参数、字段与状态:提交任务前须向用户完整转述采集配置(五点、评价、难易)与分析配置(市场、竞争、利润、开发、广告、文案、视觉、经营、决策)的全部可选参数,不得只回答 basic 这类原始英文字段名;基础分析为必选项,不要让用户选择,用户仅从上述列出的项目中选择;决策分析可独立运行,其它专项报告作为可选增强输入;结果 XLSX 第一个工作表为数据表,其后工作表以各 AI 分析名称命名,提交了某项分析但无对应工作表即暂无该项分析结果;汇报状态使用 排队中、待分析、分析中、已完成、失败、超时,不输出 stage1/stage2 等原始值;任务完成后必须以字符串形式输出完整的文件保存路径。
agent-api-guide.md 单文件、无需安装;既可在线阅读,也可下载后直接提供给 Agent

交付前检查

  1. 1

    选择在线查看,或下载完整的 agent-api-guide.md 交给 Agent。

  2. 2

    准备当前用户的 API Key 与 ASIN;优先通过环境变量或 Secret 功能提供 Key。

  3. 3

    确认 Agent 能执行后台轮询与完成通知,再按文档提交任务并下载 XLSX。

  4. 4

    确认 Agent 遵守对话要求:提交前用中文完整转述采集与分析配置的可选参数;基础分析必选、不让用户选择;战略可独立运行;状态用中文汇报(排队中、待分析、分析中、已完成、失败、超时);最终输出字符串形式的完整文件路径。

08

常见错误码

所有错误响应均为统一结构:success=false + error.code(机器可读)+ error.message(中文说明),并同样附带 usage 与 api_request_count 公共字段(能鉴权成功时):

{
  "success": false,
  "error": { "code": "invalid_asin", "message": "asin 必须是 10 位字母或数字" },
  "usage": { "used": "20", "limit": "100", "remaining": "80", "is_unlimited": false },
  "api_request_count": 19
}
HTTPcode含义
400invalid_asinasin 不是 10 位字母或数字
400invalid_sitesite 不是 US / JP
400invalid_configcollection_config / ai_analysis 结构错误或布尔字段类型错误
400invalid_status / invalid_source / invalid_pagination列表接口的筛选或分页参数非法
401missing_api_key未提供 API Key
401invalid_or_disabled_keyKey 无效,或所属用户已被停用
404task_not_found任务不存在或不属于当前用户
404file_not_found结果文件尚未就绪或已丢失
409task_not_ready任务尚未成功完成,暂不能下载
429quota_exceeded积分不足,请减少勾选项或联系客服
502upstream_rejected处理服务器拒绝任务;响应会附带 task_id
502upstream_unavailable处理服务器提交异常(网络/超时);响应会附带 task_id