# Common Mistakes - Do not commit `.env`; it is intentionally ignored and should stay local. - Use `POST /v1/chat/completions` with JSON only. Multipart upload is not implemented. - For image input, send either an `http(s)` URL, a data URL, or raw base64 on `image_url.url`. - For audio input, send base64 on `input_audio.data` with `format: "mp3"` or `"wav"`, or send `input_audio.url` and let the proxy download and convert it to mp3. - Streamed chat completions are passed through directly, so proxy-hosted media URLs are only added on non-stream responses. - Proxy-hosted media files are stored in memory and expire after `MEDIA_TTL_SECONDS`. - The demo UI in `public/chatclient/` assumes the proxy is available on the same origin unless you change the endpoint field manually. - Keep modules small and focused; this project follows the principle of simple modules with clear responsibility.