市场数据
GET /v1/currency — 用于美元价格换算的汇率
获取 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."
}CSBoard API 中所有价格均以美元计价。currency 端点返回与站点自身支付与展示流程相同的汇率表,为您提供一致的换算层,用于向用户展示本地货币价格。汇率主要币种来源于 OpenExchangeRates,RUB 来源于俄罗斯中央银行,并缓存约一小时。
需要身份验证。 请将密钥作为
由于汇率表缓存约 1 小时,请在应用启动时获取一次,并定期刷新,而非对每个商品都调用此端点。
Authorization: Bearer csb_pub_... 发送。
参数
此端点不接受任何查询参数。响应字段
string
必填
始终为
"USD"。所有汇率均相对于 1 美元表示。object
必填
ISO 4217 货币代码到其相对美元汇率(每 1 美元等于多少该货币单位)的映射。例如:
{ "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 响应,每小时刷新不超过一次。汇率约每小时更新一次,更频繁地轮询不会带来更新鲜的数据,反而会消耗您的速率限制额度。
授权
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."
}