You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用FTX历史余额API遇'Missing parameter accounts'错误求助

问题解决方案

核心问题

你把POST请求的参数放到了URL查询参数(params)里,但FTX的historical_balances/requests接口要求参数以**JSON格式放在请求体(body)**中,这就是为什么会提示缺少accounts参数。

代码修改点

  1. 发送POST请求时,将参数通过json参数传入(而非params),让requests自动处理JSON序列化并设置正确的Content-Type头。
  2. 确保签名生成时正确包含请求体内容(你的代码已有这部分逻辑,修改参数位置后会自动生效)。

修改后的完整代码

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 06:25:19