快手 SDK 方法
快手平台的 14 个 SDK 方法,由端点注册表派生
本页 14 个方法由端点注册表生成:参数表、摘要与废弃标记都取自 端点声明。同一批端点的 HTTP 形态(路径、query 参数、响应信封、在线调用)见 HTTP 端点参考。
调用形式与单次请求配置
Client 上的绑定 Fetcher 是 client.<平台>.fetcher.<方法>(options, requestConfig?):cookie 已随 Client 绑好,第二个参数只作用于当前这一次调用,并与 Client 的实例级请求配置合并 —— 单次配置优先,headers 单独合并。
直接导出的裸 Fetcher 是 <平台>Fetcher.<方法>(options, cookie?, requestConfig?):没有实例级配置,cookie 按次传,第三个参数直接作用于当前请求。amagi.<平台>Fetcher 与同名的命名导出(import { bilibiliFetcher } from '@ikenxuan/amagi')是同一个对象。
两种形态都由端点注册表派生、走同一条执行管线、返回同一种信封,所以本页列出的方法名与参数对两者都成立。
用 Cookie 头覆盖单次调用的 cookie
requestConfig.headers 里任意大小写的 Cookie(Cookie / cookie / COOKIE)都会替换本次调用实际使用的 cookie:绑定形态覆盖 Client 上绑定的那份,裸 Fetcher 形态覆盖第二个参数。这次调用用哪份 Cookie,只写这一处就够。
匿名调一次:
const = await ...(
{ : '3x123456789' },
{ : { : '' } }
)它只影响这一次请求,不改 Client 实例,也不影响同一实例后续的调用。
v7 的 Cookie 头按大小写不敏感匹配,覆盖只写在 headers 一处即可。
读取返回值:取 data
方法永不抛异常,返回的是信封:成功支有 data,失败支有 error,两支都有 message 与 meta,顶层没有 code。本页所有示例统一用 if (result.success) 收窄之后再读 result.data —— 四种读法里只有它既不必额外 import,收窄后的 data 又不带 | undefined:
| 读法 | 拿到的 data |
|---|---|
if (result.success) | T(本页示例统一用这种) |
直接读 result.data(不收窄) | T | undefined |
list.filter(isSuccess) | T(数组回调里没有 if 可用) |
unwrap(result) | T,失败时抛 AmagiThrownError |
四种读法的完整说明、失败分支的字段与三条逃生舱见响应类型。
大整数 ID 与响应类型
默认 JSON 解析会把超出 JavaScript 安全整数范围的裸整数保留为十进制字符串,防止直播间、作品等 ID 被四舍五入。普通安全整数、浮点数和指数写法保持原样;显式文本响应和自定义 transformResponse 仍由调用方控制。响应 ID 的类型因此可能是 string | number,需要统一存储时可用 String(id);不要先调用 Number() 再拼接请求。
新增端点只声明已有证据支持的响应字段;缺少完整成功响应样本的字段使用 unknown,使用前应检查对象、数组或字符串等实际结构。
本页之外:自定义请求
本页是已收录的端点方法。要请求 amagi 尚未收录的快手接口,用 client.kuaishou.request(默认签名器 hxfalcon)。快手那份 apiUrls 返回的不是 URL 字符串,而是请求描述对象,对应关系是 url → 第一参、body → config.data、signPath → amagi.signPath:
// H5 那份(videoWork / videoWorkFull / comments):requiresSign 是必填布尔
const = ...({ : '3xqxxxx' })
const = await ...({
: .,
: .,
: .,
: { : . },
: { : . ? 'hxfalcon' : false, : . }
})live_api 那批不能照抄这段:它们的 requiresSign 是可选的(缺席不代表免签),也没有 referer 字段。要签就不给 sign(走平台默认 'hxfalcon')或显式写 'hxfalcon':
const = ...({ : 'KPL704668133' })
const = await ...({
: .,
: .,
: { : . }
})详见自定义请求。
Fetcher 方法
fetchVideoWork
单个作品详细信息。端点 kuaishou.videoWork,同一端点的 HTTP 形态。
取快手作品详情。要图集预渲染地址等完整版字段时用 videoWorkFull。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
photoId | string | 是 | 作品 ID |
const = await ...({
: '3xqxxxxxx'
})
if (.) {
.(.)
}fetchVideoWorkFull
单个作品详细信息(完整版,当前稳定撞风控)。端点 kuaishou.videoWorkFull,同一端点的 HTTP 形态。
日常取作品信息请用 videoWork;这条是唯一可能返回图集预渲染地址与同类推荐的通道。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
photoId | string | 是 | 作品 ID |
captchaToken | string | 否 | 滑块票据,进 query 参与签名;不给即空串。过风控不需要它:人过一次滑块整个 did 就解,原样重发即可。留它只为 query 形状与前端一致 |
const = await ...({
: '3xqxxxxxx'
})
if (.) {
.(.)
}fetchWorkComments
作品评论列表。端点 kuaishou.comments,同一端点的 HTTP 形态。
取作品评论列表,子评论按根评论 ID 分组返回。number 指定目标条数,翻页自动完成。
支持声明式翻页:用 number 指定需要的条数,单页上限 50 条,游标的带入与停止条件由端点声明处理。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
photoId | string | 是 | 作品 ID |
number | number | 否 | 目标条数;不传时按单页上限翻页取满,而不是只取一页 |
const = await ...({
: '3xqxxxxxx'
})
if (.) {
.(.)
}fetchCommentReplies
评论回复列表。端点 kuaishou.commentReplies,同一端点的 HTTP 形态。
取一条根评论下的回复。rootCommentId 取评论列表里 hasSubComments 为真的那条评论 ID。走 PC GraphQL,自带 PC 上下文 cookie 并对首发风控自动重试;有浏览器里的真实 did 时经 cookies.kuaishou 传入更稳。
支持声明式翻页:用 number 指定需要的条数,单页上限 50 条,游标的带入与停止条件由端点声明处理。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
photoId | string | 是 | 作品 ID |
rootCommentId | string | 是 | 根评论 ID |
number | number | 否 | 目标条数,默认一页 |
const = await ...({
: '3xqxxxxxx',
: ''
})
if (.) {
.(.)
}fetchDanmakuList
作品弹幕列表。端点 kuaishou.danmakuList,同一端点的 HTTP 形态。
取作品弹幕列表。可按时间段取(from / to),不传时间段就取全量。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
photoId | string | 是 | 作品 ID |
from | number | 否 | 起始位置(毫秒),默认 0 |
to | number | 否 | 结束位置(毫秒);不传则用 duration |
duration | number | 否 | 作品时长(毫秒),取全量用 |
const = await ...({
: '3xqxxxxxx'
})
if (.) {
.(.)
}fetchUserProfile
用户主页聚合信息。端点 kuaishou.userProfile,同一端点的 HTTP 形态。
取用户主页聚合信息(资料、作品列表、直播间等)。部分数据取不到时留空,不整体失败。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
principalId | string | 是 | 用户 ID |
const = await ...({
: 'KPL704668133'
})
if (.) {
.(.)
}fetchUserWorkList
用户公开作品列表。端点 kuaishou.userWorkList,同一端点的 HTTP 形态。
取用户公开作品列表。number 指定目标条数,翻页由端点自动完成,不用传游标。
支持声明式翻页:用 number 指定需要的条数,单页上限 12 条,游标的带入与停止条件由端点声明处理。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
principalId | string | 是 | 用户 ID |
number | number | 否 | 目标条数,默认 12 |
const = await ...({
: 'KPL704668133'
})
if (.) {
.(.)
}v6 的 count / pcursor 已被 number + 声明式翻页取代:调用方只说明要多少条,pcursor 游标的带入与停止条件由端点声明的 paginate 处理。
fetchLiveRoomInfo
直播间聚合信息。端点 kuaishou.liveRoomInfo,同一端点的 HTTP 形态。
取直播间聚合信息(直播流、主播、公告等);只看直播间时比 userProfile 轻。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
principalId | string | 是 | 用户 ID |
const = await ...({
: 'KPL704668133'
})
if (.) {
.(.)
}fetchEmojiList
表情列表。端点 kuaishou.emojiList,同一端点的 HTTP 形态。
取快手内置表情列表,无参数。
无参数。
const = await ...({})
if (.) {
.(.)
}fetchEmotionPackageList
表情包列表。端点 kuaishou.emotionPackageList,同一端点的 HTTP 形态。
取快手表情包列表(含包元数据与包内每条表情),无参数。只要表情图标地址时用 emojiList。
无参数。
const = await ...({})
if (.) {
.(.)
}fetchSlideFeed
作品相关推荐。端点 kuaishou.slideFeed,同一端点的 HTTP 形态。
取某个作品的相关推荐列表。authorId 传作者的数字 ID(videoWork 响应里的 photo.userId)。返回的列表混有推荐卡片,读作品字段前需先判别。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
photoId | string | 是 | 作品 ID |
authorId | number | string | 是 | 作者数字 ID,取自作品响应的 photo.userId |
const = await ...({
: '3xqxxxxxx',
: 0
})
if (.) {
.(.)
}fetchSearchUser
搜索用户。端点 kuaishou.searchUser,同一端点的 HTTP 形态。
按关键词搜索用户,自动翻页。需要浏览器注册后的 cookie,支持游客。
支持声明式翻页:用 number 指定需要的条数,单页上限 30 条,游标的带入与停止条件由端点声明处理。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
keyword | string | 是 | 搜索关键词 |
number | number | 否 | 目标条数,默认 30 |
const = await ...({
: '关键词'
})
if (.) {
.(.)
}fetchSearchWorkList
搜索作品。端点 kuaishou.searchWorkList,同一端点的 HTTP 形态。
按关键词搜索作品,自动翻页。需要浏览器注册后的 cookie,支持游客。
支持声明式翻页:用 number 指定需要的条数,单页上限 20 条,游标的带入与停止条件由端点声明处理。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
keyword | string | 是 | 搜索关键词 |
number | number | 否 | 目标条数,默认 20 |
const = await ...({
: '关键词'
})
if (.) {
.(.)
}fetchLoginUserProfile
当前登录账号资料。端点 kuaishou.loginUserProfile,同一端点的 HTTP 形态。
取当前 cookie 所属账号的资料,不接参数。需要登录态 cookie。
无参数。
const = await ...({})
if (.) {
.(.)
}注意事项
photoId可以从分享链接里提取principalId可以从用户主页或直播间 URL 的末段提取- 评论数据可能需要登录 Cookie 才能取到
- 建议设置合理的请求间隔,避免触发风控
快手的 URL 拼接器与 live_api 签名(kuaishouUtils)见工具集。