调用FTX历史余额API遇'Missing parameter accounts'错误求助
问题解决方案
核心问题
你把POST请求的参数放到了URL查询参数(params)里,但FTX的historical_balances/requests接口要求参数以**JSON格式放在请求体(body)**中,这就是为什么会提示缺少accounts参数。
代码修改点
- 发送POST请求时,将参数通过
json参数传入(而非params),让requests自动处理JSON序列化并设置正确的Content-Type头。 - 确保签名生成时正确包含请求体内容(你的代码已有这部分逻辑,修改参数位置后会自动生效)。
修改后的完整代码
import requests import time import hmac s = requests.Session() url = "https://ftx.com/api/historical_balances/requests" ts = int(time.time() * 1000) tsN = int(time.time()) # 参数放在请求体中,用json传入 payload = { "accounts": ["main", "subaccounts"], "endTime": tsN, } # 初始化请求时使用json参数传递数据 request = requests.Request("POST", url, json=payload) prepared = request.prepare() # 生成签名 payload,包含时间戳、方法、路径和请求体 signature_payload = f'{ts}{prepared.method}{prepared.path_url}'.encode() if prepared.body: signature_payload += prepared.body signature = hmac.new('MYSECRET'.encode(), signature_payload, 'sha256').hexdigest() # 设置请求头 prepared.headers.update({ 'FTX-KEY': 'MYKEY', 'FTX-SIGN': signature, 'FTX-TS': str(ts), }) # 发送已准备好的请求 r = s.send(prepared) print('Output Json :', r.json())
额外注意事项
- 替换代码中的
MYSECRET和MYKEY为你的实际API密钥。 - 确认
subaccounts是你实际存在的子账户名称,如果是多个子账户,需要写成具体名称列表,比如["main", "sub1", "sub2"]。
内容的提问来源于stack exchange,提问作者Ray Smith
相关产品推荐
相关产品推荐

