可灵(Kling)的视频生成接口采用异步任务制,接入的第一步不是写请求,而是把凭证拿到、放对位置、管住权限。很多 401 和 403 并不是代码问题,而是 Key 复制错了、环境变量没生效,或者账号根本没有开通对应模型。
本文按“创建—配置—排错—轮换”的顺序,讲清 2026 年可灵开放平台常见的凭证形态与安全做法。接口细节变化较快,实际操作以官方控制台和文档为准。
说明:可灵、Kling、快手是其权利人的商标,本文仅作技术说明,与相关公司无隶属或代理关系。
一、先确认你需要哪种凭证
可灵目前常见两种鉴权形态:
- API Key:在开发者控制台创建,调用时放在
Authorization: Bearer <API_KEY>。新式接口按路径区分模型,推荐优先使用这种方式。 - AccessKey + SecretKey:主要用于旧版接口。每次请求用 SecretKey 对 JWT 签名,再把 JWT 放进 Bearer 头。AccessKey 放在
iss声明里。
两者的安全要求不同:API Key 是一串长期凭证,泄露即可被直接调用;AccessKey/SecretKey 中的 SecretKey 是签名密钥,泄露后攻击者可以自行签发 token。无论哪种,都不能写进前端代码、移动端包体或公开仓库。
二、创建可灵 API Key 的步骤
国际站的控制台入口为 https://kling.ai/dev/api-key,用可灵账号登录后即可管理 Key。国内入口和可用模型以官方页面为准,不要照着第三方教程拼域名。
- 登录开发者控制台,进入 API Key 管理页。
- 点击“+ Create a new API Key”,按“项目—环境—用途”命名,例如
video-prod-cn、video-test。 - 创建后立即复制并保存。页面通常只展示一次,关闭后无法再次查看完整 Key。
- 把 Key 写入密码管理器或云密钥管理服务,同时登记创建人、用途和轮换日期。
- 用最低成本的任务验证一次鉴权,记录返回的
request_id,方便后续排错。 - 确认账号已购买可用的资源包或开通后付费,再进入正式联调。
命名不是形式主义。出现异常调用时,你能凭 Key 名称快速定位是哪个服务、哪个环境,而不是把所有业务一起停掉。
三、旧版 AccessKey/SecretKey 与 JWT
旧版接口在请求体里用 model_name 指定模型,鉴权需要自行生成 JWT。官方文档给出的规则是 HS256 签名,iss 填 AccessKey,exp 为当前时间加 1800 秒,nbf 为当前时间减 5 秒。
import os
import time
import jwt # PyJWT
access_key = os.environ["KLING_ACCESS_KEY"]
secret_key = os.environ["KLING_SECRET_KEY"]
token = jwt.encode(
{
"iss": access_key,
"exp": int(time.time()) + 1800,
"nbf": int(time.time()) - 5,
},
secret_key,
algorithm="HS256",
headers={"alg": "HS256", "typ": "JWT"},
)
print(token)
几个容易踩的点:
exp是 Unix 秒,不是毫秒;写成毫秒会得到一个很久以后才过期、但平台可能直接拒绝的 token。- 服务器时间要同步。时钟偏差过大时,
nbf校验会失败,表现为“token 尚未生效”。 - JWT 有效期只有 30 分钟,长任务轮询期间要重新生成,不能一个 token 用到底。
- 不要把 JWT 和 API Key 混用。新式接口用 API Key,旧式接口才走 AK/SK 签名,具体以对应接口文档为准。
四、权限、资源包与并发限制
可灵文档中的权限错误主要是业务码 1103(HTTP 403),含义是“没有请求该 API 或模型的权限”。它通常与账号状态、模型开通情况和资源包有关,而不是 Key 本身失效。
需要区分三类限制:
- 账户状态:
1100表示账号状态异常;1101表示后付费欠费;1102表示预付资源包用完或过期。 - 模型权限:
1103表示当前账号无权调用该接口或模型。 - 并发额度:视频任务按资源包提供并发槽位,超出时返回
1303。官方文档明确说明,同一账号下的所有 API Key 共用同一个并发池。
这意味着“多建几个 Key”不会带来更多并发,也不能把生产流量和测试流量真正隔离。若需要硬隔离,应使用独立账号或独立资源包,并在架构上做任务队列。可灵目前没有在文档中提供按接口细分的只读、生成等 scope,权限主要跟账号和已购能力绑定;如果控制台后续增加细粒度授权,以控制台为准。
五、把 Key 放进环境变量和密钥管理
最低要求是环境变量,生产环境应使用云厂商的 Secrets Manager、Kubernetes Secret 或类似的密钥服务。不要把 Key 提交到 Git,也不要在日志里打印完整值。
推荐的环境变量命名:
KLING_API_KEY=...
KLING_ACCESS_KEY=...
KLING_SECRET_KEY=...
KLING_BASE_URL=https://api-singapore.klingai.com
仓库里只保留 .env.example,填占位符。应用启动时检查变量是否存在,缺失就直接失败,而不是带着空字符串去请求。日志中最多记录 Key 的前 4 位和后 4 位,并保留 request_id。浏览器和移动端不得直接持有 Key,所有视频任务都应经后端代理提交。
六、401 排查对照表
| 业务码 | HTTP | 含义 | 常见原因 | 处理方式 |
|---|---|---|---|---|
| 1000 | 401 | 鉴权失败 | 请求头格式不对 | 检查 Authorization 是否存在 |
| 1001 | 401 | 鉴权头为空 | 环境变量为空、代理删头 | 打印变量长度,检查网关转发 |
| 1002 | 401 | 凭证无效 | Key 复制不全、已被撤销、环境用错 | 重新创建并更新密钥 |
| 1003 | 401 | Token 尚未生效 | 服务器时钟偏差、nbf 设置错误 |
同步 NTP,检查时间单位 |
| 1004 | 401 | Token 已过期 | 旧版 JWT 超过 30 分钟 | 重新生成 JWT |
排查顺序建议从外到内:先确认请求确实带上了头,再确认 Key 属于当前环境,最后才怀疑平台侧。若使用反向代理或 Serverless 平台,注意它是否会过滤 Authorization 头。
七、官方直连还是 API 网关
直连可灵开放平台,账号、资源包、调用日志和账单都在自己手里,适合有一定采购和运维能力的团队。通过 API 网关接入,则可以把多家视频模型收口到一套 Key 和账单下,减少对接成本。
选择网关时要确认四件事:是否已开通可灵视频通道、是否原样支持异步任务与 external_task_id、回调地址能否透传、结果 URL 如何交付。只支持 OpenAI 兼容文本接口的网关,不能直接拿来跑视频任务。可以查看模型与价格,并按需注册测试,先用最小任务验证,再决定是否迁移生产流量。
八、轮换与泄露处置
Key 轮换应做成例行操作,而不是出事后的应急动作。建议每 90 天轮换一次,人员离职或项目交接时立即轮换。
- 在控制台创建新 Key,名称带上日期,例如
video-prod-20261019。 - 把新 Key 写入密钥管理服务,更新测试环境并跑通一条最短任务。
- 灰度更新生产环境,观察 401、403 和任务成功率。
- 确认新 Key 稳定后,再撤销旧 Key。
- 记录轮换时间、执行人和受影响服务。
如果怀疑泄露,先撤销旧 Key,再查调用记录和账单,最后才排查泄露路径。只改代码不撤销凭证,风险仍然存在。Webhook Secret 是另一套凭证,官方支持新旧 secret 在 7 天宽限期内并存,可以和 API Key 分开轮换。
常见问题
可灵 API Key 和 AccessKey/SecretKey 有什么区别?
API Key 是单串凭证,直接放在 Bearer 头里;AccessKey/SecretKey 是旧版签名机制,需要自己生成 JWT。新接口优先用 API Key,旧接口按文档走 JWT。
一个账号可以创建多个 API Key 吗?并发会叠加吗?
可以按环境和项目创建多个 Key,但官方文档说明同一账号的所有 Key 共用并发池,多建 Key 不会增加并发。需要硬隔离时使用独立账号或独立资源包。
401 提示凭证无效,但 Key 看起来没错怎么办?
先检查是否复制了完整字符串、是否混入空格或换行、请求是否发到了正确区域,以及代理是否改写或删除了 Authorization 头。仍无法解决时,新建一个 Key 做对照测试。
可灵 API Key 会过期吗?
API Key 本身通常不按固定时间过期,但可能因撤销、账号状态或权限变化而失效。旧版 JWT 的有效期是 30 分钟。具体策略以控制台和官方文档为准。
用 API 网关还需要自己注册可灵账号吗?
不一定。网关通常会托管上游账号和计费,但可用模型、并发、回调能力和数据留存政策由网关决定。接入前应确认视频通道是否开通,并阅读其服务条款。
相关阅读:
