POST /game/pc/auth/login-session
Game clientThe client generates a PKCE pair (code_verifier → code_challenge), then calls this endpoint with an HTTPS JSON body.
Body fields
`client_veri_enc` — PKCE code_challenge
`client_verifier` — PKCE code_verifier (plaintext)
`client_secret` · `pc_oauth_state`
Send `client_verifier` only here. The server keeps it until the Google token exchange.
Do not put `client_verifier` in later JSON bodies (e.g. `access-and-refresh-tokens`).
Body fields
`client_veri_enc` — PKCE code_challenge
`client_verifier` — PKCE code_verifier (plaintext)
`client_secret` · `pc_oauth_state`
Send `client_verifier` only here. The server keeps it until the Google token exchange.
Do not put `client_verifier` in later JSON bodies (e.g. `access-and-refresh-tokens`).
Live
https://api.fetamix.com/api/v1/game/pc/auth/login-sessionSandbox
https://api-sandbox.fetamix.com/api/v1/game/pc/auth/login-sessionJSON body fields
| Name | Required | Description |
|---|---|---|
| client_veri_enc | Yes | PKCE code_challenge, Base64URL(SHA256(verifier)) — client-generated |
| client_verifier | Yes | PKCE code_verifier (plaintext). Send only on login-session; not on access-and-refresh-tokens |
| client_secret | Yes | Console-issued game secret — server resolves game_id |
| pc_oauth_state | Yes | Unpredictable opaque nonce. Must differ from `client_veri_enc` (PKCE code_challenge). |
Example request body
{
"client_veri_enc": "BASE64URL(SHA256(code_verifier))",
"client_verifier": "<PKCE code_verifier (plaintext)>",
"client_secret": "<console-issued game client_secret>",
"pc_oauth_state": "<opaque nonce, must differ from client_veri_enc>"
}Response — example success body
{
"success": true,
"session_id": "hex…",
"expires_in": 600,
"google_oauth_start_url": "https://api…/api/v1/game/pc/auth/google-oauth?session_id=…"
}Response fields
| Name | Required | Description |
|---|---|---|
| success | Yes | true |
| session_id | Yes | Opaque login session id; it appears inside `google_oauth_start_url`. Open that full URL in the browser without editing it. |
| expires_in | Yes | Session / URL validity in seconds (~10 min) |
| google_oauth_start_url | Yes | What it is The Fetamix API entry URL for the system browser. Shape: `GET /game/pc/auth/google-oauth?session_id=…` — open the full string as returned. Do not Do not hand-build or open Google’s OAuth sign-in URL first. Flow When the browser hits this URL, the server 302s to Google’s OAuth sign-in step (after one hop through Fetamix). On PC Avoid in-app WebView—Google often blocks or delivers an incomplete OAuth flow there. |
Diagrams may omit these fields: they are HTTP conveniences (opaque session key and ready-made URL) on top of the same flow.