Ciaran
09/24/2026, 9:02 AMAI Evy
09/24/2026, 9:02 AMAI Evy
09/24/2026, 9:02 AMdata-title, data-logo-url, data-color, data-theme-color, data-component-color, and data-fab-text for appearance customization, but none relate to widget size/dimensions [(1) ]() .
I could try to answer generally if you'd like, but I don't have documented information confirming a size customization option.
Check out these potentially useful sources: [Retell Website Widget]() , [Platform Changelogs | Retell AI]() , [Chat Widget, Custom Function Enhancement and more!]()AI Evy
09/24/2026, 9:02 AMAI Evy
09/24/2026, 9:02 AMCiaran
09/24/2026, 9:04 AMAI Evy
09/24/2026, 9:04 AMAI Evy
09/24/2026, 9:04 AMdata-title, data-logo-url, data-color, data-theme-color, data-component-color, data-fab-text, data-auto-open (auto-opens the widget on page load, but doesn't make it full screen) , and other appearance/behavior options, but none control the widget's size or a full-screen mode [(1) ]() .
Discord discussions also confirm that customization is limited to what's available through the script tag options (title, logo, color) , with anything beyond that requiring custom JavaScript/CSS overrides, and even then some elements (like the launcher button) sit inside a closed Shadow DOM that can't be styled with regular CSS [(2) ]() .AI Evy
09/24/2026, 9:04 AMAI Evy
09/24/2026, 9:04 AMAI Evy
09/24/2026, 10:05 AMCiaran
09/24/2026, 10:05 AMAI Evy
09/24/2026, 10:05 AMcall_started, call_ended, chat_started, etc.) , confirm your endpoint is returning a 2xx status within the 10-second timeout window, otherwise Retell will retry up to 3 times [(1) ]() .
- If you're using a custom function pointed at your ngrok URL, check that the endpoint is publicly reachable — Retell blocks requests to localhost, private IP ranges, and cloud metadata addresses, so your local server must be properly exposed through ngrok first [(2) ]() .
- One community discussion also confirms that webhooks are things your agent calls at call lifecycle events — they're not something you call directly to get chat replies, so if you're expecting the chat interface itself to respond, that's a separate flow from the webhook setup [(3) ]() .
If your ngrok server isn't logging any incoming requests at all when you send "hello" in the chat, that suggests the request isn't reaching your endpoint, which could point to a URL/configuration issue rather than a code issue.
I could try to answer generally if you'd like, but I don't have documented information that directly addresses this specific "no reply" scenario for the chat widget test.
Check out these potentially useful sources: [Retell webhooks overview](AI Evy
09/24/2026, 10:05 AMAI Evy
09/24/2026, 10:05 AMAI Evy
09/24/2026, 10:21 AMCiaran
09/24/2026, 10:21 AMAI Evy
09/24/2026, 10:21 AMAI Evy
09/24/2026, 10:21 AMCiaran
09/24/2026, 11:25 AMAI Evy
09/24/2026, 11:25 AMAI Evy
09/24/2026, 11:25 AMping_pong and whether your host/proxy has an idle timeout
- `error_llm_websocket_runtime`: the socket errored mid-call, your server closed it with an unexpected code, or it kept closing abnormally (1006) until Retell ran out of reconnects
- `error_llm_websocket_corrupt_payload`: close code 1007, sent when Retell receives a binary frame instead of text
If this is about outbound calling, one community report describes the Invalid_destination error occurring on outbound calls to other numbers, while calling the user's own number worked fine [(2) ]() . Another set of Discord reports describes a spoken "Network access error" with a long numeric code occurring mid-call, though no root cause or fix was confirmed in that thread [(3) ]() [(4) ]() .
If this is a known outage, there was a resolved incident on Oct 28 where inbound calls experAI Evy
09/24/2026, 11:25 AMAI Evy
09/24/2026, 11:25 AMAI Evy
09/24/2026, 11:25 AMCiaran
09/24/2026, 11:26 AMAI Evy
09/24/2026, 11:26 AMAI Evy
09/24/2026, 11:26 AM400 Bad Request from the create-chat endpoint when using the widget. However, based on what's documented for the widget setup, a few things to check:
- The chat widget requires either data-public-key or data-voice-public-key, and to enable text chat you need data-agent-id set to a chat agent ID [(1) ]() . If data-agent-id is pointing to a voice agent instead of a chat agent, that mismatch could cause the chat creation request to fail.
- Confirm your public key is properly configured — the setup requires data-public-key="YOUR_RETELL_PUBLIC_KEY" and data-agent-id="YOUR_CHAT_AGENT_ID" in the script tag :
<script
id="retell-widget"
src="<https://dashboard.retellai.com/retell-widget-v2.js%22>
type="module"
data-public-key="YOUR_RETELL_PUBLIC_KEY"
data-agent-id="YOUR_CHAT_AGENT_ID"
data-voice-public-key="YOUR_VOICE_PUBLIC_KEY"
data-voice-agent-id="YOUR_VOICE_AGENT_ID"
data-agent-version="YOUR_AGENT_VERSION"
data-title="YOUR_CUSTOM_TITLE"
data-logo-url="YOUR_LOGO_URL"
data-color="YOUR_CUSTOM_COLOR"
data-theme-color="YOUR_THEME_COLOR"
data-component-color="YOUR_COMPONENT_COLOR"
data-fab-text="YOUR_FAB_TEXT"
data-bot-name="YOUR_BOT_NAME"
data-popup-message="YOUR_POPUP_MESSAGE"
data-show-ai-popup="true"
data-show-ai-popup-time="5"
data-auto-open="false"
data-dynamic='{"key": "value"}'
data-white-label="YOUR_WHITE_LABEL_TOKEN"
data-recaptcha-key="YOUR_GOOGLE_RECAPTCHA_SITE_KEY"
></script>AI Evy
09/24/2026, 11:26 AMdata-recaptcha-key is set but reCAPTCHA protection isn't properly enabled for your public key in the Retell Public Keys settings, or the reCAPTCHA script isn't loaded correctly, this could also cause session creation to fail — reCAPTCHA v3 is required, and only v3 is supported .
- Since you're testing through an ngrok tunnel, confirm the domain serving the widget matches an allowed domain configured for your public key (this was referenced in your earlier troubleshooting as well) .
The create-chat endpoint itself isn't documented in the sources I have (only [Create Outbound SMS]() [(2) ]() is available for chat-related API endpoints, which is a different endpoint for SMS specifically, not the widget's chat creation call) .
Can you confirm: is data-agent-id pointing to a chat agent (not a voice agent) , and is reCAPTCHA enabled for the public key you're using?AI Evy
09/24/2026, 11:26 AMAI Evy
09/24/2026, 11:26 AMCiaran
09/24/2026, 11:32 AMAI Evy
09/24/2026, 11:32 AMAI Evy
09/24/2026, 11:32 AMdata-public-key and data-agent-id (chat agent ID) are both present, which is the minimum required combination for the chat widget [(1) ]() .
A couple of things stand out that could relate to the 400 Bad Request on `create-chat`:
- data-dynamic="{...}" — this needs to be a valid JSON string with actual key-value pairs, e.g. data-dynamic='{"company": "Acme"}' . If {...} is literally what's in your tag (not just redacted for this message) , the widget would fail to parse it as JSON when creating the chat session, which could trigger the 400 error.
- Domain allow-list: your public key must have the domain serving the widget added to its allowed domains, with localhost added separately for local testing [(2) ]() . Since you mentioned testing via ngrok earlier, confirm the ngrok domain (or localhost if that's how it's being served) is added to the public key's allowed domains.
Everything else in the tag — data-agent-version, data-auto-open, data-bot-name, data-color, data-component-color, data-fab-text, data-logo-url, data-popup-message, data-show-ai-popup, data-show-ai-popup-time, data-theme-color, data-title — matches documented optional attributes [(1) ]() .
Can you confirm whether data-dynamic="{...}" is literal in your actual tag, or just how you redacted it for this message? That would help narrow down whether it's the cause.AI Evy
09/24/2026, 11:32 AMAI Evy
09/24/2026, 11:32 AMAI Evy
09/24/2026, 12:25 PMCiaran
09/24/2026, 12:25 PMAI Evy
09/24/2026, 12:25 PMend_chat_after_silence_ms [(1) ]() [(2) ]() .
If users stay silent for a period after agent speech, the chat ends — the minimum value allowed is 120,000 ms (2 minutes) and the maximum is 259,200,000 ms (72 hours) ; by default this is set to 3,600,000 ms (1 hour) [(2) ]() .
You can also set an optional Auto-close message to display when the chat is automatically closed, via auto_close_message [(1) ]() [(2) ]() .
Beyond the inactivity timeout, a chat session can also end in two other ways: the agent ends it (e.g. through an end-chat node or function) , or you end it explicitly using the End chat API [(1) ]() .AI Evy
09/24/2026, 12:25 PMAI Evy
09/24/2026, 12:25 PM