PATCH /v1/p2p/listings/{id} — изменение цены листинга
Измените цену одного из ваших активных листингов на P2P-маркете CSBoard. Действует та же нижняя граница цены, что и при публикации.
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_.... Учитывается в лимите P2P-записей ключа — 30 запросов в минуту.
Пример запроса
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-allowlist ключа. |
| 404 | listing_not_found | Листинга с таким id нет. |
| 422 | price_below_market | Цена ниже половины нашей рыночной цены. См. market_usd и floor_usd. |
| 429 | rate_limit_exceeded | Больше 30 P2P-записей за эту минуту или превышен общий лимит ключа. Подождите время, указанное в заголовке 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"
}