Appcharge Authentication API

The Authentication API from Appcharge — 2 operation(s) for authentication.

OpenAPI Specification

appcharge-authentication-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Appcharge Assets Authentication API
  version: 1.0.0
  description: Appcharge is a monetization platform for mobile games, providing a direct-to-consumer (D2C) web store, mobile Checkout SDK, and Payment Links so publishers can sell in-game offers outside the app stores. This API covers checkout sessions, refunds, coupons and promo codes, price localization, financial and analytics reporting, web store offers (bundles, daily bonuses, rolling/special offers, progress bars, reward calendars, triggered popups), offer components (products, badges, offer designs), game-portal content, media assets, translations, and player personalization/authentication callbacks. Authentication uses the x-publisher-token header; webhooks are signed with an HMAC-SHA256 signature.
  contact:
    name: Appcharge Developer Support
    url: https://docs.appcharge.com/
  x-apievangelist-source: https://docs.appcharge.com/api-reference (Mintlify embedded OpenAPI fragments)
  x-apievangelist-method: searched
  x-apievangelist-generated: '2026-07-17'
servers:
- url: https://api.appcharge.com
  description: Production
- url: https://api-sandbox.appcharge.com
  description: Sandbox
tags:
- name: Authentication
paths:
  /{YOUR_AUTHENTICATE_PLAYER_ENDPOINT}:
    post:
      tags:
      - Authentication
      summary: Authenticate Player
      description: "<Note> This is a callback API. Appcharge calls this endpoint on your server when specific events occur. </Note> \n\n Notifies your system to authenticate a player in your web store. <br /> <br /> Appcharge calls this endpoint when a player attempts to log in to your web store using one of the configured login methods. Your server identifies the player and responds with either the player data or an authentication error. <br /> <br /> If the response indicates a successful authentication, the player is logged in to the web store."
      operationId: authenticate-player
      parameters:
      - name: x-publisher-token
        in: header
        description: Publisher token.
        schema:
          type: string
      - name: signature
        in: header
        description: The signed payload.
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                authMethod:
                  type: string
                  description: "Authentication method the player used. \n\n **Note:** If the player logged in using either Pre-Authenticated Login or Game Redirect Login, Appcharge sends the value `otp`."
                  enum:
                  - facebook
                  - apple
                  - google
                  - userToken
                  - userPassword
                  - otp
                  example: facebook
                token:
                  type:
                  - string
                  - 'null'
                  description: Authentication token. Used for SSO Login and Player ID Login.
                  example: sdfddtt7
                date:
                  type: string
                  format: date-time
                  description: UTC time when the player tried to log in.
                  example: '2024-07-21T14:17:27.329Z'
                appId:
                  type: string
                  description: App ID in the Publisher Dashboard. Used for the SSO Login method. If no app ID is available, Appcharge sends `"NA"`.
                  example: '611392880818819'
                userName:
                  type:
                  - string
                  - 'null'
                  description: Username the player entered when logging in to the web store.
                  example: expertgamer1979
                password:
                  type:
                  - string
                  - 'null'
                  description: Password the player entered when logging in to the web store.
                  example: 732hf8820pk!
                otp:
                  type:
                  - object
                  - 'null'
                  description: "Additional authentication tokens provided by your game. \n\n **Note:** This field is sent only if the player logged in using Pre-Authenticated Login or Game Redirect Login."
                  properties:
                    playerCode:
                      type: string
                      description: The 4 or 6 digit code used for verifying the player.
                      example: '974018'
                    accessToken:
                      type: string
                      description: Player access token.
                      example: 9ac888fa33412197b
                os:
                  type: string
                  enum:
                  - ios
                  - android
                  - web
                  description: Operating system the player used to log in.
                  example: android
                utmSource:
                  type: string
                  description: Source of the traffic. This is where the player came from before reaching the store.
                  example: Facebook
                utmMedium:
                  type: string
                  description: Marketing channel used to bring in the traffic.
                  example: email
                utmCampaign:
                  type: string
                  description: Marketing campaign identifier associated with the traffic.
                  example: spring_sale.
                sessionId:
                  type: string
                  description: Session ID.
                  example: 2e55b3fc-31ef-6dd7-8161-8aeb376b3a23
                playerLocation:
                  type: object
                  description: Location of the player.
                  properties:
                    countryCode2:
                      type: string
                      description: 'Two-letter country code in [ISO-3166 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format. Example: `US`'
                      example: US
                    state:
                      type: string
                      description: 'Two-letter state code. Example: `NY`'
                      example: NY
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                required:
                - status
                - publisherPlayerId
                - playerName
                properties:
                  status:
                    type: string
                    description: The status of the player authentication. If you pass a value other than `valid`, the API fails.
                    enum:
                    - valid
                    example: valid
                  playerProfileImage:
                    type: string
                    description: Player profile image. If no image is available, an empty string must be provided. In this case, a default image is displayed.
                    example: https://scontent-iad4-1.xx.fbcdn.net/v/t6.30597-1/84628273_176159830277856_972693363922829312_n.jpg?stp=c379.0.1290.1290a_cp0_dst-jpg_s50x50_tt6&ccb=1-7
                  publisherPlayerId:
                    type: string
                    description: Player ID.
                    example: vip2247691
                  playerName:
                    type: string
                    description: Player name.
                    example: Jim Cardashian
                  sessionMetadata:
                    type: object
                    description: An object for passing data related to the player's session. It is returned in the [Grant Award Callback](/../../api-reference/checkout/awards/grant-award-callback), and if enabled, the [Personalization API](/../../api-reference/webstore/personalization/introduction).
                    example:
                      abTest: group1
                      locale: en-US
                  publisherErrorMessageType:
                    type: string
                    enum:
                    - none
                    - plainText
                    - enrichedText
                    description: "Error message type. Supported values: \n + `none`: No error message is provided. \n + `plainText`: A basic error message in plain text. \n + `enrichedText`: A formatted error message in MD format that may contain additional styling or elements."
                    example: plainText
                  publisherErrorMessage:
                    type: string
                    description: Error message.
                    example: Lost internet connection.
                  publisherErrorMessageTitle:
                    type: string
                    description: Error message title displayed to players when a login attempt fails.
                    example: Whoops! Login Failed.
                  playerOverrideCountry:
                    type: string
                    description: Overrides the player's detected location for pricing purposes. Use when the player's country of origin differs from their detected country. Must be a two-letter country code in [ISO-3166 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format.
                    example: CA
  /{YOUR_INITIATE_GAME_AUTH_ENDPOINT}:
    post:
      tags:
      - Authentication
      summary: Initiate Game Auth
      description: <Warning> This API endpoint is only relevant for the Game Redirect Login method. </Warning> <Note> This is a callback API. Appcharge calls this endpoint on your server when specific events occur. </Note> Notifies your system to initiate an authentication session in your game. <br /> <br /> Appcharge calls this endpoint when a player attempts to log in via [Game Redirect Login](/../../guides/webstore/player-authentication/game-redirect-login/about-game-redirect-login). Your server responds with either the data needed to redirect the player to your game for authentication, or an error.
      operationId: game-authentication-endpoint
      parameters:
      - name: x-publisher-token
        in: header
        description: Publisher token.
        schema:
          type: string
      - name: signature
        in: header
        description: The signed payload.
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                device:
                  type: string
                  enum:
                  - DESKTOP
                  - APPCHARGE
                  description: "Device the player used to log in. \n \n  + `DESKTOP`: PCs and laptops. \n + `APPCHARGE`: Mobile."
                  example: DESKTOP
                date:
                  type: string
                  format: date-time
                  description: Date in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.
                  example: '2023-11-07T05:31:56Z'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - deepLink
                - accessToken
                properties:
                  deepLink:
                    type: string
                    description: Deeplink for redirecting the player to your game for authentication.
                    example: https://my-awesome-game/2298/bv45d674?key=549bc5151667f6216629efe46vf7bacd2812d82298
                  accessToken:
                    type: string
                    description: Player access token.
                    example: 9ac8883227afa33412197b
                  desktopAutoRedirect:
                    type: boolean
                    default: false
                    description: 'Whether players logging into the web store on desktop are redirected to the deepLink URL instead of being shown a QR code.


                      When `false` or omitted, these players see a QR code of the deeplink and must scan it with their phone to open the game.'
                    example: true
        '400':
          description: Invalid signature
        '401':
          description: Unauthorized
        '403':
          description: Parameters not correct
components:
  securitySchemes:
    PublisherTokenAuth:
      type: apiKey
      in: header
      name: x-publisher-token
      description: Publisher token, as displayed in the Publisher Dashboard.