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-courses-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 Courses 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: Courses
description: Course catalog information
paths:
/ws/v1/school/{schoolDcid}/course:
get:
operationId: getCoursesForSchool
summary: List courses for a school
description: Returns all courses available at the given school for the current school year. The schoolDcid is the school's DCID, not its ID or school number.
tags:
- Courses
parameters:
- name: schoolDcid
in: path
required: true
schema:
type: integer
description: The school's DCID (not school number or ID)
- $ref: '#/components/parameters/PageSize'
- $ref: '#/components/parameters/Page'
- $ref: '#/components/parameters/Query'
responses:
'200':
description: List of courses
content:
application/json:
schema:
$ref: '#/components/schemas/CoursesResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/ws/v1/school/{schoolDcid}/course/count:
get:
operationId: getCoursesCountForSchool
summary: Count courses for a school
description: Returns the count of courses for the given school.
tags:
- Courses
parameters:
- name: schoolDcid
in: path
required: true
schema:
type: integer
description: The school's DCID
responses:
'200':
description: Count of courses
content:
application/json:
schema:
$ref: '#/components/schemas/ResourceCount'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
components:
schemas:
Course:
type: object
description: A course in the district course catalog
properties:
id:
type: integer
description: Course DCID
course_number:
type: string
description: Course code / number (e.g., "MATH101")
course_name:
type: string
description: Full name of the course
CoursesResponse:
type: object
description: Paginated list of course records
properties:
courses:
type: object
properties:
course:
oneOf:
- $ref: '#/components/schemas/Course'
- type: array
items:
$ref: '#/components/schemas/Course'
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
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
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.
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.