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

# Channels

> Putting the assistant where the merchant's customers already are.

## Website widget

```http theme={null}
GET|POST /api/v1/partner/tenants/{ref}/channels/website/
```

```json theme={null}
{ "allowed_origins": ["https://moticreations.com"], "brand_color": "#1f3c7a" }
```

The response carries a publishable key and a ready-to-paste snippet:

```html theme={null}
<script src="https://cdn.impellabs.tech/sdk/impel-chat.js"
  data-impel-key="…"
  data-api-base-url="https://api.impellabs.tech/api/v1"
  data-brand-color="#1f3c7a"
  defer></script>
```

`GET` returns `{"configured": false}` before the channel exists, rather than a
404 — on this API a 404 means "that tenant is not yours", and reusing it for
"not set up yet" would make the two indistinguishable.

### allowed\_origins is required

<Warning>
  The widget key is **publishable** — it ships to browsers and is visible in page
  source. That is fine, and by design: it can only start a conversation. The
  origin allowlist is what stops it being lifted off one merchant's page and
  embedded somewhere else on their credit.

  An empty list is rejected at provisioning time rather than silently meaning
  "any site".
</Warning>

Include every host the storefront serves from, including `www.` if used.
Requests from anywhere else get a 403 with a named reason.

### Nothing answers until the assistant is live

A configured widget on a merchant with no active assistant returns 503 with
`reason: "no_agent"`. That is the [activate](/reseller/assistants) call, not a
misconfiguration.

## Other channels

WhatsApp, Instagram and phone exist on the platform but are not provisionable
through this API yet — WhatsApp requires a browser step Meta mandates, and the
others need number procurement. Talk to us if a merchant needs one.
