Learnomy
REST API & Developer tools

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 learnomy/v1
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.

Free

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.

Free

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.

Free

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.

Free

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.

Free

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.

Free

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
Authentication flow
# 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
Batch 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

List { "data": [...], "meta": { "total": N, "cursor_next": "..." } }
Single { "data": { ... } }
Error { "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 Pro
enrollment.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

PRO

Learnomy 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

PRO

Pro 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

PRO

Full 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.