Your product already has users. Now it can teach them.
Underlayer is training you embed — an API, an iframe, and a player that looks like it was always part of your product. No portal. No seat licences. Nobody signs up for anything.
Free sandbox · no card · 500 course views a month
Watch, then listen.
Video and audio sit directly in the screen — no player chrome, no new tab, no leaving the product you are already inside.

It is not an LMS.
An LMS is a destination. You send people to it, it asks them to log in, and it looks like somebody else's software. Underlayer is the opposite of all three.
- A portal you send people to
- A login they have to create
- Seats you pay for whether used or not
- A look that is not your product's
- Reports you go somewhere else to read
- A screen inside your own app
- The identity you already have for them
- Metered on usage, never on seats
- Your fonts, your colours, your radius
- Webhooks and an API into your warehouse
Three calls and an iframe.
There is no SDK to install and nothing to run on your side. If your product can render an iframe and call an API, it can teach.
Author screens by hand, point us at a doc, or POST the JSON from your own system.
POST /v1/coursesOne iframe. Pass the learner's id and they pick up exactly where they left off.
<iframe src="/embed/:id?identity=">Views, answers, completions and certificates — by webhook, by API, or into your warehouse.
POST /your-hook · course.completed39 blocks. None of them look like a form.
Text and media, six question types, flashcards, drag-to-match, hotspots, timelines, decks, callouts, code, checklists, polls, reflections, scenarios and more. Every one takes your theme.
One line, and it's inside.
Pass the id you already use for that person and the course remembers them: where they stopped, what they answered, whether they passed. Nothing to install, no cookie banner, no second account.
- Right-to-left, done properly
Arabic and Hebrew mirror the whole layout — spine, arrows, drag direction — not just the text.
- Their language, not yours
Add a translation and pass ?lang=. Falls back to the source silently if it isn't ready.
- SCORM, when they insist
Some customers have an LMS and no intention of leaving it. Export a package and hand it over.
<iframe
src={`https://underlayerhq.com/embed/${courseId}
?identity=${user.id}&lang=${user.locale}`}
style={{ width: '100%', height: '100%', border: 0 }}
/>course.completedwho finished, when, and with what scorecertificate.issuedfires once, with a verifiable serialscreen.viewedevery screen, if you want that muchIt should look like you built it.
Four colours by job, two fonts, a corner radius and a density. Every block, every state, light and dark.
You pay for course views.
Not seats. Published, not quoted — while everyone else in this category makes you book a call to hear a number.
- Every block, the API, MCP
- 3 courses, 2 people building
- A sandbox marker on the embed
- “Powered by Underlayer”
- Unlimited courses and learners
- SCORM 1.2 + 2004 export
- Webhooks, REST API, MCP
- Custom themes and certificates
- Everything in Build
- SAML / OIDC and SCIM
- Audit export, your own domain
- Signed DPA, 99.9% uptime
- Everything in Scale
- EU or US data region
- SOC 2 roadmap + security review
- A named person who answers
Extra views are $9 / $6 / $3.50 per thousand as you grow. Nothing throttles when you cross the line.
See every limitAsked before every trial.
If yours isn't here, the docs are unusually complete — or email us and a person answers.
Do our learners need accounts?
No. You pass the id you already have for them on the iframe URL. They never see a sign-up, a password, or an invitation email.
What if we already have an LMS?
Export the course as a SCORM 1.2 or 2004 package and hand it over. It runs inside their player, reports completions to them the way they expect, and still reports back to you.
Who owns the content?
You do. Courses as JSON, packages as SCORM, learner records as CSV — exportable at any time on every plan, including the free one. We host it; we don't hold it.
Can it write the course for us?
Point it at a document, a URL or a prompt and it drafts the screens and the questions. You edit what it got wrong. Treat it as a first draft, not a publish button.
What happens when we hit the cap?
We email you before you reach it. On a paid plan nothing throttles and nobody is turned away mid-course — the extra bills at your plan's rate. The free sandbox is the exception: it stops, because a free tier with no ceiling is free production hosting.
Put the first course inside your product this week.
A sandbox takes a day to approve and costs nothing. Bring one document and we'll show you the course it becomes.