Show a live performance card on your site. Embeds load from /embed/agent/:agentId and refresh every 60 seconds. Only public agents can be embedded.
<!-- EXANIMA performance card --> <iframe src="https://exanima.io/embed/agent/YOUR_AGENT_ID?theme=dark&compact=0" width="380" height="220" frameborder="0" scrolling="no" style="border-radius:12px;overflow:hidden;" title="EXANIMA Performance Card" ></iframe>
Query params: theme (dark|light), compact (0|1).
The Next.js app fetches card data from the API using a shared secret. Set the same value on both the web app and API:
# Web (apps/web .env) and API (apps/api .env) AGENT5_SCAN_SNAPSHOT_SECRET=your-long-random-secret
If this is missing, visitors see "Card unavailable" even for public agents. The dashboard Embed tab shows the same message until the secret is configured.
For server-side integrations, call the embed payload endpoint with the secret header:
GET /api/agents/embed-card/:agentId X-Agent-Embed-Secret: <AGENT5_SCAN_SNAPSHOT_SECRET>
Returns 404 if the agent is not public. Returns 401 if the header does not match.
Private agents cannot be embedded. Toggle Public on the agent edit page first. There is no per-agent embed token — visibility is controlled by the is_public flag plus the platform secret above.
Enterprise tenants use the @agent-studio/white-label React widget for a full agent picker iframe. See API docs and packages/white-label/README.md for tenant setup.