The core compliance data: one record per U.S. jurisdiction (50 states + DC).
GET /api/v1/compliance/states
Returns a summary record for every jurisdiction. The summary deliberately omits the long-form prose fields (special_notes, withdrawal_process, etc.) to keep the payload small for list views.
curl -H "Authorization: Bearer $TOKEN" https://homeschoolfox.com/api/v1/compliance/states
Response (truncated):
{
"data": [
{
"abbreviation": "AK",
"name": "Alaska",
"compulsory_age_range": "7-16",
"notice": { "required": false, "type": "none" },
"requirements": { "hours_per_year": null, ... }
},
...
],
"meta": { "api_version": "v1", "count": 51 }
}
GET /api/v1/compliance/states/:abbreviation
The full record for one jurisdiction. The :abbreviation is the standard two-letter postal code, case-insensitive.
curl -H "Authorization: Bearer $TOKEN" https://homeschoolfox.com/api/v1/compliance/states/MO
Response (excerpted):
{
"data": {
"abbreviation": "MO",
"name": "Missouri",
"compulsory_age_range": "7-17",
"notice": { "required": false, "type": "none" },
"requirements": {
"hours_per_year": 1000,
"core_hours_per_year": 600,
"secondary_hours_per_year": null,
"days_per_year": null,
"hours_per_day": null,
"subjects": ["reading", "math", "social studies", "language arts", "science"]
},
"assessment": { "type": "none", "frequency": "none", "description": "..." },
"portfolio": { "required": true, "description": "..." },
"reporting": { "frequency": "none" },
"esa": { "program_name": "MOScholars (...)", "amount_cents": 637500, ... },
"tax_credit_summary": null,
"umbrella_summary": null,
"filing_deadlines": {},
"required_documents": [],
"special_notes": "...",
"withdrawal_process": null,
"source_urls": [
{ "name": "HSLDA", "url": "https://hslda.org/legal/missouri" },
{ "name": "Families for Home Education (FHE-MO)", "url": "https://fhe-mo.org/" }
],
"editorial": {
"schema_version": "1",
"last_verified_at": "2026-05-12",
"needs_review": false,
"verification_notes": null
}
},
"meta": {
"api_version": "v1",
"version": 1,
"released_at": "2026-05-12",
"git_sha": "ec3bc5a2"
}
}
Optional query params
?as_of=YYYY-MM-DD— return the snapshot active on that date?version=N— pin to a specific monotonic version number
You can only pass one at a time. Both 404 if the requested date predates the first snapshot or the version doesn't exist.
GET /api/v1/compliance/states/:abbreviation/versions
Returns the version history for one state, newest-first. Each version row carries the version number, release date, short SHA, commit author, commit message (change_summary), and a diff block listing top-level keys added / removed / changed vs the previous version.
curl -H "Authorization: Bearer $TOKEN" https://homeschoolfox.com/api/v1/compliance/states/MO/versions
Optional ?limit=N (default 50, max 200).
GET /api/v1/compliance/states/:abbreviation/versions/:version_number
Returns the historical payload at a specific version — byte-identical to what GET /states/MO?version=N returns. Useful for explicit pinning where you want the version number visible in the URL.