| # 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. | |