Work with this as data
Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/powerschool-schools-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
OpenAPI Specification
openapi: 3.2.0
info:
title: PowerSchool SIS REST Schools API
description: The PowerSchool SIS REST API provides programmatic access to student information system data including student demographics, enrollment records, grades, attendance, master scheduling, and district reporting.
version: 1.0.0
contact:
name: PowerSchool Developer Support
url: https://help.powerschool.com/
termsOfService: https://www.powerschool.com/legal/
servers:
- url: https://{district}.powerschool.com
description: District PowerSchool instance
variables:
district:
description: The subdomain of the school district's PowerSchool installation
default: demo
security:
- BearerAuth: []
tags:
- name: Schools
description: School information and management
paths:
/ws/v1/district/school:
get:
operationId: getSchools
summary: List all schools in district
description: Returns all schools in the current district, sorted by name. Supports pagination via pagesize and page query parameters.
tags:
- Schools
parameters:
- $ref: '#/components/parameters/PageSize'
- $ref: '#/components/parameters/Page'
- $ref: '#/components/parameters/Query'
- $ref: '#/components/parameters/Projection'
responses:
'200':
description: List of schools
content:
application/json:
schema:
$ref: '#/components/schemas/SchoolsResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/ws/v1/district/school/count:
get:
operationId: getSchoolsCount
summary: Count schools in district
description: Returns the total count of schools in the current district.
tags:
- Schools
responses:
'200':
description: Count of schools
content:
application/json:
schema:
$ref: '#/components/schemas/ResourceCount'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/ws/v1/school/{schoolDcid}:
get:
operationId: getSchool
summary: Get a specific school
description: Returns a single school record by its DCID.
tags:
- Schools
parameters:
- name: schoolDcid
in: path
required: true
schema:
type: integer
description: The school's DCID (not school number)
responses:
'200':
description: School record
content:
application/json:
schema:
$ref: '#/components/schemas/SchoolResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: School not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
components:
schemas:
Name:
type: object
description: A person's name parts
properties:
first_name:
type: string
description: Given name
middle_name:
type: string
description: Middle name
last_name:
type: string
description: Surname / family name
Error:
type: object
description: API error response
properties:
message:
type: string
description: Human-readable error description
error:
type: string
description: Error code or type
status:
type: integer
description: HTTP status code
Address:
type: object
description: A mailing or physical address
properties:
city:
type: string
description: City name
postal_code:
type: integer
description: ZIP or postal code
state_province:
type: string
description: State or province abbreviation
street:
type: string
description: Street address line
Addresses:
type: object
description: Collection of address types for a person or school
properties:
home:
$ref: '#/components/schemas/Address'
mailing:
$ref: '#/components/schemas/Address'
physical:
$ref: '#/components/schemas/Address'
SchoolPrincipal:
type: object
description: Principal or assistant principal contact info
properties:
email:
type: string
format: email
description: Principal's email address
name:
$ref: '#/components/schemas/Name'
School:
type: object
description: A school within a district
required:
- id
properties:
id:
type: integer
description: School DCID (district-level unique identifier)
school_number:
type: integer
description: School number (local identifier)
name:
type: string
description: Full name of the school
state_province_id:
type: string
description: State or province identifier
low_grade:
type: integer
description: Lowest grade level served (e.g., -2 for pre-K, 0 for K, 1-12)
high_grade:
type: integer
description: Highest grade level served
alternate_school_number:
type: integer
description: Alternate school number if applicable
addresses:
$ref: '#/components/schemas/Addresses'
phones:
$ref: '#/components/schemas/Phones'
principal:
$ref: '#/components/schemas/SchoolPrincipal'
assistant_principal:
$ref: '#/components/schemas/SchoolPrincipal'
PhoneNumber:
type: object
properties:
number:
type: string
description: Phone number string
ResourceCount:
type: object
description: Count of a resource collection
properties:
resource:
type: object
properties:
count:
type: integer
description: Total number of records in the resource collection
Phones:
type: object
description: Phone numbers for a person or school
properties:
fax:
$ref: '#/components/schemas/PhoneNumber'
home_phone:
$ref: '#/components/schemas/PhoneNumber'
main:
$ref: '#/components/schemas/PhoneNumber'
SchoolResponse:
type: object
description: Single school record response
properties:
school:
$ref: '#/components/schemas/School'
SchoolsResponse:
type: object
description: Paginated list of school records
properties:
schools:
type: object
properties:
school:
oneOf:
- $ref: '#/components/schemas/School'
- type: array
items:
$ref: '#/components/schemas/School'
description: Single school or array of schools
parameters:
Page:
name: page
in: query
required: false
schema:
type: integer
minimum: 1
default: 1
description: Page number for paginated results (1-indexed).
Query:
name: q
in: query
required: false
schema:
type: string
description: 'Filter expression using FIQL-like syntax. Example: id=ge=10000 to filter records with id >= 10000.'
example: id=ge=10000
PageSize:
name: pagesize
in: query
required: false
schema:
type: integer
minimum: 1
maximum: 1000
default: 100
description: Number of records to return per page.
Projection:
name: projection
in: query
required: false
schema:
type: string
description: Comma-separated list of fields to include in the response. Omit to return all fields.
example: id,name,school_number
securitySchemes:
BearerAuth:
type: http
scheme: bearer
description: Bearer token obtained from /oauth/access_token/ using client credentials. Tokens expire and must be refreshed.
BasicAuth:
type: http
scheme: basic
description: Basic auth with Base64-encoded client_id:client_secret for the token endpoint only.