Xsolla-logo

Overview

This section describes API calls for working with Login. Set up your Login project in Publisher Account before sending requests.

IP addresses

The full list of IP addresses that login.xsolla.com may use:

  • 34.94.0.85
  • 34.94.14.95
  • 34.94.25.33
  • 34.94.115.185
  • 34.94.154.26
  • 34.94.173.132
  • 34.102.48.30
  • 35.235.99.248
  • 35.236.32.131
  • 35.236.35.100
  • 35.236.117.164

Download API definition

You can download the API definition in two formats:

Glossary

You have access to the following Login project types in Publisher Account:

  • Standard Login project
  • Shadow Login project

To find more information on it, see Cross-platform account feature.

Rate limits

Are the restrictions applied by Xsolla API on the frequency of access by a user within a defined timeframe.

Standard Login project

Is a Login project that is used to store main accounts.

Shadow Login project

Is a Login project that is used to store platform accounts.

Main account

Is an account type that is created in a standard Login project and linked to platform accounts. The main account is used to identify the player on different platforms.

Platform account

Is an account type that is created in a shadow Login project and connected to a definite publishing platform. The platform account can’t be linked to another platform account. Also, you can’t unlink the accounts from a main account.

Publishing platform

Is a game platform that is used for game distribution (e.g. Steam, PlayStation, Xbox, etc.).

Authentication

Login API supports the following token types:

Authentication schemes

You can determine whether an API call is client or server-side by the scheme of authentication:

  • Client-side — are called without authentication or with the Authorization header: Bearer <user_JWT> header, where <user_JWT> — is the user token.
  • Server-side API calls for implementing the user flow — are called with the header: X-SERVER-AUTHORIZATION: <server_JWT>, where <server_JWT> — is the server token.

Getting a user token

To get the token, send one of the following requests:

After JWT authentication, the user is redirected to the Callback URL with a token in a query-parameter: <Callback URL>?token=<User token (JWT)>.

After OAuth 2.0 protocol-based authentication, send the Generate JWT request to the Xsolla Login server to exchange the received code parameter for a user token (access_token).

Getting a server token

To get a server token:

  1. Set up server OAuth 2.0 client.
  2. Generate server JWT.

Set up server OAuth 2.0 client

  1. Open your project in Publisher Account and go to the Login section.
  2. Click Configure in the panel of a Login project.
  3. Go to the Security block and select the OAuth 2.0 section.
  4. Click Add OAuth 2.0 Client.
  5. Check the Server (server-to-server connection) box.
  6. Specify Token lifetime.
  7. Click Connect.
  8. Copy and save the client ID and secret key.

Generate server JWT

On the back end of your application, implement a method to get the server JWT using the Generate JWT API call. The request must contain the following parameters:

  • grant_type is the type of getting JWT, pass the client_credentials value.
  • client_secret is the secret key that is received when you set up the server OAuth 2.0 client.
  • client_id is the client ID received when you set up the server OAuth 2.0 client.

Rate limits

To prevent Xsolla system overloads and protect against sudden spikes in incoming traffic, Xsolla limits the number of requests received by the Xsolla API within a specified period of time. If the limit is exceeded, the Xsolla API returns an HTTP response with the 429 status code.

Rate limits vary by method, IP-address, authentication scheme, and other factors.

Rate limits for server-side methods are applied to methods with server-side authentication — methods that are called with the X-SERVER-AUTHORIZATION: <server_JWT> header, where <server_JWT> is the server token.

Rate limits for client-side methods are applied to methods without authentication or with client-side authentication — methods that are called with the Authorization: Bearer <user_JWT> header, where <user_JWT> is the user token.

Example of a method with server-side authentication: Example of a method with server-side authentication Example of a method with client-side authentication: Example of a method with server-side authentication

Rate limits for client-side methods do not change and are necessary to prevent brute-force attacks. The maximum request rate for server-side methods is higher than for client-side methods. You can refer to the recommendations on how to manage rate limits in the documentation.

Note In certain cases, it is possible to adjust the rate limits by request. To request the rate limits adjustment, contact your Customer Success Manager or email csm@xsolla.com.

JWT structure

Every token has a JWT format and contains a definite information in a payload.

User JWT

User JWT is a token received as a result of authentication or registration. A token payload contains information about the user and authentication call.

Getting a user token via the OAuth 2.0 protocol requires an OAuth 2.0 client. The user token is passed in the Authorization: Bearer <JWT> header.

Main claims

A token will contain the main claims after authentication or email address confirmation. Presence of these claims does not depend on the user database and authentication call.

 
Claim Type Required Description
exp Unix Timestamp Yes Date and time of token expiration. Default expiration time is 24 hours. You can change expiration time for every Login project.
iss string Yes Service that signed the token: https://login.xsolla.com.
iat Unix Timestamp Yes Date and time of giving the token.
sub string (UUID) Yes User ID written on the Xsolla Login server side.
groups array Yes

The list of groups the user is in. Every group is written in the following format:

  • id — group ID
  • name — group name
  • is_default — shows whether the group is default or not (true or false values).

There can be only one default group. This group initially includes all users before they are distributed into different groups.

xsolla_login_project_id string (UUID) Yes Login project ID.
type string

Authentication option:

  • xsolla_login — login via username/email and password.
  • social — social login
  • email — passwordless login via one-time code received by email.
  • phone — passwordless login via one-time code received by SMS.
  • firebase — login via username/email and password when the user data storage is Firebase.
  • playfab — login via username/email and password when the user data storage is PlayFab.
  • proxy — login via username/email and password when the user data storage is custom.
  • device — login with device ID.
  • server_custom_id — login with custom ID.

There can be only one default group. This group initially includes all users before they are distributed into different groups.

avatar string User avatar URL.
username string Username.
publisher_id integer ID of a merchant who owns a Login project.
email string User email address.
payload string Additional information that is passed in the payload parameter during authentication.
promo_email_agreement boolean

May have one of the following values:

  • true if the user agrees to receive a newsletter.
  • false otherwise.
Has the true value by default.

To add the feature to the registration form of the Login widget:

  • Contact your Account Manager if you use Widget 2.0.
  • Add the fields parameter with the promo_email_agreement value to the initialization code if you use the previous version of the widget.

connection_information string Shows whether the user confirmed their birth date or not. Confirmation is made via the okname service.

PlayFab storage

Claims that are contained in the token after authentication if you use PlayFab storage.

Claim Type Required Description
external_account_id string Yes User PlayFab ID.
session_ticket string Yes

A SessionTicket parameter received during an authentication request or requests to the PlayFab API.

A token contains the claim if you authenticate users via the OAuth 2.0 protocol and pass the playfab value to the scope parameter.

entity_token string Yes An EntityToken.EntityToken parameter.
entity_type string Yes An EntityToken.Entity.Type parameter. Can have only the title_player_account value.
entity_id string Yes An EntityToken.Entity.Id parameter.

Custom storage

Claims that are contained in the token after authentication if you use custom storage.

Claim Type Required Description
provider string Yes Name of a social network used for authentication. If the user authenticates via username and password, the claim has the xsolla value.
external_account_id string User ID on your server side.
partner_data Data of any type returned by your server in the response body during authentication. To enable the transmission of this claim, contact your Customer Success Manager or email to csm@xsolla.com
social_access_token Access token of the social network through which the user was authenticated. To enable the transmission of this claim, contact your Customer Success Manager or email to csm@xsolla.com.

Social authentication

Claims that are contained in the token after authentication via a social network. Presence of these claims does not depend on the user database.

Claim Type Required Description
provider string Yes Name of a social network used for authentication.
id string Yes User ID in a social network.
is_cross_auth boolean Shows that the silent authentication request is in progress.
social_access_token string Social network account access_token parameter used for authentication. Contact your Account Manager to set up the feature.
picture string (URL) Link to the user profile picture in a social network.
birthday date (RFC3339) User birth date in a social network.
gender string User gender in a social network.
name string User nickname in a social network.

Authentication via the OAuth 2.0 protocol

Claims that are contained in the token after OAuth 2.0 authentication.

Claim Type Required Description
jti string Yes Unique token ID.

Authentication via a phone number

Claim which is contained in the token after authentication via a phone number.

Claim Type Required Description
phone_number string Yes User's phone number used for authentication. The phone number format based on the country code, area code, and line number without any dividers.

Server JWT

The server token is passed in the X-SERVER-AUTHORIZATION header.

The token payload contains information about resources owned by the OAuth 2.0 client. The token has access to calls with server-based authentication for these resources.

Claim Type Required Description
xsolla_login_project_id string (UUID) Yes ID of a Login project that owns the OAuth 2.0 client.
resources array Yes

List of resources owned by a OAuth 2.0 client. Possible types of resources:

  • publisher_id — resources of a merchant who owns the Login project
  • publisher_project_id — resources of a project in Publisher Account.

Every group is written in the following format:

  • name — resource type
  • value — resource ID

jti string Yes Unique token ID.

JWT validation

To validate the JWT, use the following Login API calls:

Notice

Do not reveal your secret key to anyone. If it was compromised, please update it.

Errors

In case of error responses the Xsolla Login server returns a JSON object with the following fields:

Field Type Description
code string Xsolla Login server error code.
description string Error description. The text is always in English. Do not use this text in case of an error, as the value can change in the future.
{
  "error": {
    "code": "000-000",
    "description": "description"
  }
}
Error Code Description Recommendation
002-016 Invalid JWT. The user should try to log in again.
002-027 Parameter is invalid. Make sure all request parameters are correct.
002-028 Parameter was not passed. Make sure all required parameters are provided.
002-040 This user is banned. The user should contact the game support team.
002-043 This phone number cannot receive SMS. Use a different number. The user should try another phone number that can receive SMS.
002-050 User MFA settings have not changed. The error occurs when trying to enable two-factor authentication if it's already enabled, or disable it if it's already disabled.
002-056 Invalid phone number. Verify the number or try another one. The user should verify the phone number or enter a different one.
002-057 Too many login attempts. The user should try again later. If you believe this error should not occur, please contact the integrator team in any messenger.
002-058 You exceeded login attempts limit. To unblock your account, follow the link in the email that we sent or reset your password. The user should use the link in the email to unblock their account or reset the password.
002-060 User younger than required age. Inform the user of the age restrictions.
003-001 Incorrect email address/username or password. The user should verify the entered information and try again.
003-002 User is not signed up. The user should sign up in the game to continue.
003-003 User with this username already exists. Try another username. The user should try a different username.
003-004 User with this email address already exists. Try another email address. The user should use a different email address.
003-005 Email address does not exist. Try another email address. The user should try a different email address.
003-007 Account not activated. Please confirm email address. The user should confirm their email address to activate the account. If they haven't received a confirmation email, they should check the spam folder.
003-008 Changing email address not allowed. Changing the email address is not allowed.
003-009 User search request wrong. The search failed for technical reasons, please try again later.
003-010 Changing birth date is unavailable. Changing the birth date is not allowed.
003-011 Email address not confirmed. Try another email address or confirm this one. The user should confirm the email address or use another one that has not been previously used during registration.
003-012 User with specified phone number already exists. The user should confirm the phone number or use another one that has not been previously used during registration.
003-019 Login with this project ID not found. Check the existence of the authentication variant with the passed ID.
003-020 Call unavailable for this Login project. Check the authorization option settings in your Publisher Account.
003-021 Logging in via username/password not allowed. The user should contact game support.
003-022 Incorrect project configuration. Verify the authorization option settings in your Publisher Account.
003-023 Signing up via username/password not allowed. Registration is not allowed for this authorization option. The user should contact game support.
003-030 Link has expired. Please perform password recovery again. The password reset link has expired or is incorrect. The user should attempt to reset the password again.
003-049 Too many attempts to use confirmation code. Try again later. The user should try again later.
007-001 Login via phone is currently unavailable in your country. Please try a different login method. The user should use an alternative login method.
008-001 Passwordless login URL not configured. Add the correct login URL in the authorization option settings in your Publisher Account (section User database > Storage > Custom storage).
008-002 User verification URL not configured. Add the correct user verification URL in the authorization option settings in your  Publisher Account (section User database > Storage > Custom storage).
008-003 New user URL not configured. Add the correct URL in the authorization option settings in your Publisher Account (section User database > Storage > Custom storage).
008-004 Password reset URL not configured. Add the correct password reset URL in the authorization option settings in your  Publisher Account (section User database > Storage > Custom storage).
008-005 PlayFab Title ID invalid. Ensure the correct Title ID is specified in the authorization option settings in your Publisher Account (section User database > Storage).
008-006 PlayFab API key invalid. Ensure the PlayFab API key is valid.
008-008 Invalid response from your API. It must contain user ID as "accountID" response body parameter. Ensure the server returns the accountID parameter in the response body.
008-009 Invalid URL in Custom storage settings. Verify the URLs specified in the Custom storage settings in the authorization option in your Publisher Account  (section User database > Storage > Custom storage).
008-011 Set new password page URL not configured. Ensure that the callback URL for password reset is specified in the authorization option settings in your Publisher Account (section Password settings).
008-013 Consent page URL not configured or invalid. Ensure that a link to the user agreement is specified in the authorization option settings in your Publisher Account (section Legal Terms > Policies and Agreements).
008-014 Okta integration not completed. Contact the integration team through any messenger.
008-015 SAML integration not completed. Contact the integration team through any messenger.
008-016 Firebase API key not set. Add the API key to the settings in your Publisher Account (section Legal Terms > Policies and Agreements).
010-004 Service temporarily unavailable. Try again later. The user should try again later.
010-005 Allowable number of requests exceeded. Try again later. The user should try again later.
010-006 If this social profile is unlinked, no authentication methods will be available. The user should add another authentication method before unlinking the social network.
010-007 Incorrect CAPTCHA input. Try again. The user should complete the CAPTCHA again.
010-010 Invalid confirmation code. The user should verify the code and try again.
010-014 Your code is expired. Return to the login page and log in again. The user should log in again from the login page.
010-015 Something went wrong during authentication with this social network. Try again later. The user should try again later.
010-016 This social account is already linked to another user. The user should use a different social account. If they believe this is an error, they should contact the integration team through any messenger.
010-017 Client authentication failed. Some request parameters are missing in request or have invalid values. Verify the correctness of the request parameters being sent.
010-019 Client authentication failed. Client with this client_id value does not exist. Ensure that a client with the provided client_id exists.
010-020 Client authentication failed. Parameter scope is invalid or malformed. Ensure that the provided scope parameter is correct. Refer to the instructions for detailed setup information.
010-021 Client authentication failed. Parameter response_type is invalid or malformed. You should pass value of code parameter to response_type. Ensure that the value of the response_type parameter is set to "code".
010-022 Client authentication failed. Parameter state is missing or its value has less than 8 characters. Ensure that the state parameter is present and consists of at least 8 characters.
010-023 Client authentication failed. Authorization code, authorization grant types, or refresh token are invalid or expired. Also this error is returned when the redirect_uri given in authorization grant type does not match the URI provided in access token request. Ensure that the authorization code is valid and not expired, and that the redirect_uri parameter contains an authorized URL. Refer to the  instructions for detailed setup information.
010-026 The resource owner or authorization server denied the request. Ensure that you have sufficient permissions to access the resource.
010-030 Cross social network is not enabled for this Login. Ensure that cross-authentication is enabled for the authorization option. Refer to the instructions for detailed setup information.
010-031 Social provider already exists. The error occurs when attempting to connect a social network that is already enabled.
010-032 Social network is not enabled for this Login. You can enable it in your Xsolla Publisher Account > Login Project > Social connections. Ensure that the social network is enabled and configured in the authorization option settings in your Publisher Account (section Authorization via Social Networks).
010-033 This call is temporary unavailable. The user should try again later.
010-035 Dependency service is unavailable The user should try again later.
010-045 Account with this social provider email address already exists. The user should use a different social account for registration.
030-024 Password recovery is not allowed. The user should contact the game support team.
040-001 Email address must be 254 characters or shorter. The user should enter an email address containing no more than 254 characters.
040-002 Username of the email address is invalid. Try another email address. The user should enter a valid email address.
040-003 Local part of the email address is too long. The user should enter a different email address.
040-004 Email address domain is invalid. Try another email address. The user should contact Xsolla support.
040-005 Email address should contain one @ character only. (E.g., username@example.com) The user should enter an email with only one @ character.
040-006, 040-007, 040-008 Email address domain is invalid. Try another email address. The user should contact Xsolla support.
040-009 Email address domain doesn’t exist. Try another email address. The user should enter an email with an existing domain.
040-010 Email address domain is not allowed. Try another email address. The user should contact Xsolla support.
010-018 Email address is invalid. Try another email address. The user should enter a different email address.
300-003 Allowable number of requests exceeded. Try again later. The user should try again later.
300-005 Failed to resend code. Try again later. The user should try again later.
300-006 Incorrect confirmation code. Check the code that you received and try again. The user should verify and re-enter the confirmation code.
300-008 You've exceeded the maximum number of attempts. Use the new code sent to your email or phone. The user should use the new code sent to their email or phone.
003-007 User account not confirmed. The user should confirm their email address to activate the account. If they haven't received a confirmation email, they should check the spam folder.
003-025 Error occurred while getting OAuth 2.0 access token. The user should try a different authentication method.
003-040 Unauthorized user. The user should log in again.
003-033 Mismatch project type. Ensure that shadow authentication is used for the authorization option.
2002-0001 Duplicated attributes. Make sure that the attribute being created has not been previously added to the user.