Public API (v1)
Read-only JSON endpoints for embedding ClayShoot data on external sites. No API key required. CORS is enabled for all origins.
Envelope
{
"data": {...},
"meta": { "generated_at": "2026-01-01T00:00:00Z", "version": "v1" }
}Pre-reveal shoots return results_revealed: false with empty leaderboards. Endpoints never return PII (email, phone, PIN hashes, tokens).
Endpoints
/api/public/v1/shootsList published shoots (100 most recent).
/api/public/v1/shoots/{shootId}Shoot summary.
/api/public/v1/shoots/{shootId}/leaderboardIndividual leaderboard, ordered by total hits.
/api/public/v1/shoots/{shootId}/teamsTeam leaderboard, ordered by total hits.
/api/public/v1/openapiOpenAPI 3.1 spec for machine-readable discovery.
/api/public/v1/_metricsIn-memory request counters, durations, and recent errors for lightweight monitoring.
Caching
Responses set Cache-Control: public, s-maxage=30, stale-while-revalidate=60. Poll no faster than every 10 seconds.
Example
curl https://clayshoot.app/api/public/v1/shootsLive demo
A reference implementation consuming these endpoints lives at /embed — shoot summary, individual leaderboard, and team leaderboard, all fetched client-side.
