Embed API

The only embeddable course & webinar API with interactive email built in

Enroll and register your own end users into a MailInApp course or webinar straight from your backend, embed the viewing/joining experience in your app, and let every registration, reminder and completion email render as a real interactive email instead of a plain confirmation.

LMS and webinar embed APIs already exist. None of them do this.

Embeddable course players like uQualio and Coassemble, and webinar-embed APIs from RingCentral, Livestorm and Webex, all solve the same problem the same way: a headless enrollment/registration endpoint plus a widget or iframe to drop into your app. Every one of them ships the same flat, hardcoded confirmation email behind it.

MailInApp already has the piece none of them do — a real interactive email engine. So instead of building a third, smaller version of the same embed API, this one wires straight into it: registration confirmed, reminder, course welcome and course completed can each render as a studio project you designed, fallback engine and interactive blocks intact, instead of a static HTML string.

Register webinar attendees from your own backend

One call with just a name and email — your users never see a MailInApp form or need a MailInApp account. A confirmed registrant gets a signed join link back in the response, ready to drop into your own UI.

Enroll course subscribers with your own billing as the source of truth

Grant or revoke course access for an email address directly — your own checkout or subscription system decides who's entitled, MailInApp just renders the course.

Embed the course viewer with a signed, short-lived token

Mint a 5-minute bootstrap token your app redirects an entitled learner to — from there they're an ordinary signed-in subscriber inside your iframe, with progress, quizzes and video streaming working exactly as they do on a MailInApp-hosted portal.

Bind any lifecycle email to a studio project

Point a course or webinar's registered/reminder/enrolled/completed event at a project you built in the studio, and that event's email renders through the full fallback engine instead of a hardcoded confirmation. Leave it unbound and nothing changes from today's plain email.

Already sending with the Send API?

The Embed API uses the exact same bearer API key — no new credential to mint, no separate dashboard to manage.

Read the Embed API quickstart

Two calls, end to end

Register a webinar attendee. Enroll a course subscriber.

Both use the same bearer API key as the transactional Send API — mint one from API & Integrations in the dashboard.

Read the Embed API quickstart

Register a webinar attendee

curl -X POST https://mailinapp.com/api/v1/webinars/<id>/register \
  -H "Authorization: Bearer mia_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "email": "[email protected]",
    "name": "Ada Lovelace"
  }'

Enroll a course subscriber

curl -X POST https://mailinapp.com/api/v1/courses/<id>/enroll \
  -H "Authorization: Bearer mia_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "email": "[email protected]",
    "active": true
  }'

How the Embed API compares

FeatureMailInAppRingCentral / Livestorm / WebexuQualio / CoassembleThinkific-class LMS
Headless registration/enrollment API
Embeddable viewer/join iframe
Real interactive email behind every lifecycle event
No-code fallback engine for older email clients
Built-in hosted video course catalogVaries
Your own billing as the entitlement sourceVaries

Based on each vendor's own published developer/embed documentation as of July 2026 — always confirm against their current docs before deciding.

Embed API FAQ

Questions, answered

Does my end user need a MailInApp account?

No. Registration and enrollment both work off a plain email address you supply — there's no sign-up flow, password, or MailInApp-branded page your users ever see, unless you choose to open the embedded course viewer.

How is course access controlled?

Your own backend decides — call enroll with active: true or false whenever your own billing or subscription state changes. There's no separate MailInApp checkout for embed-API courses; it just renders the course and tracks progress once you've told it who's entitled.

What happens if I don't bind a lifecycle email to a project?

Nothing changes — registration, reminder, enrollment and completion emails keep using today's plain confirmation copy until you explicitly bind an event to a studio project from the course or webinar's own settings panel.

Is this on every plan?

The Embed API shares its call quota with courses generally, so it's available from the Lite plan up — see pricing for exact monthly call limits per tier.

See plans & pricing

Embed it once. Let every email do the rest.

Mint an API key and register your first webinar attendee or course subscriber in minutes.