#!/usr/bin/env python3 """Validate OpenRouter auth through the user-filtered models endpoint.""" from __future__ import annotations import os import sys from pathlib import Path import httpx from dotenv import load_dotenv def main() -> int: project_dir = Path(__file__).resolve().parents[1] load_dotenv(project_dir / ".env", override=True) api_key = os.getenv("OPENROUTER_API_KEY", "").strip() base_url = os.getenv("OPENROUTER_BASE_URL", "https://openrouter.ai/api/v1").rstrip("/") if not api_key: print("OpenRouter key: MISSING", file=sys.stderr) return 2 try: response = httpx.get( f"{base_url}/models/user", headers={"Authorization": f"Bearer {api_key}"}, timeout=30, ) except httpx.HTTPError as exc: print(f"OpenRouter key check: NETWORK ERROR ({type(exc).__name__})", file=sys.stderr) return 3 if response.status_code == 200: data = response.json().get("data") or [] model_ids = {str(item.get("id") or "") for item in data} configured_model = os.getenv("CODEX_MODEL", "").strip() print("OpenRouter key: VALID") print(f"User-visible models: {len(model_ids)}") if configured_model: print(f"Configured model available: {configured_model in model_ids} ({configured_model})") return 0 message = "unknown error" try: payload = response.json() error = payload.get("error") or payload.get("message") or {} message = error.get("message", "unknown error") if isinstance(error, dict) else str(error) except ValueError: pass print(f"OpenRouter key: INVALID (HTTP {response.status_code}: {message[:200]})", file=sys.stderr) return 1 if __name__ == "__main__": raise SystemExit(main())