{"service":"chatgpt-bridge","transport":"REST; debug bridge connects at ws://<host>/ext, ask() extension at ws://<host>/ask-ext","auth":"Authorization: Bearer <token> or ?token= — a shared secret is baked in by default; override via the BRIDGE_TOKEN env + the extension popup","endpoints":{"POST /api/ask {text,model?,temporary?,system?,history?,reasoningEffort?,timeout?,raw?}":"headless ask() via the standalone extension — reuses ChatGPT's own pipeline, returns the answer","GET  /api/ask/status · POST /api/ask/arm":"ask() extension connection + ready tabs; arm attaches/injects","GET  /api/ask/models":"picker catalogue: models + thinking-effort presets (read from the tab cache)","GET  /v1/models · POST /v1/chat/completions":"OpenAI-compatible model list + chat completions (maps to ask())","POST /v1/responses {model,input,instructions?,reasoning:{effort}?,background?,stream?}":"OpenAI Responses API — background/long-run (>1h) that survives a tab reload; recommended for Pro/research","GET  /v1/responses/:id[?stream=true&starting_after=] · POST /v1/responses/:id/cancel · DELETE /v1/responses/:id":"poll / stream+resume / cancel / delete a response","GET  /api/status":"service + extension + attach status","POST /api/eval {code,expression?}":"run JS in the page (MAIN world), return value","POST /api/dom {selector,limit?,includeHtml?}":"structured snapshot of matching elements","POST /api/html {cap?} · POST /api/text {cap?}":"document outerHTML / innerText","GET  /api/network?q=&type=&limit= · GET /api/network/:id":"captured requests + bodies","GET  /api/console · GET /api/chatgpt/events":"captured console / SSE events","POST /api/cdp {method,params}":"raw Chrome DevTools Protocol call","POST /api/chatgpt/send {text,wait?} · GET /api/chatgpt/messages · POST /api/chatgpt/stop":"chat control","POST /api/navigate {url} · POST /api/screenshot {full?}":"page control","GET  /api/tabs · POST /api/attach{tabId?} · POST /api/detach{tabId?}":"tabs + debugger","POST /api/clear":"clear the capture store"}}