SteamRadar API
Everything on this site through JSON: the whole Steam catalogue with prices, players, reviews and estimates; YouTube and Twitch coverage per game with scores; creators, streamers and indie developers you can reach; and in-platform messaging paid with your credits wallet. Base URL: https://steamradar.net/web/api/v1/
GET https://steamradar.net/web/api/v1/mePOST contacts/search → POST messagescurl -H "Authorization: Bearer sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/search?q=door+kickers&type=game"
# Python
import requests
api = requests.Session(); api.headers["X-API-Key"] = "sr_live_YOUR_KEY"
games = api.get("https://steamradar.net/web/api/v1/search", params={"q": "door kickers", "type": "game"}).json()["items"]
// JavaScript
const r = await fetch("https://steamradar.net/web/api/v1/search?q=door+kickers", {headers: {"X-API-Key": "sr_live_YOUR_KEY"}});
const {items} = await r.json();
Authentication
Every endpoint except POST auth/register, POST auth/login, POST auth/forgot, POST auth/reset, POST auth/verify, GET health, GET docs and GET openapi (and the index at the base URL) requires a logged-in user: a personal API key (sr_live_…, created on API keys) or the session token the mobile apps get from auth/login. Send it as Authorization: Bearer <key> or X-API-Key: <key>.
Keys have scopes: read Read public data (games, creators, charts); messages Send and read messages, credits; dashboard Your account: follows, alerts, claims, affiliate, profile; a call outside the key's scopes answers 403 missing_scope. Admin endpoints never accept keys. Up to 5 active keys per account; a revoked key stops working immediately.
Rate limits & paging
60 requests per minute per key (X-RateLimit-Limit / X-RateLimit-Remaining headers, 429 with Retry-After when exceeded). Lists take ?page=1&per=30 (max 100) and answer {"items": [...], "page", "per", "total"}; "total" may read "10000+" on very large lists. Times are UTC ISO-8601, money is in cents.
Errors
Every answer is {"ok": true, …} or {"ok": false, "error": "code", "message": "what to do"} with the HTTP status:
| 400 | bad input (bad_json, no_recipients, rejected …) |
| 401 | login_required, bad_key, bad_token |
| 402 | credits_needed — the answer lists the packages you can buy |
| 403 | missing_scope, forbidden |
| 404 | not_found |
| 429 | rate_limited |
| 501 / 503 | not_implemented / unavailable: the feature is not live yet — hide it, do not retry in a loop |
Messaging & credits
You never get a creator's or developer's e-mail. You message them through the platform: every recipient gets the whole message by e-mail with a link to reply on the site, and people with an account also read it in their inbox. Every recipient costs 1 credit after your 5 free messages per UTC day; unreachable, opted-out, blocked and already-messaged-today recipients are skipped and never charged. Up to 1,000 recipients per send and 5,000 per day. Credits come in packages:
# 1. who can I reach? (identities come back ready to use)
POST https://steamradar.net/web/api/v1/contacts/search
{"kind": "youtubers", "filters": {"game": 1239080, "subs_min": 10000}, "limit": 50}
→ {"items": [...], "identities": ["yt:UC…", "yt:UC…"], "total": 412}
# 2. what will it cost?
GET https://steamradar.net/web/api/v1/messages/quote?to=yt:UC…,yt:UC…
→ {"send": 2, "free_left": 5, "credits_needed": 0, "credits": 120, "cost_ok": true}
# 3. send (all-or-nothing)
POST https://steamradar.net/web/api/v1/messages
{"to": ["yt:UC…", "yt:UC…"], "subject": "Keys for our new demo", "body": "Hi! …"}
→ {"message_id": 77, "sent": 2, "free_used": 2, "credits_used": 0, "credits_left": 120}
# short on credits → 402 with the packages; buy with POST credits/checkout {"package_id": 500} → open checkout_url
Account
7 endpoints
POST
me/push
dashboard
Register this device for push notifications
| Parameter | In | Type | Description |
|---|---|---|---|
token | body | string | APNs device token (ios) or FCM token (android) |
platform | body | string | ios or android |
expo_token | body | string | older Expo form |
curl -X POST -H "X-API-Key: sr_live_YOUR_KEY" -H "Content-Type: application/json" -d '{"token":"\u2026","platform":"\u2026","expo_token":"\u2026"}' "https://steamradar.net/web/api/v1/me/push"
{
"ok": true
}
GET
me
dashboard
The account behind the key or token: credits, free messages left today, unread counts, verified assets
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/me"
{
"ok": true,
"user": {
"id": 1,
"name": "Me",
"msg_credits": 120,
"free_messages_left_today": 5,
"unread_messages": 0,
"identities": []
}
}
GET
keys
dashboard
Your API keys (session token only)
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/keys"
{
"ok": true,
"items": [
{
"id": 1,
"name": "my script",
"prefix": "sr_live_abc12345",
"scopes": [
"read",
"messages"
],
"calls_total": 42
}
]
}
POST
keys
dashboard
Create an API key (session token only); the full key is returned once
| Parameter | In | Type | Description |
|---|---|---|---|
name | body | string | |
scopes | body | array | subset of read, messages, dashboard |
curl -X POST -H "X-API-Key: sr_live_YOUR_KEY" -H "Content-Type: application/json" -d '{"name":"\u2026","scopes":[]}' "https://steamradar.net/web/api/v1/keys"
{
"ok": true,
"key": "sr_live_…",
"item": {
"id": 2,
"name": "my script"
}
}
DELETE
keys/{id}
dashboard
Revoke a key (session token only)
curl -X DELETE -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/keys/:id"
{
"ok": true
}
PATCH
me
dashboard
Update name, e-mail alerts, sign-in notices; with a session token also the password (other sessions and API keys are then revoked) or the e-mail address (confirmed by a link). A wrong current_password saves nothing
| Parameter | In | Type | Description |
|---|---|---|---|
name | body | string | |
notify_email | body | bool | |
notify_login | body | bool | e-mail on a sign-in from a new device |
email | body | string | new address (needs current_password) |
password | body | string | new password, min 8 characters (needs current_password) |
current_password | body | string |
curl -X PATCH -H "X-API-Key: sr_live_YOUR_KEY" -H "Content-Type: application/json" -d '{"name":"\u2026","notify_email":true,"notify_login":true,"email":"\u2026","password":"\u2026","current_password":"\u2026"}' "https://steamradar.net/web/api/v1/me"
{
"ok": true,
"user": [],
"revoked": {
"sessions": 0,
"keys": 0
}
}
DELETE
me
dashboard
Delete the account (session token only, password required): personal data removed, receipts and ledgers kept anonymously, every session and API key ended — the same as Dashboard → Settings on the website
| Parameter | In | Type | Description |
|---|---|---|---|
password | body | string | the current password |
curl -X DELETE -H "X-API-Key: sr_live_YOUR_KEY" -H "Content-Type: application/json" -d '{"password":"\u2026"}' "https://steamradar.net/web/api/v1/me"
{
"ok": true,
"deleted": true
}
Catalogue
11 endpoints
GET
home
read
Front-page data: KPIs, trending on YouTube, most played, top sellers, new releases, upcoming, discounts, latest videos and changes
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/home"
{
"ok": true,
"kpis": {
"apps": 321363,
"games": 199223
},
"trending_youtube": [
{
"appid": 1239080,
"name": "Door Kickers 2: Task Force North",
"type": "game",
"img": "https://…/capsule_231x87.jpg",
"price": "$24.99",
"price_cents": 2499,
"discount_pct": 0,
"reviews": 12500,
"review_pct": 96,
"players_now": 451,
"yt_score": 100,
"tw_score": 42.5
}
]
}
GET
search
read
Search and filter every Steam app
| Parameter | In | Type | Description |
|---|---|---|---|
q | query | string | name search |
type | query | string | game, demo, dlc, software, music |
tag | query | integer | Steam tag id (repeatable) |
cat | query | integer | category id |
price_min | query | number | US dollars, e.g. 5 |
price_max | query | number | US dollars, e.g. 19.99 (free games are always included) |
discount | query | 1 | only discounted |
year_from | query | integer | |
year_to | query | integer | |
coming_soon | query | 1 | |
reviews_min | query | integer | |
pct_min | query | integer | min % positive |
platform | query | string | win, mac, linux |
deck | query | integer | 3 = verified |
yt_score_min | query | number | |
tw_score_min | query | number | |
sort | query | string | reviews, release, price, players, yt_score, tw_score, name, discount, followers, owners, revenue |
dir | query | string | asc / desc |
page | query | integer | Page number, from 1 |
per | query | integer | Items per page, 1-100 (default 30) |
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/search"
{
"ok": true,
"items": [
{
"appid": 1239080,
"name": "Door Kickers 2: Task Force North",
"type": "game",
"img": "https://…/capsule_231x87.jpg",
"price": "$24.99",
"price_cents": 2499,
"discount_pct": 0,
"reviews": 12500,
"review_pct": 96,
"players_now": 451,
"yt_score": 100,
"tw_score": 42.5
}
],
"page": 1,
"per": 30,
"total": 199223
}
GET
suggest
read
Autocomplete apps by name
| Parameter | In | Type | Description |
|---|---|---|---|
q | query | string | 2+ characters |
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/suggest"
{
"ok": true,
"items": [
{
"appid": 1239080,
"name": "Door Kickers 2",
"type": "game",
"img": "https://…",
"meta": "Game 2025"
}
]
}
GET
charts
read
A chart
| Parameter | In | Type | Description |
|---|---|---|---|
chart | query | string | concurrent (default), most_played, top_sellers, trending, top_releases, yt_trending, yt_score, tw_live, tw_hours, top_rated, most_reviewed, … (without it: the list of charts); an unknown id answers 400 |
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/charts"
{
"ok": true,
"items": [
{
"appid": 1239080,
"name": "Door Kickers 2: Task Force North",
"type": "game",
"img": "https://…/capsule_231x87.jpg",
"price": "$24.99",
"price_cents": 2499,
"discount_pct": 0,
"reviews": 12500,
"review_pct": 96,
"players_now": 451,
"yt_score": 100,
"tw_score": 42.5,
"value": 1269367
}
]
}
GET
sales
read
Current discounts
| Parameter | In | Type | Description |
|---|---|---|---|
page | query | integer | Page number, from 1 |
per | query | integer | Items per page, 1-100 (default 30) |
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/sales"
{
"ok": true,
"items": [
{
"appid": 1239080,
"name": "Door Kickers 2: Task Force North",
"type": "game",
"img": "https://…/capsule_231x87.jpg",
"price": "$24.99",
"price_cents": 2499,
"discount_pct": 0,
"reviews": 12500,
"review_pct": 96,
"players_now": 451,
"yt_score": 100,
"tw_score": 42.5
}
]
}
GET
upcoming
read
Upcoming releases
| Parameter | In | Type | Description |
|---|---|---|---|
page | query | integer | Page number, from 1 |
per | query | integer | Items per page, 1-100 (default 30) |
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/upcoming"
{
"ok": true,
"items": [
{
"appid": 1239080,
"name": "Door Kickers 2: Task Force North",
"type": "game",
"img": "https://…/capsule_231x87.jpg",
"price": "$24.99",
"price_cents": 2499,
"discount_pct": 0,
"reviews": 12500,
"review_pct": 96,
"players_now": 451,
"yt_score": 100,
"tw_score": 42.5
}
]
}
GET
changes
read
Latest store changes across the catalogue
| Parameter | In | Type | Description |
|---|---|---|---|
page | query | integer | Page number, from 1 |
per | query | integer | Items per page, 1-100 (default 30) |
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/changes"
{
"ok": true,
"items": []
}
GET
updates
read
Latest public builds
| Parameter | In | Type | Description |
|---|---|---|---|
page | query | integer | Page number, from 1 |
per | query | integer | Items per page, 1-100 (default 30) |
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/updates"
{
"ok": true,
"items": []
}
GET
tags
read
Every Steam tag
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/tags"
{
"ok": true,
"items": [
{
"id": 19,
"name": "Action"
}
]
}
GET
packages/{id}
read
A Steam package (sub)
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/packages/:id"
{
"ok": true,
"package": []
}
GET
bundles/{id}
read
A Steam bundle
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/bundles/:id"
{
"ok": true,
"bundle": []
}
Games
11 endpoints
GET
apps/{appid}
read
Everything about one app: store data, prices, players, followers, estimates, scores, tags, DLC, screenshots, developer contact flags (never an e-mail)
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/apps/:appid"
{
"ok": true,
"app": {
"appid": 1239080,
"name": "Door Kickers 2: Task Force North",
"type": "game",
"img": "https://…/capsule_231x87.jpg",
"price": "$24.99",
"price_cents": 2499,
"discount_pct": 0,
"reviews": 12500,
"review_pct": 96,
"players_now": 451,
"yt_score": 100,
"tw_score": 42.5,
"owners_est": 375000,
"revenue_est_cents": 520000000,
"tags": [
{
"id": 19,
"name": "Action",
"weight": 1000
}
]
}
}
GET
apps/{appid}/youtube
read
YouTube coverage: score, stats, chart, creators or videos
| Parameter | In | Type | Description |
|---|---|---|---|
sub | query | string | creators (default) or videos |
sort | query | string | creators: subs, videos, views, last; videos: views (default newest) |
page | query | integer | Page number, from 1 |
per | query | integer | Items per page, 1-100 (default 30) |
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/apps/:appid/youtube"
{
"ok": true,
"sub": "creators",
"stats": {
"score": 100,
"videos": 13669,
"creators": 978
},
"chart": {
"labels": [],
"game": [],
"demo": []
},
"items": [],
"total": 978
}
GET
apps/{appid}/twitch
read
Twitch coverage: live now, 30-day stats, streamers (items), VODs, clips, hourly and daily series
| Parameter | In | Type | Description |
|---|---|---|---|
sort | query | string | hours (default), avg, peak, followers, last |
page | query | integer | Page number, from 1 |
per | query | integer | Items per page, 1-100 (default 30) |
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/apps/:appid/twitch"
{
"ok": true,
"stats": {
"viewers_now": 120,
"hours_30d": 5400
},
"items": [],
"hourly": [],
"daily": [],
"vods": [],
"clips": []
}
GET
apps/{appid}/prices
read
Current price in every tracked region and the price history of one region
| Parameter | In | Type | Description |
|---|---|---|---|
cc | query | string | region of the history, default US |
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/apps/:appid/prices"
{
"ok": true,
"regions": [
{
"cc": "US",
"currency": "USD",
"formatted": "$24.99",
"final_cents": 2499,
"discount_pct": 0
}
],
"history_cc": "US",
"history": []
}
GET
apps/{appid}/charts
read
Daily players (peak / average), reviews and estimated owners over time
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/apps/:appid/charts"
{
"ok": true,
"players": [
{
"day": "2026-11-10",
"peak": 457,
"avg": 300
}
]
}
GET
apps/{appid}/news
read
Steam news and patch notes
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/apps/:appid/news"
{
"ok": true,
"items": []
}
GET
apps/{appid}/achievements
read
Achievements with global unlock rates
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/apps/:appid/achievements"
{
"ok": true,
"items": []
}
GET
apps/{appid}/changes
read
Store changes we recorded (price, release, name, …)
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/apps/:appid/changes"
{
"ok": true,
"items": []
}
GET
apps/{appid}/technical
read
PICS data: builds, branches, depots, Steam Deck results, packages, bundles
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/apps/:appid/technical"
{
"ok": true,
"pics": [],
"branches": [],
"builds": [
{
"buildid": 1234567
}
],
"depots": [],
"packages": [],
"bundles": [],
"changenumbers": []
}
POST
apps/{appid}/update
read
Refresh one app now: Steam data, then YouTube, then Twitch (30 per day per account)
curl -X POST -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/apps/:appid/update"
{
"ok": true,
"request": {
"id": 42,
"status": "pending"
}
}
GET
requests/{id}
read
Progress of an update request
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/requests/:id"
{
"ok": true,
"status": "done",
"finished": true,
"steps": {
"steam": true,
"youtube": true,
"twitch": true
}
}
Creators
5 endpoints
GET
youtubers
read
Browse YouTube creators who covered Steam games
| Parameter | In | Type | Description |
|---|---|---|---|
q | query | string | |
game | query | integer | appid they covered |
tag | query | integer | genre of covered games |
country | query | string | ISO code |
subs_min | query | integer | |
subs_max | query | integer | |
views_min | query | integer | average views |
active_days | query | integer | uploaded within N days |
games_min | query | integer | |
reachable | query | 1 | only creators we can deliver a message to |
has_twitch | query | 1 | |
sort | query | string | subs, views, games, videos, last, upload, name |
page | query | integer | Page number, from 1 |
per | query | integer | Items per page, 1-100 (default 30) |
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/youtubers"
{
"ok": true,
"items": [
{
"identity": "yt:UC…",
"title": "Creator",
"subscribers": 120000,
"games": 14,
"reachable": true
}
],
"total": 66135
}
GET
youtubers/{id}
read
One YouTube creator: stats, games covered, videos, rating
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/youtubers/:id"
{
"ok": true,
"creator": {
"channel_id": "UC…",
"title": "Creator",
"subscribers": 120000
},
"games": []
}
GET
streamers
read
Browse Twitch streamers who streamed Steam games
| Parameter | In | Type | Description |
|---|---|---|---|
q | query | string | |
game | query | integer | |
language | query | string | |
followers_min | query | integer | |
viewers_min | query | integer | average viewers |
hours_min | query | integer | hours streamed, 30 days |
live_days | query | integer | live within N days |
games_min | query | integer | |
type | query | string | partner / affiliate |
reachable | query | 1 | |
has_youtube | query | 1 | |
sort | query | string | followers, avg, peak, hours, games, live, name |
page | query | integer | Page number, from 1 |
per | query | integer | Items per page, 1-100 (default 30) |
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/streamers"
{
"ok": true,
"items": [
{
"identity": "tw:123",
"display_name": "Streamer",
"followers": 5000,
"reachable": true
}
],
"total": 274308
}
GET
streamers/{id}
read
One Twitch streamer: stats, games streamed, VODs, clips
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/streamers/:id"
{
"ok": true,
"streamer": {
"user_id": "123",
"display_name": "Streamer"
}
}
GET
developers
read
Steam games whose developer can be messaged
| Parameter | In | Type | Description |
|---|---|---|---|
q | query | string | game, developer or publisher |
tag | query | integer | |
year | query | integer | |
reviews_max | query | integer | default 999 |
reachable | query | 0/1 | default 1 |
source | query | string | steam_support, website, contact_page, presskit, mailto, youtube |
sort | query | string | reviews, release, name, developer, yt, tw, price |
page | query | integer | Page number, from 1 |
per | query | integer | Items per page, 1-100 (default 30) |
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/developers"
{
"ok": true,
"items": [
{
"identity": "dev:1742910",
"app": {
"appid": 1239080,
"name": "Door Kickers 2: Task Force North",
"type": "game",
"img": "https://…/capsule_231x87.jpg",
"price": "$24.99",
"price_cents": 2499,
"discount_pct": 0,
"reviews": 12500,
"review_pct": 96,
"players_now": 451,
"yt_score": 100,
"tw_score": 42.5
},
"developer": "Studio",
"reachable": true
}
]
}
Messaging
14 endpoints
POST
contacts/search
messages
Find recipients in one call: identities plus display data, ready for POST messages
| Parameter | In | Type | Description |
|---|---|---|---|
kind | body | string | youtubers, streamers or developers |
filters | body | object | the list filters of that kind (see GET youtubers / streamers / developers) |
limit | body | integer | 1-200, default 50 |
page | body | integer |
curl -X POST -H "X-API-Key: sr_live_YOUR_KEY" -H "Content-Type: application/json" -d '{"kind":"\u2026","filters":{},"limit":1,"page":1}' "https://steamradar.net/web/api/v1/contacts/search"
{
"ok": true,
"items": [
{
"identity": "yt:UCxxxxxxxxxxxxxxxxxxxxxx",
"platform": "yt",
"name": "Creator name",
"sub": "1.2M subscribers",
"avatar": "https://…",
"reachable": true,
"state": "send",
"claimed": false
}
],
"identities": [
"yt:UC…"
],
"total": 1745
}
GET
credits
messages
Your wallet: credits, free messages left today, caps, packages
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/credits"
{
"ok": true,
"credits": 120,
"free_left_today": 5,
"free_per_day": 5,
"sent_today": 0,
"max_per_send": 1000,
"max_per_day": 5000,
"packages": [
{
"id": 100,
"messages": 100,
"price_cents": 1000
}
]
}
GET
messages/quote
messages
What a send would cost and who would get it
| Parameter | In | Type | Description |
|---|---|---|---|
to | query | string | comma-separated identities (yt:, tw:, dev:, or a member as u:<id> / user:<id>) |
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/messages/quote"
{
"ok": true,
"recipients": [
{
"identity": "yt:UCxxxxxxxxxxxxxxxxxxxxxx",
"platform": "yt",
"name": "Creator name",
"sub": "1.2M subscribers",
"avatar": "https://…",
"reachable": true,
"state": "send",
"claimed": false,
"status": "send"
}
],
"send": 1,
"free_left": 5,
"credits_needed": 0,
"credits": 120,
"cost_ok": true
}
POST
messages
messages
Send one message to up to 1,000 recipients. 5 free per UTC day, then 1 credit each; unreachable, duplicate (24 h) and blocked recipients are skipped and never charged; all-or-nothing
| Parameter | In | Type | Description |
|---|---|---|---|
to | body | array | identities (yt:, tw:, dev:, u:<id> / user:<id> for a member) |
subject | body | string | ≤ 150 |
body | body | string | ≤ 5,000 plain text |
curl -X POST -H "X-API-Key: sr_live_YOUR_KEY" -H "Content-Type: application/json" -d '{"to":[],"subject":"\u2026","body":"\u2026"}' "https://steamradar.net/web/api/v1/messages"
{
"ok": true,
"message_id": 77,
"sent": 3,
"free_used": 3,
"credits_used": 0,
"delivered": 1,
"invited": 2,
"credits_left": 120
}
GET
messages/inbox
messages
Messages you received
| Parameter | In | Type | Description |
|---|---|---|---|
page | query | integer | Page number, from 1 |
per | query | integer | Items per page, 1-100 (default 30) |
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/messages/inbox"
{
"ok": true,
"items": [],
"unread": 0
}
GET
messages/sent
messages
Messages you sent with per-recipient status counts
| Parameter | In | Type | Description |
|---|---|---|---|
page | query | integer | Page number, from 1 |
per | query | integer | Items per page, 1-100 (default 30) |
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/messages/sent"
{
"ok": true,
"items": []
}
GET
messages/{id}
messages
A conversation (or your sent message with its recipients)
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/messages/:id"
{
"ok": true,
"thread_id": 1,
"messages": []
}
POST
messages/{id}/reply
messages
Reply in a conversation (free)
| Parameter | In | Type | Description |
|---|---|---|---|
body | body | string |
curl -X POST -H "X-API-Key: sr_live_YOUR_KEY" -H "Content-Type: application/json" -d '{"body":"\u2026"}' "https://steamradar.net/web/api/v1/messages/:id/reply"
{
"ok": true,
"message_id": 78
}
POST
messages/{id}/read
messages
Mark read
curl -X POST -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/messages/:id/read"
{
"ok": true
}
POST
messages/read-all
messages
Mark every received message read
curl -X POST -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/messages/read-all"
{
"ok": true
}
POST
messages/{id}/report
messages
Report a message you received
| Parameter | In | Type | Description |
|---|---|---|---|
reason | body | string | |
block | body | bool | also block the sender |
curl -X POST -H "X-API-Key: sr_live_YOUR_KEY" -H "Content-Type: application/json" -d '{"reason":"\u2026","block":true}' "https://steamradar.net/web/api/v1/messages/:id/report"
{
"ok": true,
"blocked": false
}
GET
credits/packages
messages
Credit packages
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/credits/packages"
{
"ok": true,
"items": [
{
"id": 100,
"messages": 100,
"price_cents": 1000,
"price": "$10.00"
}
]
}
POST
credits/checkout
messages
Start a purchase: returns the Stripe Checkout URL to open in a browser
| Parameter | In | Type | Description |
|---|---|---|---|
package_id | body | integer | 100, 500, 1000, 5000, 10000 or 25000 |
curl -X POST -H "X-API-Key: sr_live_YOUR_KEY" -H "Content-Type: application/json" -d '{"package_id":1}' "https://steamradar.net/web/api/v1/credits/checkout"
{
"ok": true,
"checkout_url": "https://checkout.stripe.com/…"
}
GET
credits/history
messages
Credit ledger
| Parameter | In | Type | Description |
|---|---|---|---|
page | query | integer | Page number, from 1 |
per | query | integer | Items per page, 1-100 (default 30) |
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/credits/history"
{
"ok": true,
"items": [],
"credits": 120
}
Dashboard
16 endpoints
GET
dashboard
dashboard
Dashboard summary: follows, my games with live coverage, alerts, claims, requests
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/dashboard"
{
"ok": true,
"credits": 120,
"follows": [],
"my_games": []
}
POST
apps/{appid}/follow
dashboard
Follow a game (alerts when creators cover it)
curl -X POST -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/apps/:appid/follow"
{
"ok": true
}
DELETE
apps/{appid}/follow
dashboard
Unfollow
curl -X DELETE -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/apps/:appid/follow"
{
"ok": true
}
POST
apps/{appid}/own
dashboard
Attach a game to your dashboard "My games" (private; others see it on your profile only once you verified it with a claim)
curl -X POST -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/apps/:appid/own"
{
"ok": true
}
DELETE
apps/{appid}/own
dashboard
Detach a game from "My games"
curl -X DELETE -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/apps/:appid/own"
{
"ok": true
}
GET
alerts
dashboard
Alerts (new creators / videos / streamers on followed games, claims)
| Parameter | In | Type | Description |
|---|---|---|---|
page | query | integer | Page number, from 1 |
per | query | integer | Items per page, 1-100 (default 30) |
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/alerts"
{
"ok": true,
"items": []
}
POST
alerts/read
dashboard
Mark alerts read
| Parameter | In | Type | Description |
|---|---|---|---|
ids | body | array | optional; all when omitted |
curl -X POST -H "X-API-Key: sr_live_YOUR_KEY" -H "Content-Type: application/json" -d '{"ids":[]}' "https://steamradar.net/web/api/v1/alerts/read"
{
"ok": true
}
GET
claims
dashboard
Your ownership claims and verified assets
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/claims"
{
"ok": true,
"items": []
}
POST
claims
dashboard
Start a claim: a code is e-mailed to the profile's contact address
| Parameter | In | Type | Description |
|---|---|---|---|
identity | body | string | yt:, tw: or dev: |
method | body | string | email_code (the only method) |
curl -X POST -H "X-API-Key: sr_live_YOUR_KEY" -H "Content-Type: application/json" -d '{"identity":"\u2026","method":"\u2026"}' "https://steamradar.net/web/api/v1/claims"
{
"ok": true,
"claim": {
"id": 9,
"status": "pending"
}
}
GET
claims/{id}
dashboard
Claim status
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/claims/:id"
{
"ok": true,
"claim": {
"id": 9,
"status": "pending"
}
}
POST
claims/{id}/cancel
dashboard
Cancel a claim
curl -X POST -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/claims/:id/cancel"
{
"ok": true
}
POST
claims/{id}/verify
dashboard
Enter the e-mailed verification code
| Parameter | In | Type | Description |
|---|---|---|---|
code | body | string | SR-XXXX-XXXX |
curl -X POST -H "X-API-Key: sr_live_YOUR_KEY" -H "Content-Type: application/json" -d '{"code":"\u2026"}' "https://steamradar.net/web/api/v1/claims/:id/verify"
{
"ok": true,
"verified": true
}
GET
affiliate
dashboard
Referral link, referred users, earnings, payouts
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/affiliate"
{
"ok": true,
"ref_code": "abc12345",
"balance_cents": 0,
"earned_cents": 0,
"min_payout_cents": 2000,
"payout_methods": [
{
"id": "USDT-TRC20",
"label": "USDT · Tron (TRC-20)"
}
],
"payouts": []
}
POST
affiliate/convert
dashboard
Convert affiliate earnings to credits
curl -X POST -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/affiliate/convert"
{
"ok": true
}
POST
affiliate/payout
dashboard
Request a crypto withdrawal of the whole available balance (≥ $20; session token only, confirmed e-mail). method = a payout_methods id from GET affiliate (USDT-TRC20, USDT-ERC20, USDC-ERC20, USDC-SOL, BTC, ETH), details = the wallet address
| Parameter | In | Type | Description |
|---|---|---|---|
method | body | string | USDT-TRC20 |
details | body | string | wallet address |
curl -X POST -H "X-API-Key: sr_live_YOUR_KEY" -H "Content-Type: application/json" -d '{"method":"\u2026","details":"\u2026"}' "https://steamradar.net/web/api/v1/affiliate/payout"
{
"ok": true,
"amount_cents": 2000,
"payout_id": 1
}
GET
purchases
dashboard
Payments and ledger
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/purchases"
{
"ok": true,
"payments": [],
"ledger": []
}
Authentication
8 endpoints
POST
auth/register
public
Create an account; returns a session token
| Parameter | In | Type | Description |
|---|---|---|---|
email | body | string | |
password | body | string | min 8 characters |
name | body | string | optional |
ref | body | string | referral code, optional |
curl -X POST -H "X-API-Key: sr_live_YOUR_KEY" -H "Content-Type: application/json" -d '{"email":"\u2026","password":"\u2026","name":"\u2026","ref":"\u2026"}' "https://steamradar.net/web/api/v1/auth/register"
{
"ok": true,
"token": "eyJ…",
"user": {
"id": 1,
"name": "Me",
"msg_credits": 0
}
}
POST
auth/login
public
Log in; returns a session token (the mobile apps use this; scripts use API keys instead)
| Parameter | In | Type | Description |
|---|---|---|---|
email | body | string | |
password | body | string |
curl -X POST -H "X-API-Key: sr_live_YOUR_KEY" -H "Content-Type: application/json" -d '{"email":"\u2026","password":"\u2026"}' "https://steamradar.net/web/api/v1/auth/login"
{
"ok": true,
"token": "eyJ…",
"user": {
"id": 1
}
}
POST
auth/forgot
public
E-mail a password-reset link (always 200; 3 per address per hour)
| Parameter | In | Type | Description |
|---|---|---|---|
email | body | string |
curl -X POST -H "X-API-Key: sr_live_YOUR_KEY" -H "Content-Type: application/json" -d '{"email":"\u2026"}' "https://steamradar.net/web/api/v1/auth/forgot"
{
"ok": true
}
POST
auth/reset
public
Set a new password with the e-mailed token (single-use, 1 hour); app sessions are logged out
| Parameter | In | Type | Description |
|---|---|---|---|
token | body | string | |
password | body | string | min 8 characters |
curl -X POST -H "X-API-Key: sr_live_YOUR_KEY" -H "Content-Type: application/json" -d '{"token":"\u2026","password":"\u2026"}' "https://steamradar.net/web/api/v1/auth/reset"
{
"ok": true,
"token": "eyJ…",
"user": {
"id": 1
}
}
POST
auth/verify
public
Confirm the e-mail address with the e-mailed token
| Parameter | In | Type | Description |
|---|---|---|---|
token | body | string |
curl -X POST -H "X-API-Key: sr_live_YOUR_KEY" -H "Content-Type: application/json" -d '{"token":"\u2026"}' "https://steamradar.net/web/api/v1/auth/verify"
{
"ok": true,
"user": {
"id": 1,
"email_verified": true
}
}
POST
auth/resend-verification
dashboard
Send the confirmation e-mail again (5 per day)
curl -X POST -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/auth/resend-verification"
{
"ok": true,
"sent": true
}
POST
auth/logout
dashboard
End this session token (session token only: revoke a key with DELETE keys/{id}); also forgets this device's push token
| Parameter | In | Type | Description |
|---|---|---|---|
expo_token | body | string | optional: the push token to forget |
curl -X POST -H "X-API-Key: sr_live_YOUR_KEY" -H "Content-Type: application/json" -d '{"expo_token":"\u2026"}' "https://steamradar.net/web/api/v1/auth/logout"
{
"ok": true
}
GET
health
public
Service check, with catalogue sizes for a welcome screen (kept an hour)
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/health"
{
"ok": true,
"status": "up",
"time": "2026-11-10T22:00:00Z",
"db": true,
"kpis": {
"apps": 322031,
"creators": 80679,
"streamers": 410721
}
}
Docs
1 endpoints
GET
docs
public
This route catalogue as JSON
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/docs"
{
"ok": true,
"routes": [
{
"method": "GET",
"path": "health",
"scope": "public"
}
]
}
Openapi
1 endpoints
GET
openapi
public
OpenAPI 3.0 document of this API
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/openapi"
{
"ok": true
}
Library
2 endpoints
GET
library
dashboard
Imported Steam library or wishlist with our data per game
| Parameter | In | Type | Description |
|---|---|---|---|
kind | query | string | owned (default) or wishlist |
curl -H "X-API-Key: sr_live_YOUR_KEY" "https://steamradar.net/web/api/v1/library"
{
"ok": true,
"items": []
}
POST
library/import
dashboard
Import the linked Steam account's library or wishlist (public profile)
| Parameter | In | Type | Description |
|---|---|---|---|
kind | body | string | owned or wishlist |
curl -X POST -H "X-API-Key: sr_live_YOUR_KEY" -H "Content-Type: application/json" -d '{"kind":"\u2026"}' "https://steamradar.net/web/api/v1/library/import"
{
"ok": true,
"imported": 120
}
Webhooks
Coming soon: notifications when a creator covers your game or answers your message, pushed to a URL of your choice. Poll GET alerts and GET messages/inbox meanwhile.