In the Infinite Campus admin portal, navigate to Campus Community > OneRoster API; enable the API, create an integration record for your application, and obtain the OAuth 2.0 client ID and client secret.
Obtain a Bearer token by POSTing to the Campus instance's OAuth 2.0 token endpoint (documented in the integration setup screen) with grant_type=client_credentials and your client credentials as a Basic Authorization header.
Determine the supported OneRoster version from the integration setup page (Infinite Campus supports both 1.1 and 1.2); use the corresponding base path — /ims/oneroster/rostering/v1p2 for 1.2 or /ims/oneroster/v1p1 for 1.1.
Fetch roster data sequentially: GET /orgs, /schools, /courses, /classes, /users, /enrollments; apply limit and offset parameters to page through all records.
For the demographics endpoint (available in 1.2), verify that the integration's permission settings include demographics access; this is typically configured by the district administrator as an opt-in permission.
Store the sourcedId for each object as your stable identifier; use dateLastModified filtering for delta syncs if the district's Campus version supports it.
Known gotchas
Infinite Campus exposes the OneRoster API only when the district has licensed and enabled it; some districts have Campus but have not purchased or activated the OneRoster module, so 404 responses on the base path may indicate a licensing gap rather than a URL error.
Infinite Campus delivers data as of the current calendar context; if the district has not configured the correct active calendar/school year in Campus, roster data will reflect the wrong year.
The demographics endpoint containing birth_date and other sensitive fields requires explicit permission grant from the district admin; attempting to call it without that permission returns a 403, and the error message may not clearly identify the missing permission.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp