Quickstart
Community scores for games, movies, TV series and books — 0 to 100, in six categories per item — over a read-only JSON API.
1. Create an API key
Open your API dashboard and create a key. It starts with hx_live_ and is shown only once — store it in an environment variable, never in client-side code:
export HEXASCORE_API_KEY="hx_live_..."The Free plan includes 100 requests in total — enough to build and test an integration.
2. Make your first request
The base URL is https://api.hexascore.app/v1. Every endpoint is a GET. Here are the five best-rated games:
curl "https://api.hexascore.app/v1/games?sort=-score&limit=5" \
-H "Authorization: Bearer $HEXASCORE_API_KEY"const res = await fetch("https://api.hexascore.app/v1/games?sort=-score&limit=5", {
headers: { Authorization: `Bearer ${process.env.HEXASCORE_API_KEY}` },
});
if (!res.ok) {
const problem = await res.json(); // RFC 9457: { code, detail, request_id, ... }
throw new Error(`${problem.code}: ${problem.detail}`);
}
const { data, next_cursor } = await res.json();
for (const game of data) console.log(game.score, game.title);import os
import requests
res = requests.get(
"https://api.hexascore.app/v1/games",
params={"sort": "-score", "limit": 5},
headers={"Authorization": f"Bearer {os.environ['HEXASCORE_API_KEY']}"},
timeout=10,
)
if not res.ok:
problem = res.json() # RFC 9457: code, detail, request_id
raise RuntimeError(f"{problem['code']}: {problem['detail']}")
for game in res.json()["data"]:
print(game["score"], game["title"])3. Read the response
Lists return data plus a next_cursor for the next page. Field names are snake_case and dates are ISO 8601. score and categories are null until an item has 5 ratings.
{
"data": [
{
"id": "0190a1b2-0000-7000-8000-000000000001",
"type": "game",
"slug": "the-legend-of-zelda",
"title": "The Legend of Zelda",
"release_date": "1986-02-21",
"year": 1986,
"score": 90,
"categories": { "gameplay": 92, "fun": 91, "sound": 88, "technical": 85, "visual": 89, "storytelling": 95 },
"rating_count": 1234,
"genres": ["Adventure"],
"platforms": ["NES"],
"cover_url": null,
"url": "https://hexascore.app/games/the-legend-of-zelda"
}
],
"next_cursor": "eyJzIjoiLXNjb3JlIiwidiI6IjkwIi..."
}Next steps
- Fetch one item with
GET /games/{id}for external ids, trailers and the licensed synopsis. - Map ids you already have with
GET /lookup?source=imdb&id=tt0111161(alsosteam,igdb,tmdb,isbn13,openlibrary,wikidata). - Handle errors and rate limits, then browse the API reference.
SDKs
Typed clients are generated from the OpenAPI document: TypeScript (@hexascore/sdk) and Python (hexascore). They are not on npm/PyPI yet — build them from sdks/ in the repository until the first release.
import { createHexascoreClient, listGames } from "@hexascore/sdk";
const client = createHexascoreClient({ apiKey: process.env.HEXASCORE_API_KEY });
const { data, error } = await listGames({ client, query: { sort: "-score", limit: 5 } });
if (error) throw new Error(`${error.code}: ${error.detail}`);