Build with public data

Clout Caster API

These JSON routes are read-only. They expose public game data, allow cross-origin GET requests, and are limited to 60 requests per minute per client.

Shared rules

  • Method: GET. OPTIONS is available for browser preflight.
  • CORS: Access-Control-Allow-Origin: *
  • Rate headers: X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset.
  • Errors use JSON with an error message and an HTTP status.

App status

GET
/api/public/status

App identity, creator credit, network, currency, and available public routes.

Parameters: None

Example response

{
  "app": "Clout Caster",
  "creator": { "username": "lucifercaretaker", "fid": 1450388 },
  "network": "Base",
  "storeCurrency": "CLOUT"
}

Leaderboard

GET
/api/public/leaderboard?metric=elo&limit=20

Public creator standings. The default metric is ELO and the default limit is 20.

Parameters: metric: elo | rep | streak · limit: 1–50

Example response

{
  "metric": "elo",
  "entries": [{ "rank": 1, "fid": 1450388, "cloutElo": 1210 }]
}

Creator

GET
/api/public/creators/1450388

Public creator identity, archetype, score tiers, streak, and latest spin summary.

Parameters: fid: positive Farcaster ID in the path

Example response

{
  "creator": {
    "fid": 1450388,
    "username": "lucifercaretaker",
    "cloutElo": 1000,
    "latestSpin": null
  }
}

Battles

GET
/api/public/battles?limit=20

Recent public pending, active, and completed battles without wallet or admin data.

Parameters: limit: 1–50

Example response

{
  "battles": [{
    "id": 42,
    "status": "active",
    "category": "Growth Duel",
    "challenger": { "fid": 1, "score": 50, "votes": 2 }
  }]
}