Рыночные данные
GET /v1/currency — курсы валют для конвертации USD
Получите таблицу курсов валют с базой USD, которую использует CSBoard в платежных потоках. Умножайте любой price_usd на курс целевой валюты, чтобы получить цену в локальной валюте.
GET
/
currency
FX rates (USD base)
curl --request GET \
--url https://csboard.com/v1/currency \
--header 'Authorization: Bearer <token>'import requests
url = "https://csboard.com/v1/currency"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://csboard.com/v1/currency', 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/currency",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://csboard.com/v1/currency"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://csboard.com/v1/currency")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://csboard.com/v1/currency")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"base": "USD",
"rates": {
"USD": 1,
"EUR": 0.92,
"RUB": 78.4,
"GBP": 0.79
},
"updated_at": "2026-06-29T17:00:00Z",
"rub_source": "cbr",
"base_source": "openexchangerates"
}{
"code": "missing_api_key",
"detail": "Provide your API key via `Authorization: Bearer csb_pub_…`. Generate one at https://csboard.com/profile?tab=api"
}{
"code": "rate_limit_exceeded",
"detail": "Rate limit of 100 requests/min exceeded."
}Все цены в API CSBoard выражены в USD. Эндпоинт currency возвращает ту же таблицу курсов, что используется во внутренних потоках сайта для платежей и отображения цен, обеспечивая единый слой конвертации для показа пользователям цен в локальной валюте. Курсы получаются из OpenExchangeRates для основных валют и из Центрального банка России для RUB; кэшируются примерно на один час.
Требуется аутентификация. Отправьте ключ как
Поскольку таблица курсов кэшируется примерно на 1 час, запрашивайте её один раз при старте приложения и периодически обновляйте, а не вызывайте этот эндпоинт для каждого товара.
Authorization: Bearer csb_pub_....
Параметры
Этот эндпоинт не принимает query-параметров.Поля ответа
string
обязательно
Всегда
"USD". Все курсы выражены относительно одного доллара США.object
обязательно
Соответствие кодов валют ISO 4217 их курсам к USD (единиц этой валюты за 1 USD). Пример:
{ "USD": 1, "EUR": 0.92, "RUB": 78.4, "GBP": 0.79 }.datetime
обязательно
Временная метка ISO 8601, когда таблица курсов была последний раз обновлена.
string
Идентификатор источника курса RUB, например
"cbr" (Центральный банк России).string
Идентификатор источника для курсов, отличных от RUB, например
"openexchangerates".Конвертация цен
Чтобы отобразить значениеprice_usd в локальной валюте, умножьте его на соответствующий курс:
local_price = price_usd × rates["EUR"]
# например, 14.37 USD × 0.92 = 13.22 EUR
Пример запроса
curl https://csboard.com/v1/currency \
-H "Authorization: Bearer csb_pub_..."
Пример ответа
{
"base": "USD",
"rates": {
"USD": 1,
"EUR": 0.92,
"RUB": 78.4,
"GBP": 0.79
},
"updated_at": "2026-06-29T17:00:00Z",
"rub_source": "cbr",
"base_source": "openexchangerates"
}
Коды ошибок
| HTTP-статус | Код | Значение |
|---|---|---|
| 401 | missing_api_key, invalid_api_key | Отсутствует или некорректный API-ключ. |
| 429 | rate_limit_exceeded | Более 30 запросов/мин. Перед повтором сверьтесь с заголовком Retry-After. |
Кэшируйте ответ rates на стороне клиента и обновляйте не чаще одного раза в час. Курсы обновляются на том же ~1-часовом цикле, поэтому более частые опросы не дадут более свежих данных и впустую расходуют лимит запросов.
Авторизации
Send your key as a Bearer token on every request: Authorization: Bearer csb_pub_.... Generate keys in your CSBoard profile.
⌘I
FX rates (USD base)
curl --request GET \
--url https://csboard.com/v1/currency \
--header 'Authorization: Bearer <token>'import requests
url = "https://csboard.com/v1/currency"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://csboard.com/v1/currency', 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/currency",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://csboard.com/v1/currency"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://csboard.com/v1/currency")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://csboard.com/v1/currency")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"base": "USD",
"rates": {
"USD": 1,
"EUR": 0.92,
"RUB": 78.4,
"GBP": 0.79
},
"updated_at": "2026-06-29T17:00:00Z",
"rub_source": "cbr",
"base_source": "openexchangerates"
}{
"code": "missing_api_key",
"detail": "Provide your API key via `Authorization: Bearer csb_pub_…`. Generate one at https://csboard.com/profile?tab=api"
}{
"code": "rate_limit_exceeded",
"detail": "Rate limit of 100 requests/min exceeded."
}