Email editor SDK

Embed an AI email editor on your website in minutes.

One div, ten lines of code, and your users are drafting email with AI — styled to your brand, saved to your storage, behind your login.

npm or CDN · TypeScript types · no runtime dependencies

AAcme

Welcome series

Draft · edited just now
<div id="editor">
Email 1 · Welcome
AAcme

Welcome aboard.

You're in. Set up your workspace in two minutes and invite your team whenever you're ready.

Get started
Everything inside the dashed line is one <div> in your app. You style it, you own the data, and your users never see our name.
npm + CDNTypeScript typesZero dependenciesReact, Vue, or plain HTML

Three ways in

Own as much or as little as you like.

The same package covers all three. Start at the top and move down when you want more control.

01

Embed the editor

The full editor, chat included. Nothing to build — mount it and you're done.

init({ id, sessionToken,
  chatEnabled: true })

You own: a div.

02

Bring your own chat

Keep your interface and your product's voice. Stream drafts into it over server-sent events.

editor.chat(msg, {
  onReplyChunk })

You own: the chat UI.

03

Just call it

No chat at all. Wire any input in your app straight to the editor and apply the result.

editor.chatAndApply(
  'make the CTA bigger')

You own: the trigger.

MCP

Your agents can drive it too.

Point Claude Desktop, Cursor, or VS Code at the Dezignee MCP servers — scaffold the embed, inspect a workspace, or edit a live email straight from your agent.

dezignee-mcp · pluginRead-only

Setup & inspection

For Cursor and VS Code. Detects your stack, scaffolds the embed component and init() config, and reads a workspace without changing anything.

detect_projectinstall_bridgecreate_embed_componentconfigure_initworkspace_overviewdiagnostics
dezignee-mcp · usersRead-write

Design & commands

For Claude Desktop. Suggests copy, layout, and styles, then emits the same typed commands your editor does — versioned, and undoable.

suggest_copysuggest_layoutsuggest_stylesgenerate_commandsapply_commands
Claude DesktopCursorVS CodeAny MCP client

Feels like yours

An embed that doesn't look embedded.

Your branding

Pass CSS variable overrides plus light, dark, or system. Change them at runtime with setTheme() — no reload, no re-init.

Your storage

Give us upload, delete, and list callbacks and every image goes to your bucket. Nothing touches ours.

Your auth

Your backend mints short-lived session tokens from a key that never enters the browser. Expired tokens refresh in place.

Quickstart

Three steps, one afternoon.

  1. 01

    Install. One package, no peer dependencies to reconcile.

  2. 02

    Mint a session server-side from your API key, so the key stays out of the browser.

  3. 03

    Mount it into any element and export email-safe HTML whenever you publish.

Full plugin reference
editor.ts
import { init } from 'dezignee-plugin'

const editor = await init({
  id: 'editor',
  sessionToken,          // minted by your server
  chatEnabled: true,
  theme: { '--primary': '#6366f1' },
})

// email-safe HTML on publish
const { results } = await editor.exportHTML({ mode: 'single' })

Included

Your users get a finished product on day one.

Everything below ships inside the embed. You don't design it, build it, or maintain it against a decade of email clients.

AI chat draftingBlock editorMerge tagsAsset libraryInbox validationEmail-safe HTML exportVersion historyMulti-email sequences

Add it to your site in minutes.

Start with the quickstart, or talk to an engineer about your integration.