Skip to main content

S2S API Changelog

2026.10.22

  • Added optional quantity to the items attached to campaign message nodes (email, push, popup, Discord, webhook, and prompt nodes) in create_campaign, update_campaign, get_campaign_graph, and update_campaign_graph
  • Made store_item_id optional on the items attached to campaign message nodes in the same endpoints, so an item can be referenced by item_id alone

2026.10.21

  • Added optional disputes to payments in get_payments, listing each payment's chargebacks with their amounts, status, reason, and fees
  • Added required amount_decimal, the amount in major units of currency, to disputes in get_disputes and to payment refunds in get_payments
  • Added optional amount_usd, the refunded amount booked in USD cents, to payment refunds in get_payments
  • Corrected the documented units of dispute and dispute fee amounts in get_disputes: amount_usd, amount_eur, and the fee amount and fixed_fee are in minor units (cents), not major units

2026.10.20

2026.10.19

2026.10.15

2026.10.14

2026.10.12

2026.10.08

2026.10.05

  • Replaced the sort_field and sort_order query parameters on get_news_list with a single article_sort (newest_first, oldest_first, or manual), and removed the NewsSortField schema
  • Added an optional locale player attribute, accepted by update_player, upsert_player, create_order, and authorize_user, and returned wherever player attributes appear
  • Added optional requirements_expression to virtual currency items returned by get_items and the store item endpoints, defining the rules by which the currency is shown to the player
  • Removed progress_reset_at from pick-one items returned by get_items and the store item endpoints
  • Added the requirements_not_met value to the reward issue_status on get_order and update_order
  • Added optional input and ctx to each validation error in 422 responses on every endpoint, echoing the rejected value and any extra details about the failed check

2026.10.02

2026.09.28

  • Replaced eligibility_rules on subscription offers with a nullable expression, so any rule an Expression can describe decides who gets an offer. The field is gone from get_items and the store item endpoints, along with the SubscriptionOfferEligibility schema
  • Added optional eligible_rewards to create_order, which overrides the virtual currency rewards granted once the order is paid. The response reports each reward as applied, declined, or invalid_amount
  • Added optional mode to bonus_items_settings on store items and store promotions. add stacks the bonus items on top of the store item's own, and the default replace keeps the current behavior
  • Deprecated view_option on items, in requests to create_item, update_item, bulk_create_or_update_items, and bulk_update_items, and wherever an item is returned, including coupons, daily rewards, loyalty tiers, and store items
  • Added optional transparent_background to ImageBannerBlock in page layouts, across create_page, update_page, bulk_update_page, get_pages, get_page, and translate_page

2026.09.24

  • Added upgrade_player_subscription endpoint, which moves a player's subscription to another plan by plan_key or explicit overrides such as amount, cycle_period, and renewal_type. Nothing is charged right away, and the new plan takes effect at the next renewal

2026.09.23

  • Added piggy bank offers — a piggy_bank item type and a PiggyBankRead schema with tiers unlocked by a player custom attribute, returned by get_items and the store item endpoints, where a new object_type field says what each card holds
  • Merged the five expression schemas into one recursive Expression, used by item quantity_expression, news requirements_expression, and campaign variables, and added a function token type. name is no longer required on quantity_expression
  • Added nullable opened_at to orders, the Unix time the player first opened the order's checkout page, on get_orders, get_order, and update_order

2026.09.22

2026.09.21

2026.09.17

  • Bounded the pagination parameters on the list endpoints — limit now caps at 300 on 26 endpoints and offset must be 0 or greater on 24 of them. The lower bound on limit is exclusive everywhere except get_orders, so limit=1 no longer validates
  • Capped every ID path and query parameter at 32 characters, covering 31 parameter names across 105 operations, from the resource IDs in the path to filters like category_id on get_items and the start_after_id cursor on get_orders
  • Marked the offset query parameter on get_orders as deprecated in the spec, which its description has said since 2026.09.16. Use start_after_id instead
  • Removed the placeholder An enumeration. description from ten enum schemas, including ResourceState, NewsState, NewsGroup, NewsSortField, ItemPriceType, ItemStackableType, ItemOrderType, CouponGeneratedType, RangeField, and UnsetType
  • Removed the description from the country query parameter on get_price_points, which explained that the two-letter ISO 3166-1 alpha-2 code drives price localization. The ^[A-Z]{2}$ pattern still documents the format

2026.09.16

2026.09.11

  • Added a primary value to the PaymentMethodDisplay enum, marking a payment method as the pre-selected option at the top of the checkout form, alongside the existing auto and express. Its PaymentMethodSettings schema is still not referenced by any endpoint

2026.09.10

  • Renamed the field query parameter to order_by on get_payments and added the same parameter to get_disputes, where it accepts created_at or updated_at. On both endpoints the named timestamp now sets the sort order as well as the field start_at/end_at filter on
  • Added PWAPromptPopupActionNode to campaign graphs — a PWA install ask rendered as a plain Game Hub popup, carrying the same content and offer-linking fields as PWAPromptActionNode but without its position and skip_dialog placement controls
  • Added read-only mode (exclusive or inclusive) to lootbox hard pity, saying whether a guarantee replaces the roll it lands on or arrives on top of it, across the item, store item, and daily reward responses
  • Added optional show_description to item categories, controlling whether the category description is displayed, on create_item_category, update_item_category, bulk_update_item_categories, get_item_category, and get_item_categories
  • Clarified amount_usd on get_orders, get_order, and update_order — before payment it is an estimate converted from the order currency and may change once the order is paid, rather than a value only set on payment
  • Added optional selected_plan_locked to order items on create_order, which pins the checkout page to the plan named in selected_plan_key so the player cannot switch plans

2026.09.08

  • Added the get_disputes and get_fraud_alerts endpoints, which list the chargebacks and issuer fraud alerts raised against the game's payments, with amounts booked in USD and EUR and dispute fees flagged as processor-reported or estimated
  • Added the get_gdpr_request endpoint, which looks up a data removal request by email, user_id, or player_id and returns its id and status (pending, in_progress, deferred, failed, or completed)
  • Marked secret_redacted read-only on get_webhooks, get_webhook, and update_webhook, documenting that the masked secret is returned but never accepted

2026.09.07

  • Added CreateOnboardingPlayerBannerActionNode to campaign graphs — a Game Hub banner holding up to 10 onboarding tasks (submit_email, pwa_install, or webpush_subscribe), each worth points toward a loyalty or progression program and up to 10 item rewards

2026.09.03

  • Added four node types to campaign graphs — EmailPromptActionNode and WebpushPromptActionNode ask the player for an email address or push permission, GrantVirtualCurrencyNode and GrantPointsNode hand out currency and loyalty or progression points — plus an email_submitted campaign trigger that fires when a player submits their email
  • Added ArticleCollectionBlock to page layouts, listing the pages of a collection as a slider or a grid, across the page endpoints and the page_block union on AddPageBlockNode
  • Added read-only amount_usd to orders — the order amount in USD cents, set once the order is paid — on get_orders, get_order, and update_order
  • Added optional show_global_max_purchase_counter to store items, which shows the player how many purchases are left against the global limit when there is no per-user limit, across get_all_store_items, get_store_items, create_store_item, update_store_item, bulk_update_store_items, and batch_create_store_item

2026.09.02

  • Added required sales_channel (game_hub, checkout, android_sdk, or checkout_link) to every order returned by get_orders, get_order, and update_order, naming the surface the order was placed through
  • Added required created_at (Unix epoch time) to each order in get_orders, which the single-order endpoints already returned
  • Added optional billing_address to create_order, carrying the player's billing zip or postal code

2026.08.31

  • Split the shared GraphRoot schema into CampaignGraph, PageGraph, and SegmentGroupGraph, so each graph only accepts the node types that run in its context — page graph_rules are down to AddPageBlockNode, ConditionNode, and SplitNode
  • Removed the store nodes (AddStoreNode, SortStoreItemsNode, ItemCategorySortNode), the payment risk nodes (DeclinePaymentNode, Require3DSNode, RequirePennyDropNode, BanUserNode, BatchBanUserNode), and the SortStoreType enum from the API
  • Made nonce required on reject_authorization — a rejection has to name the Game Hub session it belongs to, where the field was optional before
  • Typed the html map on translate_page as SanitizedHtmlLocaleMapping rather than LocaleMapping, marking those values as sanitized HTML. Same locale keys, same string values, no change on the wire

2026.08.27

  • Added the reject_authorization endpoint, which ends a Game Hub login the game server turns down and returns a URL that shows the player the error
  • Added optional start_at, end_at, and platform query filters to get_orders, narrowing the list by order creation time (Unix timestamp in seconds) and by platform
  • Added optional platform (any, ios, android, or other) to each order returned by get_orders, so the platform an order came from is readable without matching it back to the filter used

2026.08.26

  • Added RequirePennyDropNode to campaign, page, and segment-group graphs — a payment risk action node that lets the capture through but makes billing verify the card with a penny drop
  • Added optional pin_scope (global or collection) to pages, setting whether a pinned page ranks first among the pages of all sibling collections or only within its own collection, across get_pages, get_page, create_page, update_page, bulk_update_page, and translate_page. An unset scope is read as global

2026.08.25

  • Added optional quantity_expression to nested items, so a child item inside a bundle, subscription plan, loyalty tier, or daily reward can compute its amount from a formula, and added a PublicNestedItem schema that keeps that formula out of player-facing responses

2026.08.24

2026.08.20

  • Added four payment risk action nodes — DeclinePaymentNode, Require3DSNode, BanUserNode, and BatchBanUserNode — to campaign, page, and segment-group graphs
  • Added the update_creator_terms endpoint for correcting an accepted terms record in place, and a legal_name field to the creator terms object on every creator endpoint
  • Replaced lootbox_settings.pity on public lootboxes with a mechanics array on the lootbox itself, reporting the pity progress that applies to the player, across the daily reward endpoints
  • Limited resource-reference ID fields on the store promotion, store, loyalty, daily reward, order, and payment endpoints to 32 characters, continuing the cap already applied to catalog, graph, coupon, and creator payloads
  • Added optional card_issuer_bank and card_issuing_country to get_payments — the issuing bank name and ISO 3166-1 alpha-2 country resolved from the card BIN, best-effort and empty for non-card payments
  • Added ten Aghanim-maintained engagement attributes to update_player — last_purchase_date, last_purchase_item_id, last_purchase_sku, last_purchase_amount, purchases_count_rp, last_communication_date, last_email_date, last_hub_popup_date, and the two game_hub_last_sent_webpush_* timestamps
  • Widened price_decimal on create_order to accept a decimal string as well as a number, so clients can send exact amounts without going through a float
  • Renamed the player_info schema on authorize_user from PlayerInfo to LoginPlayerInfo, which also types the custom_attributes values as booleans, numbers, strings, or arrays of those instead of leaving them unconstrained

2026.08.17

  • Added optional quantity_expression to items — a math expression that computes the quantity of a stackable item — writable on the item endpoints and returned wherever an item is embedded, including store items, coupons, and orders
  • Added an optional experiments array to orders, recording up to 20 A/B test assignments as experiment_key and variant_key pairs, on create_order, get_order, and update_order
  • Limited resource-reference ID fields on the coupon and creator endpoints to 32 characters, completing the cap already applied to catalog, store, graph, and page payloads
  • Narrowed the item union on get_items and in store item responses from anyOf to oneOf, so generated clients treat ItemRead, LootboxRead, SubscriptionRead, and VirtualCurrencyRead as mutually exclusive variants
  • Added the PaymentMethodSettings schema and its three enums — PaymentMethodDisplay (auto, express), BillingAddressCollection (full, zip_only, none), and EmailCollection (auto, none, required) — describing per-payment-method checkout behavior. No endpoint references them yet
  • Renamed the get_creators response schema from PaginatedResponse_list_aghanim.creator.schemas.CreatorRead__ to PaginatedResponse_list_CreatorRead__

2026.08.12

  • Added ten tenjin_* attribution attributes to player attributes, writable on update_player, create_order, and authorize_user
  • Limited resource-reference ID request fields on graph action nodes and page blocks to 32 characters, across campaign, page, and segment-group endpoints
  • Added optional position (top or bottom) and skip_dialog to the PWA prompt action node in campaign, page, and segment-group graphs

2026.08.11

2026.08.10

2026.08.08

2026.08.06

  • Added an optional earnings_cap to creators — a limit_usd_cents amount measured over a week or month period — readable on every creator endpoint and settable on update_creator
  • Added a mechanics array to public lootbox settings in daily reward responses, reporting hard pity progress and the groups guaranteed at the next threshold
  • Added the get_orders endpoint, returning a list of orders paged with limit and offset
  • Added optional child_sort_attribute_name to item categories — the player list attribute holding child category slugs in the order they must be shown — across get_item_categories, create_item_category, get_item_category, update_item_category, and bulk_update_item_categories

2026.08.04

2026.08.03

  • Added optional discount_duration — a cycles count or forever — to subscription offers and subscription plans across item, store item, and daily reward endpoints
  • Added optional profile_display (label, icon, and value format) to campaign custom attributes, controlling how an attribute is presented on the hub profile
  • Added the transfer_player_subscription endpoint to move a subscription to another player in the same game, keeping the plan, billing schedule, and saved payment method

2026.07.30

  • Added webhook-driven daily rewards — an optional webhook_id on daily reward programs plus a daily_reward.get webhook event type
  • Added a reward_mode of repeating or non_repeating and an is_won flag to lootbox nested items across item, store item, and daily reward endpoints
  • Added the UserProfileBlock page block type to page layouts and the AddPageBlockNode graph node
  • Added optional create_default_coupon (default true) to create_creator to skip creating the default creator promo coupon

2026.07.27

  • Removed the campaign store items, user store items, virtual SKU report, and virtual store item delete endpoints, along with the UserStoreItem, VirtualSKUStat, and VirtualStoreItemUser schemas (breaking, no deprecation)
  • Added optional creator_settings to create_order, with an attribution_mode of persistent (default) or one_time to control whether a creator coupon code links the player to the creator for future purchases
  • Documented that the price template key is generated from name when omitted in create_price_template

2026.07.20

  • Restructured item, lootbox, and subscription read models — removed is_system, switched lootbox groups to anyOf, and consolidated SubscriptionRead
  • Limited resource-reference ID request fields to 32 characters across catalog, campaign, page, store item, and store promotion endpoints
  • Added the ItemCategorySortNode graph node type to campaign, page, and segment-group graphs
  • Added a not_found sync status and channel view-average fields to get_creator_social_accounts
  • Removed the unused LocaleMapping and PlayerInfoV1 schemas

2026.07.14

  • Increased the sku maximum length from 100 to 255 characters across catalog items, store items, coupons, daily rewards, and loyalty tiers

2026.07.10

  • Added the VED (Venezuelan bolívar) and ZWG (Zimbabwe Gold) currency codes to the shared currency enum used across all catalog, order, pricing, and reward endpoints
  • Added the XCG (Caribbean guilder) currency code to the shared currency enum used across all catalog, order, pricing, and reward endpoints
  • Added the get_creator_social_accounts endpoint

2026.07.07

  • Removed 13 non-circulating ISO 4217 codes (BOV, CHE, CHW, CLF, COU, CUC, HRK, MXV, SLL, USN, UYI, UYW, XDR) from the shared currency enum (breaking)

2026.07.02

2026.07.01

2026.06.26

2026.06.20

2026.06.19

2026.06.18

2026.06.16

2026.06.13

2026.06.12

2026.06.10

2026.06.08

2026.06.04

2026.06.03

2026.05.29

2026.05.27

2026.05.25

2026.05.22

  • Added optional eligible_for_reward_points, eligible_for_loyalty_points, and rewards (virtual currency rewards with issue status) to get_order and update_order responses

2026.05.21

  • Unified item source enum across catalog and order responses, adding seven new reward/liveops values and making the order item source required
  • Added optional quantity_bonus_value and quantity_after_bonus to item responses across items, store items, and daily rewards
  • Added optional category_template_id to carousel and featured-item blocks and show_thumbnail to Twitch and YouTube video blocks across page endpoints
  • Made start_at and end_at optional and nullable across store promotion endpoints
  • Added optional creator_program/inherits_from_tier to create_coupon, update_coupon, and coupon responses
  • Added optional coupon_code to create_order request
  • Added optional show_store_button to get_loyalty_settings and update_loyalty_settings
  • Added optional attributes and custom_attributes to get_player response

2026.05.12

  • Added optional receipt_number to get_order and update_order responses
  • Changed authorize_user to upsert: when the player already exists, the provided player_info (name, avatar_url, attributes, custom_attributes) now updates the stored player on every call instead of being ignored after the first authorization

2026.05.11

  • Added optional player_info to authorize_user request, allowing player name, avatar URL, attributes, and custom attributes to be supplied alongside the authorization

2026.05.08

2026.05.07

  • Added deprecated Apple-specific image URL fields on item responses across all item-bearing endpoints

2026.05.05

2026.05.01

  • Added structured highlights field across all item types and every endpoint that returns item data
  • Deprecated payment_number on get_payments, replaced by new required receipt_number
  • Added title, text, and button_text optional fields to ImageBannerBlock in page endpoints
  • Added optional bonus_items_settings/start_at and end_at scheduling to store item and store promotion endpoints
  • Added optional start_at and end_at to virtual currency items in store item and daily reward responses
  • Added optional limited_stock_settings/start_calculation_at to store endpoints
  • Added galaxy_store and one_store enum values to marketplace fields in create_order and update_player
  • Added optional appsflyer_customer_user_id to create_order and update_player
  • Added optional applied_reward_points to get_order, update_order, and get_payments responses
  • Changed claim_mode default from modal to inline in create_daily_reward and update_daily_reward
  • Tightened image_url validation on achievement endpoints to require a valid URI (non-empty, format: uri, max 2083 characters); achievement type no longer accepts null
  • Set maxLength of 32 on user_id in gdpr_data_removal

2026.04.13

  • Added virtual currency support across coupons, items, store items, and daily rewards
  • Added analytics webhook events and batch delivery mode
  • Added bulk_update_coupon endpoint
  • Added optional category_id to create_coupon and get_coupons
  • Added item_price_type, sort_order parameters and modified_at, price sort options to get_items
  • Added amount, amount_before_discount, currency fields to get_order and update_order responses
  • Added fallback item fields to featured item blocks in page endpoints
  • Added optional sku to loyalty tier items in update_loyalty_tiers
  • Removed LoyaltyItemCreatUpdate schema

Need help?
Contact our integration team at [email protected]