Bitget API密钥如何绑定并设置交易权限?

功能定位:API密钥到底解决什么问题
Bitget API密钥的核心关键词是“自动化”。它把原本只能在网页或App里点击完成的下单、撤单、划转、查询等动作,抽象成一行行HTTPS请求,让程序代替人眼与手指。对散户而言,可以把网格策略挂到云服务器,不再担心关机;对机构来说,能在毫秒级完成对冲、做市、资金归集。2026年2月起,平台把“合约跟单”与“量化策略市场”也纳入API范畴,意味着密钥权限一旦配置过宽,策略不仅能读行情,还能直接带单,风险半径随之放大。
与网页权限相比,API密钥少了图形验证码与二次短信,却多了IP白名单、有效期、权限颗粒度三项硬门槛。理解“钥匙齿形”如何切割,是后续所有安全与效率取舍的前提。
前置检查:账号、KYC与2FA缺一不可
在创建密钥之前,账号必须完成Lv.2 KYC(上传证件+人脸识别),并绑定谷歌验证器或通行密钥(Passkey)。经验性观察:若KYC状态处于“审核中”,系统会返回“403 account restricted”,此时即使生成密钥也无法下单。解决办法是等待邮件通知或提交工单加急。
2FA方面,Bitget允许“谷歌验证码+通行密钥”双轨并存,但API侧只认谷歌验证码。若你平时用面容登录App,首次创建密钥时仍需输入一次6位动态码,否则“确认”按钮呈灰色。
创建密钥的最短路径(桌面端)
- 登录官网,右上角头像→【API管理】。
- 点击【创建API Key】,输入备注名(建议用“策略用途+日期”格式,如grid_202603)。
- 权限区勾选:读取、现货交易、合约交易、钱包划转(按需)。
- IP白名单:输入服务器公网IP,多个用半角逗号分隔;若暂时不确定,可先填本地出口IP,稍后修改。
- 谷歌验证码→邮件验证码→【提交】。页面将只显示Key与Secret一次,务必离线保存。
若你使用子账号,需先用主账号给子账号开通“API功能”开关,否则子账号侧看不到【API管理】入口。路径:主账号→【子账号管理】→【权限设置】→勾选“允许API交易”。
移动端补充入口与差异
Bitget App(iOS/Android)在“最新版本”中把API入口藏得较深:首页→【个人】→【安全中心】→【API管理】。界面与桌面端同源,但键盘会遮挡Secret,建议横屏或复制到系统剪贴板后立刻粘贴到密码管理器。
移动端不支持批量导入IP白名单,只能一条条添加;若你的云厂商提供IPv6段,需要把v4与v6同时填入,否则会出现“间歇性403”——这是经验性观察,验证方法是:在服务器ping api.bitget.com,看返回地址是v4还是v6,再核对白名单。
权限颗粒度拆解:何时勾选“划转”
Bitget把权限拆成七类:读取、现货、合约、跟单、期权、钱包划转、子账号归集。对绝大多数量化策略,只需“读取+现货+合约”即可;勾选“划转”意味着程序能把资金从现货账户挪到合约账户,甚至提币到链上地址(若提币权限未额外设码)。
警告
2026年1月曾出现“网格机器人被黑客提币”事件,事后复盘发现用户把Secret硬编码在Github,且给机器人勾选了“划转+提币”。官方并未赔偿,仅协助冻结链上地址。结论:除非你要做自动归集,否则“划转”与“提币”永远分钥。
IP白名单的三种填法与坑点
1. 单点固定IP
适合自建VPS,IP常年不变。填法:42.120.88.99。注意别复制末尾空格,否则系统提示“IP格式错误”。
2. 弹性NAT段
AWS/Azure的NAT网关可能随时换出口。经验性做法:在服务器curl ifconfig.me连续观察三天,若发现总在42.120.88.0/24浮动,可直接填42.120.88.0/24。Bitget支持CIDR,但掩码不能小于16。
3. 临时本地调试
若你在家用宽带,IP每天变,可先把0.0.0.0/0填进去,调试完立刻改回具体段。官方限制“0.0.0.0/0”只能存活24小时,超时自动失效,防止长期裸奔。
密钥绑定后的第一行测试代码
用Python3验证连通性,只需读取权限即可:
import time, hmac, hashlib, requests
apikey = 'bg_1234567890abcdef'
secret = 'abcdef1234567890'
timestamp = str(int(time.time()*1000))
sign = hmac.new(secret.encode(), f'{timestamp}GET/api/spot/v1/account/assets'.encode(), hashlib.sha256).hexdigest()
res = requests.get('https://api.bitget.com/api/spot/v1/account/assets',
headers={'ACCESS-KEY':apikey,'ACCESS-SIGN':sign,'ACCESS-TIMESTAMP':timestamp})
print(res.json())
若返回code=0且能看到USDT余额,说明绑定成功;若code=40015,则是IP不在白名单。
常见失败分支与回退方案
| 错误码 | 现象 | 处置 |
|---|---|---|
| 40015 | IP forbidden | 核对白名单,是否漏填v6 |
| 40001 | 签名错误 | 检查timestamp与服务器时间,误差不能超过5秒 |
| 403 | account restricted | KYC或风控冻结,提交工单 |
| 429 | too many requests | 降低频率,现货读取限速20次/2s |
回退方案:若业务已上线,不能立即改IP,可在后台再生成一把“临时密钥”,把旧Key的权限缩小到只读,等新Key验证无误后删除旧Key,实现平滑切换。
与第三方机器人协同的最小权限原则
以“网格机器人”场景为例,官方模板只用到:读取行情、下单、撤单。此时应拒绝勾选“划转”“提币”“期权”。若机器人提供商要求Secret上传云端,务必启用IP白名单,并给机器人单独建子账号,主账号资金通过“内部划转”定量补给。
经验性观察:部分第三方为图方便,会提示“请开启0.0.0.0/0便于节点漂移”。此时应评估:若机器人厂商无法提供固定NAT段,可换厂商,或把资金控制在“损失可接受”范围,例如单币不超过总仓位5%。
密钥生命周期管理:90天滚动轮换
Bitget没有强制过期时间,但官方在“安全评分”里把“90天未更换”标记为中风险。推荐做法:每季度新建密钥→修改配置文件→删除旧密钥。自动化脚本可调用/api/spot/v1/account/assets,若返回code=40015即知旧Key已失效,触发CI/CD流水线停服,防止继续发单。
若团队多人共用账号,建议用“备注名+责任人”格式,如“grid_202603_zhangsan”,方便审计。删除密钥时,后台会要求二次谷歌码,防止误删。
监控与验收:三项指标判断对接成功
- 延迟:rest下单接口平均响应在亚秒级,若连续10次超过1秒,检查服务器区域(东京区到AWS东京延迟最低)。
- 丢单:下单后立刻查订单列表,若status=cancel且reason=post_only,说明价格越界,属于策略问题,不是密钥问题。
- 权限漂移:每日凌晨跑批调用/api/spot/v1/account/assets,若返回空列表,可能权限被误改,触发告警。
验收通过后,把监控面板截图存档,作为后续审计凭证。
不适用场景清单
- 刚注册但KYC尚未通过的账号,API会直接拒绝。
- 需要高频期权报价(>100次/秒)的做市商,REST无法满足,需申请FIX通道,API密钥只作备用。
- 打算用同一套密钥同时跑“现货网格+合约跟单+期权波动率”,建议拆分子账号,否则一旦泄露损失面过大。
最佳实践速查表
1. 一钥一用,拒绝万能钥匙。
2. IP白名单能缩就缩,拒绝0.0.0.0/0长期存活。
3. 划转与提币永远分钥,子账号+限额双保险。
4. 90天滚动轮换,用自动化脚本检测失效。
5. 监控延迟、丢单、权限漂移,每日告警。
FAQ(结构化数据)
一个账号最多能创建多少把API密钥?
主账号20把,每个子账号额外10把,超出需删除旧Key。
密钥泄露后如何应急?
立刻登录后台删除该Key,若无法登录,用注册邮箱发邮件到[email protected],标题“API Key Emergency”,附上UID与身份证后四位,官方会在30分钟内冻结相关权限。
能否给同一Key设置多个IP段?
可以,用英文逗号分隔,最多50条记录;支持CIDR,如192.168.1.0/24。
子账号的Key能提币吗?
不能,子账号默认关闭提币,只能内部划转,需主账号手动开启且额外设提币白名单。
为什么本地调试正常,上云就报40015?
本地是家庭宽带,出口IP每天变;云服务器是固定IP。把云IP加入白名单即可,记得删除0.0.0.0/0。
收尾:下一步行动建议
读完本文,你应已拥有“一把最小权限、IP白名单、90天生命周期”的API密钥。先跑通读取接口,再逐步开放交易权限,最后把监控与轮换脚本写进CI/CD。记住,密钥不是越多越好,而是“刚好够用”且“随时可废”。现在就打开Bitget后台,把多余的万能钥匙删掉,给2026年的自动化交易留一条干净的起跑线。