PickMyClass developer & agent resources
The machine-readable surfaces of PickMyClass, the free ASU class seat tracker — what each one returns, and where the boundaries are.
Every page on this site is also available as Markdown: send Accept: text/markdown and the same server-rendered page comes back as text/markdown; charset=utf-8. The same Markdown is also served at the page's .md URL (/index.md for the homepage, /faq.md for the FAQ), and HTML responses advertise it in the Link header. The files below are the curated surfaces, and each one is stable enough to fetch directly.
Machine-readable surfaces
| Surface | What it returns |
|---|---|
| llms.txt | A short Markdown index for agents: what PickMyClass is, the product facts, key pages, the situations it matches, and this resource list. |
| llms-full.txt | The full Markdown corpus of the public guides and pages for agents that want everything in one fetch instead of crawling page by page. |
| sitemap.xml | Every indexable URL with a last-modified date, the canonical list of pages a crawler should visit. |
| pricing.md | Machine-readable pricing: PickMyClass is free, with no paid tier, no ads, and no upsells to compare against. |
| blog/feed.xml | An RSS 2.0 feed of the blog, with titles, descriptions, links, and publication dates for ASU registration guides. |
| api/monitoring/health | A public JSON liveness check. An unauthenticated request answers 200 with { "status": "ok" }; the detailed dependency report behind it is reserved for the operator. |
| openapi.json | An OpenAPI 3.1 description of the public API: the health endpoint, its response schema, and the JSON error shape every API routing failure returns. |
| .well-known/security.txt | The RFC 9116 security contact for reporting a vulnerability in the service. |
API versioning and deprecation
The public API is versioned in the URL path: /api/v1/monitoring/health is the current version, and /api/monitoring/health answers identically as a stable unversioned alias. A breaking change ships as a new path version, the previous version keeps answering, and an endpoint on its way out reports Deprecation and Sunset headers at least 90 days before it stops.
Watch management needs an account
PickMyClass has no public API for reading or changing a student's watches. Adding a class section, removing one, and reading watch state all sit behind a signed-in account at /sign-up: a person searches for a class by its 5-digit section number, adds it to their watchlist, and receives an email when a seat opens or a “Staff” section gets a named instructor. An agent cannot create or manage watches on someone else's behalf, and there is no key, token, or endpoint that would let it try. Alerts are email-only: no SMS, no push.
The sign-up page, the FAQ, and the guides are the supported routes for a human working through the flow, and the machine-readable files above are the supported routes for reading. PickMyClass reads publicly available ASU class search data — the same data any student sees — and is not affiliated with Arizona State University.
Source repository
The whole service is open source at github.com/Divkix/pickmyclass. The code is the specification: what is checked, how often, and what an alert contains. Bugs, questions, and feature ideas belong in the issue tracker, and account-specific requests belong at support@pickmyclass.app or on the contact page.