Appcharge Offers API
The Offers API from Appcharge — 5 operation(s) for offers.
The Offers API from Appcharge — 5 operation(s) for offers.
openapi: 3.0.3
info:
title: Appcharge Assets Offers 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: Offers
paths:
/offering/offer:
post:
tags:
- Offers
operationId: create-offer
parameters:
- name: x-publisher-token
required: true
in: header
description: The publisher token
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateOfferDto'
example:
publisherOfferId: offer1
name: Test_Bundle
type: Bundle
active: true
segments:
- NewUser
productsSequence:
- index: 1
priceInUsdCents: 300
products: []
priceDiscount:
priceBeforeDiscount: 1000
discount: 10
type: percentage
responses:
'201':
description: Create a new Offer
content:
application/json:
schema:
$ref: '#/components/schemas/OfferDtoResponse'
'400':
description: Bad request
content:
application/json:
schema:
type: object
properties:
message:
type: string
requestUrl:
type: string
body:
type: string
'401':
description: Not Authorized
/offering/offer/{publisherOfferId}:
delete:
tags:
- Offers
operationId: delete-offer
parameters:
- name: publisherOfferId
required: true
in: path
schema:
type: string
- name: x-publisher-token
required: true
in: header
description: The publisher token
schema:
type: string
responses:
'200':
description: Delete Offer
content:
application/json:
schema:
$ref: '#/components/schemas/OfferDtoResponse'
'401':
description: Not Authorized
/offering/offer/get-offers:
post:
tags:
- Offers
operationId: get-all-offers
parameters:
- name: offerType
required: false
in: query
description: Bundle, SpecialOffer, Popup
example: SpecialOffer
schema:
type: string
- name: recordLimit
required: false
in: query
description: Record limit (0-500). Defaults to 100 if not defined.
example: 100
schema:
minimum: 0
maximum: 500
type: number
- name: offset
required: false
in: query
description: Offset (non-negative value).
example: 10
schema:
minimum: 0
type: number
- name: publisherOfferId
required: false
in: query
description: To retrieve specific offers. If adding multiple, use ',' to separate.
schema:
type: string
- name: x-publisher-token
required: true
in: header
description: The publisher token
schema:
type: string
responses:
'200':
description: Get all offers
content:
application/json:
schema:
$ref: '#/components/schemas/GetOffersResponse'
'400':
description: Bad request
content:
application/json:
schema:
type: object
properties:
message:
type: string
requestUrl:
type: string
body:
type: string
'401':
description: Not Authorized
/offering/offer/popup/{offerSKU}:
put:
tags:
- Offers
operationId: update-popup-by-Id
parameters:
- name: offerSKU
required: true
in: path
schema:
type: string
description: The publisher Id of the offer.
- name: x-publisher-token
required: true
in: header
description: The publisher token
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateOfferDto'
responses:
'200':
description: Update Offer by Id
content:
application/json:
schema:
$ref: '#/components/schemas/OfferDtoResponse'
'401':
description: Not Authorized
/offering/offer/{offerSKU}:
put:
tags:
- Offers
operationId: update-offer-by-Id
parameters:
- name: offerSKU
required: true
in: path
schema:
type: string
description: The publisher Id of the offer.
- name: x-publisher-token
required: true
in: header
description: The publisher token
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateOfferDto'
example:
publisherOfferId: offer1
name: Updated_Bundle
type: Bundle
active: true
segments:
- BigSpender
productsSequence:
- index: 1
priceInUsdCents: 500
products: []
priceDiscount:
priceBeforeDiscount: 1500
discount: 20
type: fixed_amount
responses:
'200':
description: Update Offer by Id
content:
application/json:
schema:
$ref: '#/components/schemas/OfferDtoResponse'
'401':
description: Not Authorized
components:
schemas:
ProductsSequenceResponse:
type: object
properties:
index:
type: number
playerAvailability:
type: number
priceInUsdCents:
type: number
products:
type: array
items:
$ref: '#/components/schemas/ProductsSetResponse'
ProductsSequence:
type: object
properties:
index:
type: number
priceInUsdCents:
type: number
playerAvailability:
type: number
products:
type: array
items:
$ref: '#/components/schemas/ProductsSet'
required:
- index
- priceInUsdCents
- products
CreateOfferDto:
type: object
required:
- publisherOfferId
- name
- type
- active
- segments
- productsSequence
properties:
publisherOfferId:
type: string
description: The publisher offer Id
name:
type: string
description: The name of the offer (at least 3 letters)
displayName:
type: string
description: If not specified, the offer name will be used
description:
type: string
description: The description of the offer (conditionally returned)
type:
type: string
description: The type of the offer - Bundle, SpecialOffer
offerUiId:
type: string
description: 'Internal ID for the Offer UI (required if offerExternalUiId not provided)
'
offerExternalUiId:
type: string
description: 'The offer UI ID as configured by the publisher (if provided, offerUiId is not required)
'
publisherSectionId:
type: string
description: 'The publisher section ID (applies only to Bundle)
'
dynamicOfferUi:
$ref: '#/components/schemas/DynamicOfferUiDto'
active:
type: boolean
description: Whether the offer is active
segments:
type: array
items:
type: string
description: 'IDs of player segments (["NewUser", "BigSpender"] etc.)
'
productsSequence:
type: array
items:
$ref: '#/components/schemas/ProductsSequence'
schedule:
type: object
properties:
permanent:
type: boolean
default: true
timeFrames:
type: array
items:
type: object
properties:
startTime:
type: string
format: date-time
endTime:
type: string
format: date-time
notes:
type: string
required:
- startTime
- endTime
intervals:
type: string
required:
- permanent
- timeFrames
priceDiscount:
$ref: '#/components/schemas/PriceDiscountDto'
ProductsSet:
type: object
properties:
quantity:
type: number
publisherProductId:
type: string
required:
- quantity
- publisherProductId
PriceDiscountDto:
type: object
properties:
priceBeforeDiscount:
type: integer
description: Offer amount in USD before sale is applied
discount:
type: integer
description: Sale amount in percentage
type:
type: string
description: 'Discount type. Defaults to ''percentage''. Optional values: ''percentage'', ''multiplier'', ''fixed_amount''.
'
enum:
- percentage
- multiplier
- fixed_amount
OfferUiDto:
type: object
properties:
offerUiId:
type: string
externalId:
type: string
active:
type: boolean
offerUiType:
type: string
name:
type: string
description:
type: string
backgroundImage:
type: string
specialOffer:
type: object
properties:
templateType:
type: string
presentOfferEndTimer:
type: boolean
title:
type: string
fontSize:
type: number
fontWeight:
type: string
fontColor:
type: object
properties:
colorOne:
type: string
colorTwo:
type: string
direction:
type: string
backgroundColor:
type: object
properties:
colorOne:
type: string
colorTwo:
type: string
direction:
type: string
ProductDto:
type: object
properties:
publisherProductId:
type: string
name:
type: string
textFontColorHex:
type: string
type:
type: string
prefix:
type: string
suffix:
type: string
priority:
type: string
images:
type: array
items:
type: object
properties:
type:
type: string
url:
type: string
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
productId:
type: string
GetOffersResponse:
type: object
properties:
result:
type: object
properties:
totalCount:
type: number
offers:
type: array
items:
$ref: '#/components/schemas/OfferDtoResponse'
status:
type: number
message:
type: string
ProductsSetResponse:
type: object
properties:
quantity:
type: number
product:
$ref: '#/components/schemas/ProductDto'
OfferDtoResponse:
type: object
properties:
offerId:
type: string
publisherOfferId:
type: string
name:
type: string
displayName:
type: string
description:
type: string
type:
type: string
createdBy:
type: string
offerUi:
$ref: '#/components/schemas/OfferUiDto'
dynamicOfferUi:
$ref: '#/components/schemas/DynamicOfferUiDto'
active:
type: boolean
segments:
type: array
items:
type: string
productsSequence:
type: array
items:
$ref: '#/components/schemas/ProductsSequenceResponse'
startOver:
type: boolean
priority:
type: number
showAfter:
type: string
triggers:
type: array
items:
type: object
properties:
type:
type: string
eventName:
type: string
every:
type: integer
rules:
type: array
items: {}
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
UpdateOfferDto:
type: object
properties:
publisherOfferId:
type: string
description: The new Id of the offer.
example: Test_Popup_New
name:
type: string
description: The name of the offer. At least 3 letters.
example: Test_Popup
displayName:
type: string
description: The display name of the offer. If not specified, the offer name will be used.
description:
type: string
description: The description of the offer.
example: Best offer ever.
offerUiId:
type: string
description: The Internal ID for the Offer UI. The Offer UI is responsible to add UI elements to the offers such as background image and title. Once you create the Offer UI using the dashboard, you will get the internal ID. This must correspond with the type of offer you configure. In this case "Popup".
example: 64a55b82e06998282d3d9b59
offerExternalUiId:
type: string
description: The offer UI ID as configured by the publisher. If offerExternalUiId is provided, then offerUiId will not be required.
example: b9c1e7a3d1f8b2a4c6e5d8f3
dynamicOfferUi:
$ref: '#/components/schemas/DynamicOfferUiDto'
active:
type: boolean
description: Is the offer active? true/false.
example: 'true'
startOver:
type: boolean
description: Popup will repeat itself.
showAfter:
type: string
description: 'Optional values: "login", "purchase"'
triggers:
type: array
description: An array of objects specifying the conditions under which the popup should be triggered.
items:
type: object
properties:
type:
type: string
description: Type of trigger.
enum:
- event
eventName:
type: string
description: Name of the event that triggers the popup.
enum:
- purchase
every:
type: integer
description: Number of purchases required to present the popup.
rules:
type: array
description: Rules to specify conditions under which the popup appears. If it can apply to any offers, leave the array empty.
items:
type: object
properties:
fieldName:
type: string
description: Name of the field to evaluate.
enum:
- publisherOfferId
operator:
type: string
description: Operator to compare the field value.
enum:
- in
value:
type: array
description: Array of 'publisherOfferId'(s)
items:
type: string
segments:
type: array
items:
type: string
description: 'The Ids of the player segments to be used in the segmentation algorithm. for example: [“NewUser”, “BigSpender”].'
example: NewUser
productsSequence:
type: array
items:
$ref: '#/components/schemas/ProductsSequence'
description: Relevant only for rolling offers, for any other offer (store tile, single promotion) report all products under sequence ‘1’
DynamicOfferUiDto:
type: object
properties:
badges:
type: array
items:
type: object
properties:
publisherBadgeId:
type: string
position:
type: string
description: The badges of the offer
salePercentage:
type: number
salePercentageDisplayType:
type: string
default: percentage
securitySchemes:
PublisherTokenAuth:
type: apiKey
in: header
name: x-publisher-token
description: Publisher token, as displayed in the Publisher Dashboard.