Skip to main content

Endpoints

All benchmark endpoints accept these optional filters: sport_id, position_id, eligibility_year, comp_type.

GET /api/v1/benchmarks/summary

Returns 4 comparison metrics: Avg NIL per Athlete, Avg Agreement Value, % Athletes with Agreement, Total NIL Value. Each has yours, conference, and delta values. Available to all tiers.

GET /api/v1/benchmarks/grid

Premium only. Three-way comparison: school vs conference vs peer group. Returns school, conference, peer objects each with avg_total, avg_guaranteed, avg_performance, total_deals, total_value. Also returns percentile data (p25, p50, p75) and pre-computed deltas. Uses PostgreSQL percentile_cont() for real statistical percentiles.

GET /api/v1/benchmarks/positions

Per-position breakdown for a sport. Returns school/conference/peer averages, guaranteed/performance splits, and athlete counts per position. Sorted by school average descending.

GET /api/v1/benchmarks/filters

Returns all filter options: sports, conferences, positions grouped by sport, user’s locked conference, peer group conferences, reporting periods, and user tier.

How Aggregations Work

The _agg() helper runs a single SQL query with these filters applied:
Three scopes are computed:
  • School: university_id = current user's university
  • Conference: university_id IN (universities in same conference)
  • Peer Group: university_id IN (universities in peer group conferences)