File size: 3,263 Bytes
7e55e53
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
"""Static URL table for all upstream XAI / Grok endpoints.

Canonical source of truth for every URL used by the reverse layer.
Protocol modules re-export the subset they need; transport modules
import from protocol β€” this file is the single shared reference.

NOTE: gRPC-Web endpoints (accept_tos, nsfw_mgmt) live on different
hosts (accounts.x.ai, grok.com with gRPC path), listed separately.
"""

BASE       = "https://grok.com"
ASSETS_CDN = "https://assets.grok.com"

# ── App-chat (SSE streaming, new conversation) ──────────────────────────
CHAT              = f"{BASE}/rest/app-chat/conversations/new"

# ── Asset management ─────────────────────────────────────────────────────
ASSETS_UPLOAD     = f"{BASE}/rest/app-chat/upload-file"        # POST (base64 upload)
ASSETS_LIST       = f"{BASE}/rest/assets"                      # GET
ASSETS_DELETE     = f"{BASE}/rest/assets-metadata"             # DELETE /{asset_id}
ASSETS_DOWNLOAD   = ASSETS_CDN                                 # GET /{path}

# ── Rate limits (usage / quota sync) ─────────────────────────────────────
RATE_LIMITS       = f"{BASE}/rest/rate-limits"                 # POST

# ── gRPC-Web endpoints ──────────────────────────────────────────────────
ACCEPT_TOS        = "https://accounts.x.ai/auth_mgmt.AuthManagement/SetTosAcceptedVersion"
NSFW_MGMT         = f"{BASE}/auth_mgmt.AuthManagement/UpdateUserFeatureControls"

# ── Auth REST ────────────────────────────────────────────────────────────
SET_BIRTH         = f"{BASE}/rest/auth/set-birth-date"         # POST

# ── Media (video) ────────────────────────────────────────────────────────
MEDIA_POST        = f"{BASE}/rest/media/post/create"           # POST
MEDIA_POST_LINK   = f"{BASE}/rest/media/post/create-link"      # POST
VIDEO_UPSCALE     = f"{BASE}/rest/media/video/upscale"         # POST

# ── WebSocket endpoints ─────────────────────────────────────────────────
WS_IMAGINE        = "wss://grok.com/ws/imagine/listen"
WS_LIVEKIT        = "wss://livekit.grok.com"

# ── LiveKit ─────────────────────────────────────────────────────────────
LIVEKIT_TOKENS    = f"{BASE}/rest/livekit/tokens"              # POST


__all__ = [
    "BASE", "ASSETS_CDN",
    "CHAT",
    "ASSETS_UPLOAD", "ASSETS_LIST", "ASSETS_DELETE", "ASSETS_DOWNLOAD",
    "RATE_LIMITS",
    "ACCEPT_TOS", "NSFW_MGMT", "SET_BIRTH",
    "MEDIA_POST", "MEDIA_POST_LINK", "VIDEO_UPSCALE",
    "WS_IMAGINE", "WS_LIVEKIT", "LIVEKIT_TOKENS",
]