Generate Embed Token
POST /accounts/:id/embed-token
Token lifetime in seconds. Default: 28800 (8 hours). Max: 86400 (24 hours).
Which view to show:
full, conversations, leads, sequences, settingsDisplay name for the embedded user (shown in manual messages)
Permission level:
owner, admin, member200 OK
Iframe Setup
Drop a single iframe tag into your page:View Modes
Control which part of the dashboard is visible:| View | What It Shows |
|---|---|
full | Complete dashboard with tab navigation (Conversations, Leads, Sequences, Settings) |
conversations | Conversation list + message view only |
leads | Lead management table with filters and import |
sequences | Sequence builder and enrollment |
settings | AI configuration, context files, checklist setup |
&view=conversations to the embed URL, or set it when generating the token.
White-Labeling
Branding is configured at the account level (see Create Account). The embed automatically applies:- Logo: Your logo replaces the default logo in the sidebar and header
- Accent color: Buttons, links, and active states use your color
- Company name: All AI references use the account’s
company_name
The embed never shows Recover branding to your end users. It’s fully white-labeled.
Responsive Sizing
The embed is fully responsive. Set the iframe width to100% and provide a minimum height of 500px. For best results, use height: calc(100vh - 64px) to fill the available viewport.
Cross-Frame Events (postMessage API)
The embed communicates events to your parent window viapostMessage. Listen for events to react to user actions inside the embed.
| Event | Fires When | Data Fields |
|---|---|---|
recover:conversation_selected | User opens a conversation | phone |
recover:lead_status_changed | Lead status is updated | phone, status |
recover:checklist_completed | All required documents collected | phone |
recover:message_sent | Manual message sent from embed | phone |
recover:token_expiring | Token expires in 5 minutes | — |
Token Refresh
Tokens expire after the configuredexpires_in period. The embed emits a recover:token_expiring event 5 minutes before expiry. To refresh without a page reload: