diff --git a/fern/calls/call-ended-reason.mdx b/fern/calls/call-ended-reason.mdx index 6ac710991..d49555414 100644 --- a/fern/calls/call-ended-reason.mdx +++ b/fern/calls/call-ended-reason.mdx @@ -127,6 +127,7 @@ Additional model errors: - `pipeline-no-available-llm-model` / `call.in-progress.error-pipeline-no-available-llm-model` — No suitable LLM model was available. Check your model configuration. - `call.in-progress.error-pipeline-ws-model-connection-failed` — Failed to connect to a custom LLM WebSocket endpoint. +- `pipeline-error-custom-llm-llm-failed` with a call log entry that starts with `Custom LLM URL blocked:` — The Custom LLM URL was refused before the request was sent, and the rest of the entry names the reason. For the URL requirements, see [Bring your own server](/customization/custom-llm/using-your-server). A configured fallback model is tried first. ## Pipeline errors: voice (TTS) diff --git a/fern/customization/custom-llm/using-your-server.mdx b/fern/customization/custom-llm/using-your-server.mdx index 042921548..709dc258d 100644 --- a/fern/customization/custom-llm/using-your-server.mdx +++ b/fern/customization/custom-llm/using-your-server.mdx @@ -61,6 +61,8 @@ On the **Assistant** tab, select **MODEL**. In **Model Settings**, open **Model* **3. Enter Ngrok URL:** Enter `gpt-4.1-mini` in the second **Model** field. Paste the public base URL for your OpenAI-compatible endpoint into **Custom LLM URL** (for example, the URL generated by Ngrok for your server). The server handles requests at `/chat/completions`. +The URL must use `https://` and resolve to a public IP address, and so must every URL it redirects to. Localhost, private network, and link-local addresses are refused, as is a URL that includes credentials, a query string, or a fragment. + Set the custom LLM URL on a stored assistant, as in this step. A web call or chat authenticated with a public API key or a public JWT that supplies `model.url` is rejected with a `403` response. For more information, including how to set the URL per request from your server, see [Model URLs on public-key requests](/assistants/concepts/transient-vs-permanent-configurations#model-urls-on-public-key-requests).