autoreg-skills-max: initial public release (restored, redacted, hardened)
This commit is contained in:
108
skills/reverse-proxy-gateway/references/xai-oauth-flow.md
Normal file
108
skills/reverse-proxy-gateway/references/xai-oauth-flow.md
Normal file
@@ -0,0 +1,108 @@
|
||||
# xAI OAuth PKCE Flow
|
||||
|
||||
Complete constants and flow for xAI (Grok) OAuth auto-registration. Mirrors 9router's implementation.
|
||||
|
||||
## Constants
|
||||
|
||||
```python
|
||||
XAI_CLIENT_ID = "b1a00492-073a-47ea-816f-4c329264a828"
|
||||
XAI_ISSUER = "https://auth.x.ai"
|
||||
XAI_SCOPE = "openid profile email offline_access grok-cli:access api:access"
|
||||
XAI_LOOPBACK_PORT = 56121
|
||||
XAI_CALLBACK_PATH = "/callback"
|
||||
XAI_REDIRECT_URI = f"http://127.0.0.1:{XAI_LOOPBACK_PORT}{XAI_CALLBACK_PATH}"
|
||||
XAI_PKCE_VERIFIER_BYTES = 96
|
||||
XAI_API_BASE = "https://api.x.ai/v1"
|
||||
XAI_USER_AGENT = "grok-cli/9router"
|
||||
```
|
||||
|
||||
## OIDC Discovery
|
||||
|
||||
```
|
||||
GET https://auth.x.ai/.well-known/openid-configuration
|
||||
→ authorization_endpoint, token_endpoint
|
||||
Static fallbacks:
|
||||
authorize: https://auth.x.ai/oauth2/authorize
|
||||
token: [REDACTED]
|
||||
```
|
||||
|
||||
## OAuth Flow
|
||||
|
||||
### 1. PKCE Setup
|
||||
|
||||
```python
|
||||
verifier = base64url(secrets.token_bytes(96)) # 96 bytes, no padding
|
||||
challenge = base64url(sha256(verifier.encode()))
|
||||
state = secrets.token_urlsafe(32)
|
||||
```
|
||||
|
||||
### 2. Authorization URL
|
||||
|
||||
```
|
||||
GET {authorize_url}?
|
||||
response_type=code
|
||||
client_id=b1a00492-073a-47ea-816f-4c329264a828
|
||||
redirect_uri=http://127.0.0.1:56121/callback
|
||||
scope=openid profile email offline_access grok-cli:access api:access
|
||||
code_challenge={challenge}
|
||||
code_challenge_method=S256
|
||||
state={state}
|
||||
nonce={hex}
|
||||
plan=generic
|
||||
referrer=cli-proxy-api
|
||||
```
|
||||
|
||||
### 3. Token Exchange
|
||||
|
||||
```python
|
||||
POST {token_url}
|
||||
Content-Type: application/x-www-form-urlencoded
|
||||
|
||||
grant_type=authorization_code
|
||||
client_id=b1a00492-073a-47ea-816f-4c329264a828
|
||||
code={code}
|
||||
redirect_uri=http://127.0.0.1:56121/callback
|
||||
code_verifier={verifier}
|
||||
|
||||
# Response:
|
||||
# {"access_token": "xai-...", "refresh_token": "...", "expires_in": 3600, ...}
|
||||
```
|
||||
|
||||
### 4. Token Refresh
|
||||
|
||||
```python
|
||||
POST {token_url}
|
||||
grant_type=refresh_token
|
||||
client_id=b1a00492-073a-47ea-816f-4c329264a828
|
||||
refresh_token={refresh_token}
|
||||
```
|
||||
|
||||
## API Usage
|
||||
|
||||
```python
|
||||
POST https://api.x.ai/v1/chat/completions
|
||||
Authorization: Bearer {access_token}
|
||||
Content-Type: application/json
|
||||
User-Agent: grok-cli/9router
|
||||
|
||||
{"model": "grok-4.6", "messages": [{"role": "user", "content": "..."}], "stream": true}
|
||||
```
|
||||
|
||||
## Grok 4.6 Model Details
|
||||
|
||||
- Released: August 12, 2026
|
||||
- Context: 500,000 tokens
|
||||
- Pricing: $2/$0.50/$6 per 1M tokens (input/cached/output) below 200K
|
||||
- Reasoning: low, medium, high (default), xhigh
|
||||
- Modalities: text + image input, text output
|
||||
- API: Chat Completions + Responses API
|
||||
- Also available: grok-build-0.1 (coding agent model)
|
||||
|
||||
## Gateway Implementation
|
||||
|
||||
See `gw46.py` at `C:\Users\User\Documents\grok46gw\gw46.py` for a complete FastAPI gateway:
|
||||
- Key pool (env vars + SQLite DB + OAuth tokens)
|
||||
- Round-robin key selection
|
||||
- OpenAI-compatible /v1/chat/completions and /v1/responses
|
||||
- OAuth auto-registration web flow at /oauth/register
|
||||
- Account management at /accounts
|
||||
Reference in New Issue
Block a user