{"info":{"description":"Search aggregation, AI chat, deep research.","title":"rss API","version":"1.0.0"},"openapi":"3.0.3","paths":{"\/openapi.json":{"get":{"summary":"Machine-readable OpenAPI 3.0 document.","parameters":[],"responses":{"200":{"description":"Success"}}}},"\/":{"get":{"summary":"HTML search UI with an inlined API documentation section and a Deep Research checkbox.","responses":{"200":{"description":"Success"}},"parameters":[{"required":false,"description":"Search query","in":"query","name":"query"},{"required":false,"description":"Result count, 1-100, default 10","name":"count","in":"query"},{"required":false,"description":"Fetch full page content (true\/false)","in":"query","name":"content"},{"required":false,"description":"Run AI tool-calling mode over the results (true\/false)","name":"ai","in":"query"},{"required":false,"description":"Run the deep research pipeline instead of a plain search (true\/false)","name":"deep","in":"query"},{"required":false,"description":"web (default) or images","name":"type","in":"query"},{"required":false,"description":"Set to false to bypass all cache layers","name":"cache","in":"query"}]},"post":{"summary":"HTML search UI with an inlined API documentation section and a Deep Research checkbox.","responses":{"200":{"description":"Success"}},"parameters":[{"required":false,"description":"Search query","in":"query","name":"query"},{"required":false,"description":"Result count, 1-100, default 10","name":"count","in":"query"},{"required":false,"description":"Fetch full page content (true\/false)","name":"content","in":"query"},{"required":false,"description":"Run AI tool-calling mode over the results (true\/false)","name":"ai","in":"query"},{"required":false,"description":"Run the deep research pipeline instead of a plain search (true\/false)","in":"query","name":"deep"},{"required":false,"description":"web (default) or images","in":"query","name":"type"},{"required":false,"description":"Set to false to bypass all cache layers","name":"cache","in":"query"}]}},"\/describe":{"get":{"summary":"Vision describe, by URL query param or uploaded image bytes.","responses":{"200":{"description":"Success"}},"parameters":[{"required":false,"description":"Image URL to describe","name":"url","in":"query"},{"required":false,"description":"Set to false to bypass cache","name":"cache","in":"query"}]},"post":{"summary":"Vision describe, by URL query param or uploaded image bytes.","responses":{"200":{"description":"Success"}},"parameters":[{"required":false,"description":"Image URL to describe","in":"query","name":"url"},{"required":false,"description":"Set to false to bypass cache","in":"query","name":"cache"}]}},"\/static\/*":{"get":{"summary":"Static CSS\/JS assets.","parameters":[],"responses":{"200":{"description":"Success"}}}},"\/chat":{"get":{"summary":"Direct LLM chat completion, no tool-calling, 2-week cache.","responses":{"200":{"description":"Success"}},"parameters":[{"required":true,"description":"User prompt","in":"query","name":"prompt"},{"required":false,"description":"Optional system message (a fixed preamble is always prepended)","name":"system","in":"query"},{"required":false,"description":"Force JSON-only output (true\/false)","name":"json","in":"query"},{"required":false,"description":"Set to false to bypass cache","in":"query","name":"cache"}]},"post":{"summary":"Direct LLM chat completion, no tool-calling, 2-week cache.","responses":{"200":{"description":"Success"}},"parameters":[{"required":true,"description":"User prompt","name":"prompt","in":"query"},{"required":false,"description":"Optional system message (a fixed preamble is always prepended)","in":"query","name":"system"},{"required":false,"description":"Force JSON-only output (true\/false)","in":"query","name":"json"},{"required":false,"description":"Set to false to bypass cache","in":"query","name":"cache"}]}},"\/health":{"get":{"summary":"Provider\/image-provider stats and cache entry counts.","responses":{"200":{"description":"Success"}},"parameters":[]}},"\/stats":{"get":{"parameters":[{"required":false,"description":"Return raw aggregated metrics as JSON instead of HTML","name":"json","in":"query"}],"summary":"SVG-rendered analytics dashboard.","responses":{"200":{"description":"Success"}}}},"\/about":{"get":{"parameters":[],"responses":{"200":{"description":"Success"}},"summary":"Full API documentation (same content block as the bottom of \/)."}},"\/search":{"get":{"summary":"JSON search API.","responses":{"200":{"description":"Success"}},"parameters":[{"required":true,"description":"Search query","in":"query","name":"query"},{"required":false,"description":"Result count, 1-100, default 10","in":"query","name":"count"},{"required":false,"description":"Fetch full page content (true\/false)","in":"query","name":"content"},{"required":false,"description":"Run AI tool-calling mode (true\/false)","name":"ai","in":"query"},{"required":false,"description":"Run deep research (true\/false)","name":"deep","in":"query"},{"required":false,"description":"web (default) or images","name":"type","in":"query"},{"required":false,"description":"Set to false to bypass cache","in":"query","name":"cache"}]}}}}