> ## Documentation Index
> Fetch the complete documentation index at: https://docs.junis.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Widget Embed

> Put your AI team on any website with a single iframe — visitors chat without logging in

The Junis embed widget places your organization's AI team on any website with one iframe snippet. Visitors chat with your orchestrator — with streaming responses, file uploads, and Markdown rendering — without creating a Junis account. Usage is billed to your organization, and per-visitor rate limits plus an origin whitelist keep the widget under your control.

> Paste one `<iframe>` tag → your website has an AI team.

<CardGroup cols={2}>
  <Card title="No Login for Visitors" icon="user-check">
    Anonymous visitors chat immediately — no signup, no account, no friction
  </Card>

  <Card title="Full Chat Experience" icon="comments">
    File uploads, Markdown rendering, and real-time streaming — the same chat UX as the Junis app
  </Card>

  <Card title="Origin Whitelist" icon="shield-check">
    The widget only loads on domains you explicitly allow
  </Card>

  <Card title="Built-in Rate Limits" icon="gauge">
    Each visitor gets a 24-hour message limit (default 20, adjustable 1–500)
  </Card>
</CardGroup>

***

## What are the two embed modes?

| Mode                 | Who can chat                                           | Typical use                                     |
| -------------------- | ------------------------------------------------------ | ----------------------------------------------- |
| **Authenticated**    | Organization members only (must be logged in to Junis) | Internal portals, member dashboards             |
| **Public Anonymous** | Anyone visiting your website — no login required       | Public websites, product pages, support widgets |

<Note>
  The embed widget is **independent** of your organization's public visibility (`is_public`). A fully private organization — one that never appears in the showcase — can still serve an anonymous widget on its own website.
</Note>

***

## How do I enable the anonymous widget?

Widget settings live in **Organization Settings → Publish tab** and require the **OWNER** or **ADMIN** role.

<Steps>
  <Step title="Switch to Public Anonymous">
    In the **Publish** tab, set the embed mode to **Public Anonymous**. This allows visitors to chat without a Junis account.
  </Step>

  <Step title="Add Allowed Domains">
    Add the exact **origin** of each website that will host the widget — scheme plus host, for example:

    ```text theme={null}
    https://example.com
    https://blog.example.com
    ```

    <Warning>
      Origins must not include a path — `https://example.com/support` is invalid. Use `*` to allow all origins, but only do this if you understand that any website can then embed your widget (and its usage bills to you).
    </Warning>
  </Step>

  <Step title="Copy the iframe code">
    Copy the generated snippet and paste it into your website's HTML:

    ```html theme={null}
    <iframe
      src="https://junis.ai/embed/{your-org-slug}"
      width="100%"
      height="600px"
      allow="microphone; camera; clipboard-write"
    ></iframe>
    ```

    <Check>Your AI team is live on your website.</Check>
  </Step>
</Steps>

***

## How do billing and rate limits work?

* **Billing goes to the organization owner.** Anonymous visitors never pay — every message a visitor sends is billed to your organization, exactly like your own usage.
* **Per-visitor message limit.** Each visitor can send a limited number of messages per 24 hours — **default 20**, adjustable between **1 and 500** in the Publish tab. This caps your worst-case cost per visitor.
* **Returning visitors continue their conversation.** When a visitor comes back, the widget resumes their previous session instead of starting from scratch.

<Tip>
  Start with the default limit of 20 messages per visitor and raise it once you have observed real traffic and cost in your usage dashboard.
</Tip>

***

## Can I restrict what the widget can do?

Yes. You can **block specific tools** for widget conversations at the organization level, so anonymous visitors get answers without triggering sensitive or expensive capabilities (for example, tools that write to internal systems). Your members' normal chat sessions are unaffected.

***

## Widget vs. team link — what's the difference?

|                            | Embed widget (`/embed/{slug}`) | Team link (`/team/public/{slug}`) |
| -------------------------- | ------------------------------ | --------------------------------- |
| **Login required**         | No (anonymous mode)            | Yes — visitors must sign in       |
| **Works inside an iframe** | Yes — designed for it          | No — opens in a new tab only      |
| **Where it lives**         | Your own website               | Junis-hosted team page            |

Use the **widget** to put your AI team on your website. Use the **team link** to share a login-gated page hosted on Junis.

***

## Next Steps

<CardGroup cols={2}>
  <Card title="Organization Wiki" icon="brain" href="/guides/wiki-second-brain">
    Give your widget answers from your team's shared knowledge base
  </Card>

  <Card title="Agent Orchestration" icon="diagram-project" href="/guides/orchestration/overview">
    Design the AI team that powers your widget
  </Card>

  <Card title="Tools & Capabilities" icon="wrench" href="/guides/tools/overview">
    Control which tools your agents can use
  </Card>

  <Card title="Team Management" icon="users" href="/guides/organization/team-management">
    Manage roles — widget settings require OWNER or ADMIN
  </Card>
</CardGroup>

***

<Note>
  **Questions?** Contact us at [contact@junis.ai](mailto:contact@junis.ai) for help setting up your embedded AI team.
</Note>
