{"files":{"SKILL.md":"---\nname: schooldigger-api-v1\ndescription: \"SchoolDigger API V1 API skill. Use when working with SchoolDigger API V1 for districts, rankings, schools. Covers 6 endpoints.\"\nversion: 1.0.0\ngenerator: lapsh\n---\n\n# SchoolDigger API V1\nAPI version: v1\n\n## Auth\nApiKey appKey in query\n\n## Base URL\nhttps://api.schooldigger.com\n\n## Setup\n1. Set your API key in the appropriate header\n2. GET /v1/districts -- returns a list of districts\n3. Explore available endpoints below\n\n## Endpoints\n6 endpoints across 3 groups. See references/api-spec.lap for full details.\n\n### Districts\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /v1/districts | Returns a list of districts |\n| GET | /v1/districts/{id} | Returns a detailed record for one district |\n\n### Rankings\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /v1/rankings/schools/{st} | Returns a SchoolDigger school ranking list |\n| GET | /v1/rankings/districts/{st} | Returns a SchoolDigger district ranking list |\n\n### Schools\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /v1/schools | Returns a list of schools |\n| GET | /v1/schools/{id} | Returns a detailed record for one school |\n\n## Common Questions\nMatch user requests to endpoints in references/api-spec.lap. Key patterns:\n- \"Search districts?\" -> GET /v1/districts\n- \"Get district details?\" -> GET /v1/districts/{id}\n- \"Get school details?\" -> GET /v1/rankings/schools/{st}\n- \"Search schools?\" -> GET /v1/schools\n- \"How to authenticate?\" -> See Auth section above\n\n## Response Tips\n- Check response schemas in references/api-spec.lap for field details\n- Paginated endpoints accept limit/offset or cursor parameters\n\n## References\n- Full spec: See references/api-spec.lap for complete endpoint details, parameter tables, and response schemas\n\n> Generated from the official API spec by [LAP](https://lap.sh)\n","references/api-spec.lap":"@lap v0.3\n# Machine-readable API spec. Each @endpoint block is one API call.\n@api SchoolDigger API V1\n@base https://api.schooldigger.com\n@version v1\n@auth ApiKey appKey in query\n@common_fields {appID: any # Your API app id, appKey: any # Your API app key}\n@endpoints 6\n@toc districts(2), rankings(2), schools(2)\n\n@group districts\n@endpoint GET /v1/districts\n@desc Returns a list of districts\n@required {st: any # Two character state (e.g. 'CA') - required}\n@optional {q: any # Search term - note: will match district name or city (optional), city: any # Search for districts in this city (optional), zip: any # Search for districts in this 5-digit zip code (optional), nearLatitude: any # Search for districts within (distanceMiles) of (nearLatitude)/(nearLongitude) (e.g. 44.982560) (optional) (Pro, Enterprise API levels only. Enterprise API level will flag districts that include lat/long in its attendance boundary.), nearLongitude: any # Search for districts within (distanceMiles) of (nearLatitude)/(nearLongitude) (e.g. -124.289185) (optional) (Pro, Enterprise API levels only. Enterprise API level will flag districts that include lat/long in its attendance boundary.), boundaryAddress: any # Full U.S. address: flag returned districts that include this address in its attendance boundary. Example: '123 Main St. AnyTown CA 90001' (optional) (Enterprise API level only), distanceMiles: any # Search for districts within (distanceMiles) of (nearLatitude)/(nearLongitude) (Default 50 miles) (optional) (Pro, Enterprise API levels only), isInBoundaryOnly: any # Return only the districts that include given location (nearLatitude/nearLongitude) or (boundaryAddress) in its attendance boundary (Enterprise API level only), boxLatitudeNW: any # Search for districts within a 'box' defined by (BoxLatitudeNW/BoxLongitudeNW) to (BoxLongitudeSE/BoxLatitudeSE) (optional), boxLongitudeNW: any # Search for districts within a 'box' defined by (BoxLatitudeNW/BoxLongitudeNW) to (BoxLongitudeSE/BoxLatitudeSE) (optional), boxLatitudeSE: any # Search for districts within a 'box' defined by (BoxLatitudeNW/BoxLongitudeNW) to (BoxLongitudeSE/BoxLatitudeSE) (optional), boxLongitudeSE: any # Search for districts within a 'box' defined by (BoxLatitudeNW/BoxLongitudeNW) to (BoxLongitudeSE/BoxLatitudeSE) (optional), page: any # Page number to retrieve (optional, default: 1), perPage: any # Number of districts to retrieve on a page (50 max) (optional, default: 10), sortBy: any # Sort list. Values are: districtname, distance, rank. For descending order, precede with '-' i.e. -districtname (optional, default: districtname), includeUnrankedDistrictsInRankSort: any # If sortBy is 'rank', this boolean determines if districts with no rank are included in the result (optional, default: false)}\n@returns(200) OK\n\n@endpoint GET /v1/districts/{id}\n@desc Returns a detailed record for one district\n@required {id: any # The 7 digit District ID (e.g. 0642150)}\n@returns(200) OK\n\n@endgroup\n\n@group rankings\n@endpoint GET /v1/rankings/schools/{st}\n@desc Returns a SchoolDigger school ranking list\n@required {st: any # Two character state (e.g. 'CA')}\n@optional {year: any # The ranking year (leave blank for most recent year), level: any # Level of ranking: 'Elementary', 'Middle', or 'High', page: any # Page number to retrieve (optional, default: 1), perPage: any # Number of schools to retrieve on a page (50 max) (optional, default: 10)}\n@returns(200) OK\n\n@endpoint GET /v1/rankings/districts/{st}\n@desc Returns a SchoolDigger district ranking list\n@required {st: any # Two character state (e.g. 'CA')}\n@optional {year: any # The ranking year (leave blank for most recent year), page: any # Page number to retrieve (optional, default: 1), perPage: any # Number of districts to retrieve on a page (50 max) (optional, default: 10)}\n@returns(200) OK\n\n@endgroup\n\n@group schools\n@endpoint GET /v1/schools\n@desc Returns a list of schools\n@required {st: any # Two character state (e.g. 'CA') - required}\n@optional {q: any # Search term - note: will match school name or city (optional), qSearchSchoolNameOnly: any # For parameter 'q', only search school names instead of school and city (optional), districtID: any # Search for schools within this district (7 digit district id) (optional), level: any # Search for schools at this level. Valid values: 'Elementary', 'Middle', 'High', 'Alt', 'Public', 'Private' (optional). 'Public' returns all Elementary, Middle, High and Alternative schools, city: any # Search for schools in this city (optional), zip: any # Search for schools in this 5-digit zip code (optional), isMagnet: any # True = return only magnet schools, False = return only non-magnet schools (optional) (Pro, Enterprise API levels only), isCharter: any # True = return only charter schools, False = return only non-charter schools (optional) (Pro, Enterprise API levels only), isVirtual: any # True = return only virtual schools, False = return only non-virtual schools (optional) (Pro, Enterprise API levels only), isTitleI: any # True = return only Title I schools, False = return only non-Title I schools (optional) (Pro, Enterprise API levels only), isTitleISchoolwide: any # True = return only Title I school-wide schools, False = return only non-Title I school-wide schools (optional) (Pro, Enterprise API levels only), nearLatitude: any # Search for schools within (distanceMiles) of (nearLatitude)/(nearLongitude) (e.g. 44.982560) (optional) (Pro, Enterprise API levels only. Enterprise API level will flag schools that include lat/long in its attendance boundary.), nearLongitude: any # Search for schools within (distanceMiles) of (nearLatitude)/(nearLongitude) (e.g. -124.289185) (optional) (Pro, Enterprise API levels only. Enterprise API level will flag schools that include lat/long in its attendance boundary.), boundaryAddress: any # Full U.S. address: flag returned schools that include this address in its attendance boundary. Example: '123 Main St. AnyTown CA 90001' (optional) (Enterprise API level only) IMPORTANT NOTE: If you have the lat/long of the address, use nearLatitude and nearLongitude instead for much faster response times, distanceMiles: any # Search for schools within (distanceMiles) of (nearLatitude)/(nearLongitude) (Default 5 miles) (optional) (Pro, Enterprise API levels only), isInBoundaryOnly: any # Return only the schools that include given location (nearLatitude/nearLongitude) or (boundaryAddress) in its attendance boundary (Enterprise API level only), boxLatitudeNW: any # Search for schools within a 'box' defined by (boxLatitudeNW/boxLongitudeNW) to (boxLongitudeSE/boxLatitudeSE) (optional), boxLongitudeNW: any # Search for schools within a 'box' defined by (boxLatitudeNW/boxLongitudeNW) to (boxLongitudeSE/boxLatitudeSE) (optional), boxLatitudeSE: any # Search for schools within a 'box' defined by (boxLatitudeNW/boxLongitudeNW) to (boxLongitudeSE/boxLatitudeSE) (optional), boxLongitudeSE: any # Search for schools within a 'box' defined by (boxLatitudeNW/boxLongitudeNW) to (boxLongitudeSE/boxLatitudeSE) (optional), page: any # Page number to retrieve (optional, default: 1), perPage: any # Number of schools to retrieve on a page (50 max) (optional, default: 10), sortBy: any # Sort list. Values are: schoolname, distance, rank. For descending order, precede with '-' i.e. -schoolname (optional, default: schoolname), includeUnrankedSchoolsInRankSort: any # If sortBy is 'rank', this boolean determines if schools with no rank are included in the result (optional, default: false)}\n@returns(200) OK\n\n@endpoint GET /v1/schools/{id}\n@desc Returns a detailed record for one school\n@required {id: any # The 12 digit School ID (e.g. 064215006903)}\n@returns(200) OK\n\n@endgroup\n\n@end\n"}}