Machine-Readable Content Access

A read-only view of the continuing education catalog Aurora Training Advantage already publishes on its website: live and on-demand webinars, bundled packages, subject areas, presenters, and the continuing education credit each session earns.

What this is for

Everything here is already public on this website. This interface exists so search systems, AI agents, and other automated clients can read the catalog as structured data instead of scraping pages for it: what training Aurora Training Advantage offers, when it runs, what it costs, who presents it, and what continuing education credit it earns.

It is read-only and needs no authentication. There are no write operations of any kind.

This is not a developer platform. It is published so machines can understand what Aurora offers — not as a supported integration surface to build products on. There is no developer programme, no support commitment, and no guarantee of availability for third-party applications. If you want to work with Aurora Training Advantage, get in touch rather than building against this.

What it deliberately does not expose

This API is a separate, narrow surface — not a window onto the application. It has no access to, and will never carry, customer or user records, email addresses or any other personal data, orders, invoices, payments, Stripe data, Salesforce data, enrollment or attendance records, certificates, staff and administrative functionality, or anything else that is not already published on a public page.

Records are addressed by the same slugs this website uses in its own URLs. Internal database identifiers are never accepted as input and never appear in a response.

Base URL

https://auroratrainingadvantage.com/api/public

There is no version segment, and none is planned — see backward compatibility below.

Resources

ResourceDescriptionFilters
/webinarsLive and on-demand continuing education webinars.q, topic, credit, expert, format, from, to, page, per_page
/packagesBundled sets of related webinars sold at a combined price.q, topic, page, per_page
/membershipsSubscription plans that include the whole training library, rather than a single session.
/topicsSubject areas the catalog is organized by.q, page, per_page
/expertsPresenters and subject-matter experts who deliver the training.q, topic, page, per_page
/creditsContinuing education credit types Aurora currently offers.q, page, per_page
/searchOne term searched across every resource above, returned grouped by type.q

Membership prices follow the website: the individual plan publishes an annual price, and the group plan publishes none. Prices Aurora does not publish on the page are not published here either.

Each resource that lists also serves a single record at /{resource}/{slug} — for credits, /credits/{abbreviation}. The single-record response carries everything the list carries, plus the long description.

Example requests

# The next continuing education webinars, soonest first
curl "https://auroratrainingadvantage.com/api/public/webinars?format=live&per_page=5"

# Webinars on one subject, addressed by the slug in the topic's website URL
curl "https://auroratrainingadvantage.com/api/public/webinars?topic=human-resources"

# Webinars earning a particular continuing education credit, in a date window
curl "https://auroratrainingadvantage.com/api/public/webinars?credit=rch&from=2026-09-01&to=2026-12-31"

# One webinar in full
curl "https://auroratrainingadvantage.com/api/public/webinars/{slug}"

# One term across the whole catalog
curl "https://auroratrainingadvantage.com/api/public/search?q=payroll+compliance"

Response shape

A collection answers with data, links, and meta. A single record answers with data alone. Dates and times are ISO 8601 with a real UTC offset — Aurora schedules in US Eastern time, so expect -04:00 or -05:00. Prices are plain numbers beside an explicit currency. Every url is absolute and canonical.

{
  "data": [
    {
      "type": "webinar",
      "slug": "example-webinar",
      "title": "Example Webinar",
      "summary": "...",
      "url": "https://auroratrainingadvantage.com/webinars/example-webinar/",
      "format": "live",
      "starts_at": "2026-09-15T14:00:00-04:00",
      "ends_at": "2026-09-15T15:00:00-04:00",
      "duration_minutes": 60,
      "pricing": { "currency": "USD", "live": 199, "on_demand": 199, "live_and_on_demand": 249 },
      "topics": [ { "name": "Human Resources", "slug": "human-resources", "url": "..." } ],
      "continuing_education": [
        { "abbreviation": "RCH", "name": "American Payroll Association", "url": "...",
          "credits": { "live": 1, "on_demand": 1 } }
      ],
      "presenters": [ { "name": "Jane Doe", "slug": "jane-doe", "url": "..." } ]
    }
  ],
  "links": { "first": "...", "last": "...", "prev": null, "next": "..." },
  "meta": { "current_page": 1, "last_page": 12, "per_page": 25, "total": 287 }
}

Pagination

Use page and per_page. The default page size is 25 and the maximum is 100; a larger per_page is rejected rather than silently reduced. Follow links.next until it is null.

Filtering

Filters combine with AND. topic, credit, and expert take public identifiers — the same slug or abbreviation in the corresponding website URL. A filter naming something that is not published returns an empty page, never an unfiltered one, so an empty result always means "nothing matched" rather than "your filter was ignored".

from and to are inclusive, and a bare to date covers the whole of that day. format is derived from the schedule: a session is live until its scheduled end passes and on-demand after, unless it was only ever released as a recording.

Rate limits

120 requests per minute per client IP address. Exceeding the limit returns 429 with a Retry-After header; wait the stated interval before retrying.

Errors

Failures use the same JSON envelope as Aurora's other APIs. Note that status is a string.

{
  "errors": [
    { "status": "404", "title": "Not Found",
      "detail": "No published webinar exists with the slug \"no-such-webinar\"." }
  ]
}

Backward compatibility

This is one canonical, evolving interface. There is no /v1/ in the URL and none is planned.

Expect additive change without notice: new fields on existing resources, new endpoints, new filters, new resources, and additional metadata. Write your client so unknown fields are ignored rather than fatal, and do not depend on the ordering of object keys.

Breaking change is avoided wherever reasonably possible. Existing fields keep their names and meanings. A parallel versioned API would only ever be introduced if a genuinely breaking change made two APIs unavoidable — and the OpenAPI description above always describes the API as it is today.

Discovery

This API is advertised in an RFC 9727 API catalog at /.well-known/api-catalog, served as application/linkset+json. The catalog advertises this API and nothing else — Aurora's other APIs are private and are deliberately absent from it.

Machine-readable description: https://auroratrainingadvantage.com/openapi/public-discovery.json — OpenAPI 3.1, describing every endpoint, parameter, response schema, and error above.