Skip to main content
POST
/
Sync player information
curl --request POST \
  --url https://{publisher-server}/{personalization-endpoint}/ \
  --header 'Content-Type: application/json' \
  --header 'signature: <signature>' \
  --header 'x-publisher-token: <x-publisher-token>' \
  --data '{
  "playerId": "<string>"
}'
{
  "version": 2,
  "logo": "MY_LOGO_ASSET_ID",
  "status": "valid",
  "sessionMetadata": {},
  "profileFrameId": "profileFrame123",
  "playerLevelName": "playerLevelName",
  "bannerExternalId": "playerLevelAssetId",
  "playerLevel": {
    "assetId": "playerLevel1",
    "text": "10%",
    "endsIn": 1728283121000
  },
  "playerLevelBanners": [
    {
      "assetId": "<string>",
      "designId": "<string>",
      "text": [
        {
          "id": "<string>",
          "content": "<string>"
        }
      ],
      "endsIn": 123
    }
  ],
  "offersOrder": "priceLowToHigh",
  "sectionsOrder": [
    "<string>"
  ],
  "segments": [
    "<string>"
  ],
  "focus": {
    "publisherBundleId": "bundle123"
  },
  "attributes": {},
  "balances": [
    {
      "publisherProductId": "product123",
      "quantity": 5
    }
  ],
  "offers": [
    {
      "publisherOfferId": "offer123",
      "endsIn": "1743077489",
      "offerDescriptionOverride": "<string>",
      "offerDesignOverride": {
        "offerDesignSubtitleTextOverride": "<string>",
        "offerDesignId": "<string>",
        "offerBackgroundImageOverride": "<string>"
      },
      "productSale": {
        "amountBeforeSale": 123,
        "sale": 123,
        "type": 123
      },
      "priceDiscount": {
        "priceBeforeDiscount": 100,
        "discount": 20,
        "type": "percentage"
      },
      "badges": [
        {
          "publisherBadgeId": "badge123",
          "position": "center",
          "ribbonTextOverride": "<string>"
        }
      ],
      "dynamicOfferUi": {
        "badges": [
          {
            "publisherBadgeId": "badge123",
            "position": "center",
            "ribbonTextOverride": "<string>"
          }
        ],
        "salePercentage": 123,
        "amountBeforeSale": 123,
        "salePercentageDisplayType": "<string>",
        "offerDesignId": "<string>"
      },
      "productsSequence": [
        {
          "index": 123,
          "productSale": {
            "amountBeforeSale": 123,
            "sale": 123,
            "type": 123
          },
          "priceDiscount": {
            "priceBeforeDiscount": 100,
            "discount": 20,
            "type": "percentage"
          },
          "badges": [
            {
              "publisherBadgeId": "badge123",
              "position": "center",
              "ribbonTextOverride": "<string>"
            }
          ],
          "products": [
            {
              "publisherProductId": "product123",
              "quantity": 2,
              "priority": "Main",
              "traits": [
                {
                  "assetId": "burn_damage_icon",
                  "text": "Burn Damage"
                }
              ],
              "rarityProductInfo": {
                "stars": 5,
                "tooltip": [
                  {
                    "sectionName": "Special Offers",
                    "products": [
                      "<any>"
                    ]
                  }
                ]
              }
            }
          ]
        }
      ]
    }
  ]
}
Note: You can read more about Personalization (formerly Player Info Sync) in the Guides section.

Headers

x-publisher-token
string
required

Publisher token.

signature
string
required

The signed payload.

Body

application/json
playerId
string
required

The playerId that was returned by the publisher in the player auth phase

Response

200 - application/json

Successful operation

status
enum<string>
required

Indicates if the request was valid or invalid

Available options:
valid,
invalid
Example:

"valid"

sessionMetadata
object
required

Container for storing any pertinent information related to the player's session. Sent back in the Player Orders Reporting web-hook, and Personalization API (if enabled).

offers
object[]
required
version
integer

The used version. In this case, the value is ‘2’

Example:

2

Logo ID provided when a file is uploaded to the Assets Library. Use this to display a logo in your web store.

Example:

"MY_LOGO_ASSET_ID"

profileFrameId
string

Corresponds to the profile frame picture ID uploaded to the asset library in Appcharge's dashboard. Displayed above the user's profile picture.

Example:

"profileFrame123"

playerLevelName
string

Aligns with the player level picture name/ID uploaded to the asset library in Appcharge's dashboard. Displayed alongside the footer.

Example:

"playerLevelName"

bannerExternalId
string

Aligns with the banner asset ID uploaded to the asset library in Appcharge’s dashboard. Displayed at the top of the screen.

Example:

"playerLevelAssetId"

playerLevel
object

Presents discounts related to the player’s level.

playerLevelBanners
object[]

List of banners to display to players based on their game level.

offersOrder
enum<string>
default:priceLowToHigh

Defines the order of offers.

Available options:
publisherOrder,
priceHighToLow,
priceLowToHigh
sectionsOrder
string[]

An array of publisher’s section ids that defines the order of sections for the store.

segments
string[]

The list of segments associated with the player.

focus
object

Customize which offer you want to focus on.

attributes
object

A set of custom key-value pairs that you can define to tag players for segmentation and A/B testing. These attributes can then be used to filter players in the Publisher Dashboard.

Example: { "BF_test": "test", "monetization_persona": "non_payer" }

balances
object[]

A list of product balances of the player.

I