Read-only FRC scouting metrics for the 2026 season: FSM ratings, component breakdowns, defense scores and model-backed match predictions. Base URL: https://fsm846.vercel.app/api/v1. Need a key? Request one here.
Send your key in the X-API-Key header on every request. Only /api/v1 (the index) and /api/v1/openapi.json work without one.
curl -H "X-API-Key: YOUR_KEY" "https://fsm846.vercel.app/api/v1/rankings?page_size=5"It's a server-to-server key: don't put it in browser JavaScript.
60 requests a minute per key. Every response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset. Going over returns 429 with a Retry-After header.
{
"data": ...,
"meta": { "season": 2026, "generated_at": "2026-08-07T19:34:13.582Z", "source": "fsm/v1" },
"pagination": { "page": 1, "page_size": 100, "total_items": 3758, "total_pages": 38 }
}frc846 plus a numeric team_number; 846 and frc846 both work as input.casj or 2026casj.{ "error": { "code": "unauthorized", "message": "Missing or invalid X-API-Key header.", "status": 401 } }| Code | Status |
|---|---|
invalid_request | 400 |
unauthorized | 401 |
not_found | 404 |
rate_limited | 429 |
internal_error | 500 |
upstream_unavailable | 502 |
service_unavailable | 503 |
2026 FSM leaderboard.
| Parameter | In | Type | Notes |
|---|---|---|---|
page | query | integer | Default 1. |
page_size | query | integer | Default 100. Max 500. |
country | query | string | |
state_prov | query | string | |
min_fsm | query | number |
curl -H "X-API-Key: YOUR_KEY" "https://fsm846.vercel.app/api/v1/rankings"One team's 2026 season profile.
| Parameter | In | Type | Notes |
|---|---|---|---|
team required | path | string | Team number or TBA key (846 or frc846). |
curl -H "X-API-Key: YOUR_KEY" "https://fsm846.vercel.app/api/v1/teams/846"All 2026 events with strength metrics.
| Parameter | In | Type | Notes |
|---|---|---|---|
page | query | integer | Default 1. |
page_size | query | integer | Default 100. Max 500. |
week | query | integer | |
district | query | string | |
country | query | string | |
state_prov | query | string |
curl -H "X-API-Key: YOUR_KEY" "https://fsm846.vercel.app/api/v1/events"One 2026 event.
| Parameter | In | Type | Notes |
|---|---|---|---|
event required | path | string | Event code, with or without the 2026 prefix (casj or 2026casj). |
curl -H "X-API-Key: YOUR_KEY" "https://fsm846.vercel.app/api/v1/events/casj"Scouting table for an event.
Every attending team with FSM, components, penalty and defense_score.
| Parameter | In | Type | Notes |
|---|---|---|---|
event required | path | string | Event code, with or without the 2026 prefix (casj or 2026casj). |
sort | query | rank | fsm | defense_score | team_number | Default rank. |
curl -H "X-API-Key: YOUR_KEY" "https://fsm846.vercel.app/api/v1/events/casj/teams"Match predictions for an event.
| Parameter | In | Type | Notes |
|---|---|---|---|
event required | path | string | Event code, with or without the 2026 prefix (casj or 2026casj). |
played | query | boolean |
curl -H "X-API-Key: YOUR_KEY" "https://fsm846.vercel.app/api/v1/events/casj/matches"