curl --request POST \
--url https://api.example.com/cabinet/auth/account/link/server-complete \
--header 'Content-Type: application/json' \
--data '
{
"code": "<string>",
"state": "<string>",
"provider": "google",
"device_id": "<string>"
}
'{
"success": true,
"provider": "<string>",
"message": "<string>",
"merge_required": false,
"merge_token": "<string>"
}Complete OAuth account linking without JWT.
Authenticates via the one-time state token stored in Redis during link_provider_init. Used when OAuth opens in an external browser (e.g., from Telegram Mini App). Provider is resolved from the state token if not explicitly provided.
curl --request POST \
--url https://api.example.com/cabinet/auth/account/link/server-complete \
--header 'Content-Type: application/json' \
--data '
{
"code": "<string>",
"state": "<string>",
"provider": "google",
"device_id": "<string>"
}
'{
"success": true,
"provider": "<string>",
"message": "<string>",
"merge_required": false,
"merge_token": "<string>"
}Authorization code from provider
1 - 2048CSRF state token
1 - 128OAuth provider name (resolved from state if omitted)
google, yandex, discord, vk Device ID from VK ID callback
256