Status
GET /v1/health — CSBoard API Liveness and Freshness Probe
Check whether the CSBoard API is reachable and how stale the price list is. Works without an API key — safe to poll unauthenticated.
GET
/
health
Liveness + freshness probe
curl --request GET \
--url https://csboard.com/v1/healthimport requests
url = "https://csboard.com/v1/health"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://csboard.com/v1/health', 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/health",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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/health"
req, _ := http.NewRequest("GET", url, nil)
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/health")
.asString();require 'uri'
require 'net/http'
url = URI("https://csboard.com/v1/health")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"status": "ok",
"groups": 184213,
"price_list_age_seconds": 42
}The health endpoint is a lightweight probe that confirms the API is reachable and tells you how stale the materialized price list is. It works without an API key — the only other keyless endpoint is the public price feed. That makes it safe to poll from monitoring systems, or to gate your application startup on a freshness check before making authenticated calls.
Response fields
string
required
Always
"ok" when the service is up.integer
required
Count of priced item groups currently in the price list (one group per unique
market_hash_name + wear + doppler_phase combination).integer
required
Age of the materialized price list in seconds. Use this as a freshness indicator — a large value means prices may be lagging.
Example request
curl https://csboard.com/v1/health
Example response
{
"status": "ok",
"groups": 184213,
"price_list_age_seconds": 42
}
Error codes
| HTTP status | Code | Meaning |
|---|---|---|
| 429 | rate_limit_exceeded | Over the request rate limit. Back off and retry after the Retry-After header value. |
Poll this endpoint from your health-check or startup logic before making authenticated calls. If
price_list_age_seconds is unexpectedly large (e.g. above a few minutes), treat downstream price data as potentially stale.⌘I
Liveness + freshness probe
curl --request GET \
--url https://csboard.com/v1/healthimport requests
url = "https://csboard.com/v1/health"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://csboard.com/v1/health', 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/health",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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/health"
req, _ := http.NewRequest("GET", url, nil)
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/health")
.asString();require 'uri'
require 'net/http'
url = URI("https://csboard.com/v1/health")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"status": "ok",
"groups": 184213,
"price_list_age_seconds": 42
}