| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- #!/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())
|