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

调用Crypto.com API v2的private/user-balance时遇10004 BAD_REQUEST错误求助

问题排查与解决办法

核心错误原因

你遇到的10004 BAD_REQUEST错误,大概率由两个问题导致:

  1. 端点路径错误:user-balance属于Crypto.com私有API范畴,正确的端点路径应为private/user-balance,而非直接使用/user-balance。
  2. 签名Payload不符合规则:你的代码生成了paramString但未将其加入签名Payload,Crypto.com私有API要求必须把请求参数的键值对按字典序拼接后,追加到签名Payload中(即使参数为空,也要保留该逻辑)。

再次确认API权限

虽然你提到调整过权限,但请二次核对:

  • 登录Crypto.com后台进入API密钥管理页
  • 确保密钥勾选了「Account Balance」相关权限
  • 若修改权限,需重新生成密钥并替换代码中的API_KEY和SECRET_KEY

修正后的代码

以下是适配user-balance接口的完整代码,同时优化了签名逻辑的通用性:

import time
import hmac
import hashlib
import requests
import json

# 替换为你的实际配置
API_KEY = "your_api_key"
SECRET_KEY = "your_secret_key"
BASE_URL = "https://api.crypto.com/v2/"

def get_user_balance():
    req = {
        "id": 3,  # 建议每次请求使用唯一ID,可递增
        "method": "private/user-balance",
        "api_key": API_KEY,
        "params": {},  # 如需指定币种,可添加如{"currency": "BTC"}
        "nonce": int(time.time() * 1000)
    }

    paramString = ""
    if "params" in req and req["params"]:
        # 按参数键的字典序排序后拼接,符合Crypto.com签名要求
        sorted_params = sorted(req["params"].items())
        for key, value in sorted_params:
            paramString += key
            paramString += str(value)

    # 签名Payload必须包含 method + id + api_key + paramString + nonce
    sigPayload = req['method'] + str(req['id']) + req['api_key'] + paramString + str(req['nonce'])

    req['sig'] = hmac.new(
        bytes(str(SECRET_KEY), 'utf-8'),
        msg=bytes(sigPayload, 'utf-8'),
        digestmod=hashlib.sha256
    ).hexdigest()

    # 拼接正确的端点路径
    response = requests.post(BASE_URL + req["method"], json=req, headers={'Content-Type': 'application/json'})
    return json.loads(response.text)

balance = get_user_balance()
print(balance)

关键调整说明

  • 端点修正:使用private/user-balance作为请求方法和路径,与API文档保持一致
  • 签名逻辑完善:将paramString加入签名Payload,同时对参数按字典序排序,避免因参数顺序导致签名无效
  • 请求ID优化:每次请求使用唯一ID(如递增),避免重复ID引发的请求失败

内容的提问来源于stack exchange,提问作者chrismountzou

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 07:46:11