通过 CSBoard API 购买可以让您以编程方式获取 CS2 皮肤——直接从您的余额扣款,具备原子超额收费保护和内置幂等性。在您的第一笔订单生效之前,您需要完成一次简短的一次性设置。请按顺序完成以下步骤。
标准的只读密钥 永远 无法消费资金。交易是有意采用「主动启用」模式——泄露或受损的只读密钥在您显式启用之前无法下单或耗尽您的余额。
在您的密钥上启用交易
访问您的 API 个人资料,并为您想使用的密钥切换 buying 开关。在您完成此操作之前,每次对 POST /v1/orders 的调用都会返回 403 trading_not_enabled。 关联您的 Steam 账户和交易 URL
订单直接交付到 Steam,因此您必须在个人资料中设置已关联的 Steam 账户和有效的交易 URL。否则 API 会返回 400 steam_account_required。
为您的 CSBoard 余额充值
购买款项从您现有的 CSBoard 余额中扣除。请在站点上充值——API 本身不提供任何卡或加密货币支付路径。
寻找要购买的挂单
查询 GET /v1/listings 以查找物品并收集它们的 id 字段。响应中的每个 id 都是一个稳定的引用,您可以直接将其传递给订单端点。curl "https://csboard.com/v1/listings?search=AK-47%20Redline&wear=Minimal%20Wear&sort=price_asc&limit=5" \
-H "Authorization: Bearer csb_pub_..."
下单
将挂单 ID POST 到 /v1/orders。包含 max_price_usd 和 Idempotency-Key——两者都将在下方详细说明。curl -X POST https://csboard.com/v1/orders \
-H "Authorization: Bearer csb_pub_..." \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 6f9c2b10-1a2b-4c3d-8e4f-5a6b7c8d9e0f" \
-d '{"item_ids":["itm_8841201"],"max_price_usd":20.00}'
超额收费保护
您始终按 执行时的实时价格 扣款,而不是您浏览挂单时看到的价格。市场会变动——您 30 秒前获取的挂单到您的订单落地时可能已被以更高价格重新挂出。
使用 max_price_usd 作为总价格上限。扣款是原子的:如果执行时的实时总价超过您的上限,整个订单将被拒绝并返回 400 price_moved——不会扣款也不会转移任何物品。
在下单前,始终从 GET /v1/listings 读取 price_usd——该值是权威的,并等于确切的扣款金额。/v1/prices 端点返回的是一个指示性的分组快照,可能滞后于实时的单品价格。
如果价格变动且您收到 400,响应主体会包含 current_total_usd,以便您决定是否以更高的上限重新提交,或放弃:
{
"code": "price_moved",
"message": "Live total 31.20 exceeds max_price_usd 30.00.",
"current_total_usd": 31.20
}
幂等性
网络故障时有发生。如果没有幂等性,超时后的重试可能会让同一个物品被购买两次。通过在每个订单请求中发送唯一的 Idempotency-Key 头部来防止这种情况。
- 如果服务器收到两个具有相同密钥的请求,它会重放原始订单结果——购买永远不会被执行第二次。
- 您也可以在请求主体中传递
idempotency_key 而不是放在头部;两者效果相同。
- 每次订单尝试使用一个 UUID v4,而不是每次重试。
curl -X POST https://csboard.com/v1/orders \
-H "Authorization: Bearer csb_pub_..." \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 6f9c2b10-1a2b-4c3d-8e4f-5a6b7c8d9e0f" \
-d '{
"item_ids": ["itm_8841201", "itm_8841340"],
"max_price_usd": 30.00
}'
响应示例
成功的订单返回 200,包含订单详情和您的剩余余额:
{
"order_id": "ord_01J9Z3K8Q2",
"status": "processing",
"items": [
{
"item_id": "itm_8841201",
"charged_usd": 14.37,
"delivery": "hold"
},
{
"item_id": "itm_8841340",
"charged_usd": 12.10,
"delivery": "instant"
}
],
"total_charged_usd": 26.47,
"balance_after_usd": 73.53,
"created_at": "2026-06-29T17:12:04Z"
}
订单响应中的每个物品都包含一个 delivery 字段:
instant — 物品当前可交易,将立即发送到您的 Steam 交易 URL。
hold — 物品处于 Steam 交易冻结期。查看挂单的 tradable_at 字段(ISO 8601 时间戳)以了解何时可交易。
错误参考
| 代码 | HTTP 状态 | 含义 |
|---|
price_moved | 400 | 实时价格超出 max_price_usd——响应包含 current_total_usd |
insufficient_balance | 402 | 您的 CSBoard 余额低于订单总额 |
steam_account_required | 400 | 个人资料中未关联 Steam 账户或交易 URL |
trading_not_enabled | 403 | API 密钥未启用购买功能 |
后续步骤