An API that powers
real apps
166 curated endpoints under learnomy/v1 with JWT authentication, a Batch API, and offline progress sync. The same layer the front end uses — stable, envelope-consistent, and ready for a mobile app on day one.
All 166 endpoints ship with Free. Pro adds learnomy-pro/v1 + 33 webhook events.
POST /wp-json/learnomy/v1/enrollments Authorization: Bearer <jwt> Content-Type: application/json { "course_id": 128, "user_id": 42, "source": "purchase" } 201 Created { "data": { "enrollment_id": 9013, "status": "active", "enrolled_at": "2026-06-13T10:42:00Z" } }
166
REST endpoints
under learnomy/v1
33
webhook events
Pro - full delivery log
- 166
- REST endpoints
- under learnomy/v1
- 33
- webhook events
- Pro - full delivery log
- 40
- custom DB tables
- lrn_* — no post-meta
- 25
- batch limit
- requests per call
What ships in Free
Everything you need to build a real integration
No API add-on required. Every Free install ships the full REST layer, JWT auth, and the Batch API.
166 REST endpoints
Every data type — courses, lessons, quizzes, enrollments, progress, certificates, memberships, notifications — is accessible over learnomy/v1. The same layer the browser front end uses.
JWT authentication
15-minute access tokens, 30-day refresh tokens. Obtain a token via POST /auth/token. Pass it as Authorization: Bearer <token> on every request. WordPress Application Passwords also work.
Batch API
Bundle up to 25 independent REST requests into one call. Each sub-request runs in sequence with its own authorization context. Cut network round trips for app initialization.
Offline progress sync
Submit lesson completions and quiz attempts queued offline. The server resolves conflicts with a last-write-wins strategy per resource and returns the canonical state.
3 outgoing webhooks
Configure up to three webhook endpoints. Every LMS event that fires a hook can be forwarded to an external URL. SSRF-safe URL validation enforced on registration.
WordPress Interactivity API
The front end is built on the WordPress Interactivity API — ES modules, no React, no jQuery, no build step. Light footprint, full compatibility with WordPress caching and block rendering.
JWT authentication
Stateless auth with automatic refresh
Obtain an access token with a single login call. Every request carries the token in the Authorization header — no cookies, no nonces, no session state on the server.
- 15-minute access tokens, 30-day refresh tokens
- Refresh without re-authenticating — POST /auth/token/refresh
- Revoke all tokens for a user from the admin panel
- WordPress Application Passwords also work as an alternative
# Step 1: obtain tokens POST /wp-json/learnomy/v1/auth/token { "username": "alex", "password": "..." } 200 OK { "data": { "access_token": "eyJ...", "refresh_token": "ey7...", "expires_in": 900 } } # Step 2: use the token GET /wp-json/learnomy/v1/enrollments Authorization: Bearer eyJ...
Batch API
Cut round trips on app startup
Bundle up to 25 independent REST requests into one HTTP call. Each sub-request runs under your authorization context and returns its own status code and body. Initialize an entire app screen with one network call.
- Up to 25 sub-requests per batch call
- Each sub-request gets its own status code and error
- Runs sequentially — no partial-batch failures surface as 500
- Full JWT authorization context applies per sub-request
POST /wp-json/learnomy/v1/batch Authorization: Bearer <jwt> # Load app home in one call [ { "method": "GET", "path": "/enrollments" }, { "method": "GET", "path": "/notifications" }, { "method": "GET", "path": "/auth/me" } ] 200 OK — array of per-request results
Response envelope — consistent across all endpoints
{ "data": [...], "meta": { "total": N, "cursor_next": "..." } } { "data": { ... } } { "error": { "code", "message", "details", "request_id" } } Outgoing webhooks
Push events to any URL
Configure webhook endpoints in Learnomy Settings. Every time a matching LMS event fires, Learnomy sends a signed POST to your URL. Free supports three endpoints. Pro expands to 33 lifecycle events with a full delivery log and replay.
Webhook events
33 in Proenrollment.created enrollment.completed quiz.attempt.graded certificate.issued PRO subscription.renewed PRO instructor.withdrawal.approved PRO cohort.member.added PRO Free: 3 configurable endpoints. Pro: 33 events, delivery log, replay.
Platform depth
Built to plug in, not bolt on
40 custom MySQL tables with designed indexes, 200+ hooks, 12 blocks, 10 shortcodes, and GDPR wiring built in. A platform you can build on, not around.
12 Gutenberg blocks
Server-side rendered blocks for course catalog, course card, quiz, progress, account area, and more. Embed anywhere in a block editor post.
10 shortcodes
Classic shortcode equivalents for every block. Use in themes, page builders, or PHP templates.
6 sidebar widgets
Drop a course grid, enrollment CTA, or student progress widget into any registered sidebar.
200+ hooks
Every lifecycle event fires an action. Every data transform is filterable. Payment gateways are pluggable via the adapter interface.
GDPR export and erase
WordPress personal data export and erase hooks are wired. Student enrollments, quiz attempts, and certificates export with the user's personal data request.
JSON-LD Course schema
Structured data added to every course page automatically. No SEO plugin configuration required.
Database architecture
40 custom MySQL tables — no CPTs, no post meta for LMS data
All lrn_* tables have targeted indexes for their query patterns. Pagination, filtering, sorting, and analytics all hit columns designed for those queries — not post meta scans. Scales to hundreds of thousands of enrollments without tuning.
40
custom tables
What Pro adds
More events, more endpoints, full delivery visibility
33 webhook events
PROLearnomy Pro expands webhook coverage to 33 lifecycle events with per-event filtering. Every delivery attempt is logged — status code, response body, latency. Replay any delivery from the admin viewer.
learnomy-pro/v1 namespace
PROPro adds its own REST namespace covering Cohorts, Learning Paths, Spaces, Assignments, User Journeys, and Membership Analytics. Same envelope, same auth, same rate-limit rules.
Webhook delivery log
PROFull delivery log with inline payload viewer, per-event retry controls, and a replay endpoint. Diagnose integration failures without guessing at what your server received.
Developer FAQ
How do I obtain a JWT token?
POST to /wp-json/learnomy/v1/auth/token with a JSON body containing username and password. The response returns an access token (valid 15 minutes) and a refresh token (valid 30 days). Pass the access token as Authorization: Bearer <token> on every subsequent request.
Does the REST API require any additional plugin or configuration?
No. The REST API is active as long as Learnomy is installed and activated. There is no separate toggle. All 166 endpoints are registered automatically on rest_api_init.
What does Learnomy Pro add to the API?
Pro adds a learnomy-pro/v1 namespace with endpoints for Cohorts, Learning Paths, Spaces, Assignments, User Journeys, and Membership Analytics. It also expands outgoing webhooks from 3 endpoints to 33 lifecycle events with a full delivery log and replay.
Are endpoints rate-limited?
Write endpoints flagged as sensitive — login, quiz start, coupon validation, and others — are rate-limited to 60 requests per minute per user by default. Administrators and instructors are exempt. The limit is adjustable in Learnomy Settings > API and Performance.
How does the Batch API work?
POST an array of up to 25 sub-requests to /wp-json/learnomy/v1/batch. Each sub-request is an object with method, path, and optionally body. They run in sequence under your authorization context. Ideal for app startup when you need courses, enrollments, and user data in one call.
Can I build a mobile app on this API?
Yes. The REST API is the same layer the Learnomy browser front end uses — stable, envelope-consistent, and designed for external consumers. JWT authentication, offline progress sync, and device registration hooks for push notifications are all included in Free.
Build on a platform that ships the whole stack
166 endpoints, JWT auth, and the Batch API ship with Free. No API add-on, no extra configuration.