PATCH /v1/p2p/listings/{id} — 修改挂单价格
调整您在 CSBoard P2P 市场上一条在售挂单的价格。适用与发布时相同的价格下限。
curl --request PATCH \
--url https://csboard.com/v1/p2p/listings/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"price_usd": 11.5
}
'import requests
url = "https://csboard.com/v1/p2p/listings/{id}"
payload = { "price_usd": 11.5 }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({price_usd: 11.5})
};
fetch('https://csboard.com/v1/p2p/listings/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://csboard.com/v1/p2p/listings/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'price_usd' => 11.5
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://csboard.com/v1/p2p/listings/{id}"
payload := strings.NewReader("{\n \"price_usd\": 11.5\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://csboard.com/v1/p2p/listings/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"price_usd\": 11.5\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://csboard.com/v1/p2p/listings/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"price_usd\": 11.5\n}"
response = http.request(request)
puts response.read_body{
"id": "cm1xq8z4k0003ab12cd34ef56",
"status": "active",
"price_usd": 11.5,
"currency": "USD",
"commission_usd": 0.23,
"seller_payout_usd": 11.27,
"market_hash_name": "AK-47 | Redline (Field-Tested)",
"item_name": "AK-47 | Redline (Field-Tested)",
"asset_id": "38451927734",
"operational_asset_id": "5b0c1f7e-3d2a-4c8e-9a61-2f4d8b7e1c30",
"float_value": 0.2711,
"needs_resync": false,
"created_at": "2026-10-02T12:04:11.000Z",
"updated_at": "2026-10-02T13:20:00.000Z"
}active 挂单的价格。以美分精度发送新的 price_usd,范围 0.10 到 100000。响应为更新后的挂单,其中 commission_usd 和 seller_payout_usd 已按新价格重新计算。
与发布时相同的价格下限同样适用,且无法通过确认绕过:低于我们对该物品市场价一半的价格会返回 422 price_below_market,并附带 market_usd 和 floor_usd。已售出或正在交易中的挂单无法再改价。
需要身份验证。 请将密钥作为 Authorization: Bearer csb_pub_... 发送。计入该密钥每分钟 30 次的 P2P 写操作限额。
示例请求
curl -X PATCH https://csboard.com/v1/p2p/listings/cm1xq8z4k0003ab12cd34ef56 \
-H "Authorization: Bearer csb_pub_..." \
-H "Content-Type: application/json" \
-d '{ "price_usd": 11.50 }'
示例响应
{
"id": "cm1xq8z4k0003ab12cd34ef56",
"status": "active",
"price_usd": 11.5,
"currency": "USD",
"commission_usd": 0.23,
"seller_payout_usd": 11.27,
"market_hash_name": "AK-47 | Redline (Field-Tested)",
"item_name": "AK-47 | Redline (Field-Tested)",
"asset_id": "38451927734",
"operational_asset_id": "5b0c1f7e-3d2a-4c8e-9a61-2f4d8b7e1c30",
"float_value": 0.2711,
"needs_resync": false,
"created_at": "2026-10-02T12:04:11.000Z",
"updated_at": "2026-10-02T13:20:00.000Z"
}
错误代码
| HTTP 状态码 | 代码 | 含义 |
|---|---|---|
| 400 | invalid_request | 请求体格式错误,或价格不在 0.10–100000 范围内或超过两位小数。 |
| 400 | listing_not_active | 该挂单已售出、正在交易中或已下架。 |
| 403 | not_owner | 该挂单属于其他账户。 |
| 403 | account_banned / ip_not_allowed | 账户已被封禁,或请求来自该密钥 IP 白名单之外的地址。 |
| 404 | listing_not_found | 不存在该 id 的挂单。 |
| 422 | price_below_market | 价格低于我们市场价的一半。参见 market_usd 和 floor_usd。 |
| 429 | rate_limit_exceeded | 本分钟内 P2P 写操作超过 30 次,或超过该密钥的通用限额。请等待 Retry-After 响应头中的秒数。 |
| 503 | p2p_disabled / p2p_reprice_disabled | P2P 市场或其改价功能目前已关闭。 |
授权
Send your key as a Bearer token on every request: Authorization: Bearer csb_pub_.... Generate keys in your CSBoard profile.
路径参数
Listing id from POST /p2p/listings or GET /p2p/listings.
请求体
Asking price in USD, whole cents (12.34; 12.345 is refused, not rounded). It may not be under half of our market price for the item — see price_below_market.
0.1 <= x <= 100000必须是以下数值的倍数 0.01响应
The updated listing.
Listing id — use it with PATCH / DELETE /p2p/listings/{id}.
active — on sale. trade_pending, trade_sent, verification_hold — sold and mid-delivery. reconciliation_required — off the shelf because a full inventory read no longer saw the item (needs_resync: true).
What the buyer pays.
USD Our fee on this listing, taken from the seller's side.
What a sale credits to your balance: price_usd minus commission_usd.
Steam asset id of the listed copy.
true when the listing was taken off the shelf because your inventory no longer showed the item. It cannot be revived in place — publish the item again once it is back.
curl --request PATCH \
--url https://csboard.com/v1/p2p/listings/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"price_usd": 11.5
}
'import requests
url = "https://csboard.com/v1/p2p/listings/{id}"
payload = { "price_usd": 11.5 }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({price_usd: 11.5})
};
fetch('https://csboard.com/v1/p2p/listings/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://csboard.com/v1/p2p/listings/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'price_usd' => 11.5
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://csboard.com/v1/p2p/listings/{id}"
payload := strings.NewReader("{\n \"price_usd\": 11.5\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://csboard.com/v1/p2p/listings/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"price_usd\": 11.5\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://csboard.com/v1/p2p/listings/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"price_usd\": 11.5\n}"
response = http.request(request)
puts response.read_body{
"id": "cm1xq8z4k0003ab12cd34ef56",
"status": "active",
"price_usd": 11.5,
"currency": "USD",
"commission_usd": 0.23,
"seller_payout_usd": 11.27,
"market_hash_name": "AK-47 | Redline (Field-Tested)",
"item_name": "AK-47 | Redline (Field-Tested)",
"asset_id": "38451927734",
"operational_asset_id": "5b0c1f7e-3d2a-4c8e-9a61-2f4d8b7e1c30",
"float_value": 0.2711,
"needs_resync": false,
"created_at": "2026-10-02T12:04:11.000Z",
"updated_at": "2026-10-02T13:20:00.000Z"
}