openapi: 3.0.3 info: title: Appcharge Assets Promo Codes 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: Promo Codes paths: /coupons/coupon/{couponName}/promo-codes: parameters: - in: path name: couponName required: true schema: type: string example: summer26 description: Coupon name. post: tags: - Promo Codes description: Creates multiple promo codes for a specific coupon.

Maximum of 1,000 promo codes allowed per request. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreatePromoCodesRequest' responses: '200': description: Promo codes created successfully. content: application/json: schema: $ref: '#/components/schemas/PromoCodesResponse' '400': description: Bad request. Invalid input or validation failure. content: application/json: schema: $ref: '#/components/schemas/Error' examples: invalidCouponName: summary: Invalid coupon name value: error: Invalid coupon name. Use only English letters and numbers. invalidPromoCodeName: summary: Invalid promo code name value: error: Invalid promo code name. Use only English letters and numbers. promoCodesBelowMinimum: summary: Promo codes count below minimum value: error: Promo codes count must be at least 1. promoCodesAboveMaximum: summary: Promo codes count above maximum value: error: Promo codes count must not exceed 1000. duplicatePromoCodes: summary: Duplicate promo codes in request value: error: 'Some promo codes in the request are duplicated: swx1, swx2.' maxRedemptionsBelowMinimum: summary: maxRedemptions below minimum value: error: maxRedemptions must not be less than 1 missingRequiredField: summary: Required field missing value: error: 'Missing required field: promoCodes.' '404': description: Coupon not found. content: application/json: schema: $ref: '#/components/schemas/Error' examples: couponNotFound: summary: Coupon not found value: error: Coupon not found. '409': description: Conflict. One or more promo codes already exist and are active on another coupon. content: application/json: schema: $ref: '#/components/schemas/Error' examples: promoCodeExists: summary: Promo code already active on another coupon value: error: 'Some promo codes are already active on other coupon: swx1, swx2.' '500': description: Unexpected error. content: application/json: schema: $ref: '#/components/schemas/Error' examples: unexpectedError: summary: Unexpected error value: error: Unexpected error. Please contact support. operationId: postCouponsCouponCouponnamePromoCodes get: tags: - Promo Codes description: Retrieves a paginated list of up to 1,000 promo codes for a specific coupon. parameters: - in: query name: limit required: false schema: type: integer example: 1000 description: Maximum number of promo codes to return. - in: query name: page required: false schema: type: integer example: 1 description: Page number to retrieve. - in: query name: sortDirection required: false schema: type: string default: asc enum: - asc - desc example: desc description: Sort direction of results by `createdAt`. - in: query name: isActive required: false schema: type: boolean example: true description: Filter by active status. responses: '200': description: Promo codes retrieved successfully. content: application/json: schema: $ref: '#/components/schemas/ListPromoCodesResponse' '404': description: Coupon not found. content: application/json: schema: $ref: '#/components/schemas/Error' examples: couponNotFound: summary: Coupon not found value: error: Coupon not found. operationId: getCouponsCouponCouponnamePromoCodes /coupons/coupon/{couponName}/promo-codes/set-activation: parameters: - in: path name: couponName required: true schema: type: string example: summer26 description: Coupon name. patch: tags: - Promo Codes description: Activates or deactivates promo codes for a specific coupon.

Maximum of 1,000 promo code names allowed per request. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PromoCodeActivationRequest' responses: '200': description: Promo codes updated successfully. content: application/json: schema: $ref: '#/components/schemas/PromoCodeActivationResponse' '400': description: Bad request. Invalid input or validation failure. content: application/json: schema: $ref: '#/components/schemas/Error' examples: promoCodeNamesBelowMinimum: summary: Promo code names count below minimum value: error: Promo code names count must be at least 1. promoCodeNamesAboveMaximum: summary: Promo code names count above maximum value: error: Promo code names count must not exceed 1000. '404': description: Coupon not found. content: application/json: schema: $ref: '#/components/schemas/Error' examples: couponNotFound: summary: Coupon not found value: error: Coupon not found. '500': description: Unexpected error. content: application/json: schema: $ref: '#/components/schemas/Error' examples: unexpectedError: summary: Unexpected error value: error: Unexpected error. Please contact support. operationId: patchCouponsCouponCouponnamePromoCodesSetActivation /coupons/coupon/{couponName}/promo-code/{promoCodeName}: parameters: - in: path name: couponName required: true schema: type: string example: summer26 description: Coupon name. - in: path name: promoCodeName required: true schema: type: string example: swx1 description: Promo code name. get: tags: - Promo Codes description: Retrieves a specific promo code. responses: '200': description: Promo code retrieved successfully. content: application/json: schema: $ref: '#/components/schemas/PromoCodeResponse' '400': description: Bad request. Invalid input or validation failure. content: application/json: schema: $ref: '#/components/schemas/Error' examples: invalidCouponName: summary: Invalid coupon name value: error: Invalid coupon name. Use only English letters and numbers. invalidPromoCodeName: summary: Invalid promo code name value: error: Invalid promo code name. Use only English letters and numbers. '404': description: Promo code or coupon not found. content: application/json: schema: $ref: '#/components/schemas/Error' examples: couponNotFound: summary: Coupon not found value: error: Coupon not found. promoCodeNotFound: summary: Promo code not found value: error: Promo code not found. '500': description: Unexpected error. content: application/json: schema: $ref: '#/components/schemas/Error' examples: unexpectedError: summary: Unexpected error value: error: Unexpected error. Please contact support. operationId: getCouponsCouponCouponnamePromoCodePromocodename components: schemas: ListPromoCodesResponse: type: object properties: promoCodes: type: array items: $ref: '#/components/schemas/PromoCode' description: List of promo codes. totalCount: type: integer description: Total number of promo codes matching the query. example: 42 totalPages: type: integer description: Total number of pages matching the query. example: 1 hasNextPage: type: boolean description: Whether there is an additional page of results. example: true page: type: integer description: Current page number. example: 1 limit: type: integer description: Maximum number of promo codes per page. example: 1000 CreatedPromoCode: type: object properties: name: type: string description: Promo code name. example: swx1 active: type: boolean description: Whether the promo code is active. example: true maxRedemptions: type: integer description: Maximum number of times this promo code can be redeemed. example: 1 createdAt: type: string format: date-time description: Timestamp when the promo code was created. example: '2025-01-22T15:58:24.116Z' updatedAt: type: string format: date-time description: Timestamp when the promo code was last updated. example: '2025-01-25T08:44:26.668Z' CreatePromoCodesRequest: type: object properties: promoCodes: type: array items: $ref: '#/components/schemas/CreatePromoCodeInput' description: List of promo codes to create. required: - promoCodes PromoCodeActivationResponse: type: object properties: promoCodes: type: array items: $ref: '#/components/schemas/PromoCode' description: List of updated promo codes. CreatePromoCodeInput: type: object properties: name: type: string description: Promo code name. Can't contain spaces or special characters. example: swx1 maxRedemptions: type: integer description: Maximum number of times this promo code can be redeemed. example: 1 active: type: boolean description: Whether the promo code is active. example: true required: - name - maxRedemptions - active PromoCodeActivationRequest: type: object properties: active: type: boolean description: Whether to activate or deactivate the specified promo codes. example: false promoCodeNames: type: array items: type: string minItems: 1 maxItems: 1000 description: List of promo code names to activate or deactivate. example: - swx1 - swx2 - swx3 required: - active - promoCodeNames PromoCodesResponse: type: object properties: promoCodes: type: array items: $ref: '#/components/schemas/CreatedPromoCode' description: List of created promo codes. Error: type: object properties: error: type: string description: Error message describing what went wrong. PromoCodeResponse: $ref: '#/components/schemas/PromoCode' PromoCode: type: object properties: name: type: string description: Promo code name. example: swx1 active: type: boolean description: Whether the promo code is active. example: true maxRedemptions: type: integer description: Maximum number of times this promo code can be redeemed. example: 50 createdAt: type: string format: date-time description: Timestamp when the promo code was created. example: '2025-01-22T15:58:24.116Z' updatedAt: type: string format: date-time description: Timestamp when the promo code was last updated. example: '2025-01-25T08:44:26.668Z' redemptions: type: integer description: Number of times this promo code has been redeemed. example: 10 securitySchemes: PublisherTokenAuth: type: apiKey in: header name: x-publisher-token description: Publisher token, as displayed in the Publisher Dashboard.