Skip to content

API: Monetization

Controllers: admin-pricing.controller.ts + admin-monetization.controllers.ts.

Mount admin/pricing.

MethodPathPerm
GET/admin/pricing/configpricing:read
POST/admin/pricing/overridespricing:write
PUT/admin/pricing/overrides/:idpricing:write
DELETE/admin/pricing/overrides/:idpricing:write

Returns global defaults + all active overrides.

{
"defaultCoinsPerEpisode": 30,
"overrides": [
{
"id": "...",
"scope": "market",
"scopeRef": "EG",
"coins": 25,
"currencyHint": "EGP",
"activeFrom": null,
"activeTo": null,
"active": true
}
]
}
{
"scope": "series",
"scopeRef": "0193...",
"coins": 45,
"activeFrom": "2026-08-01T00:00:00Z",
"activeTo": null
}

Scope: market | series | episode. ScopeRef: ISO-2 for market, ID for series/episode.

Mount admin/coin-packages.

MethodPathPerm
GET/admin/coin-packagespricing:read
GET/admin/coin-packages/:idpricing:read
POST/admin/coin-packagespricing:write
PUT/admin/coin-packages/:idpricing:write
DELETE/admin/coin-packages/:idpricing:write
{
"sku": "tc_coins_1200_bonus200",
"coins": 1200,
"bonusCoins": 200,
"priceCents": 999,
"currency": "USD",
"rails": ["apple", "google", "card_web"],
"status": "active"
}

Mount admin/promos.

MethodPathPerm
GET/admin/promospricing:read
GET/admin/promos/:idpricing:read
POST/admin/promospricing:write
PUT/admin/promos/:idpricing:write
DELETE/admin/promos/:idpricing:write
{
"code": "WELCOME2026",
"type": "coin_grant",
"config": {
"amount": 100,
"max_uses_per_user": 1,
"trigger": "manual_claim"
},
"budgetCoins": 500000,
"window": { "start": "2026-01-01T00:00:00Z", "end": "2026-03-31T23:59:59Z" },
"segmentId": null
}

Types: bonus_multiplier, coin_grant, trial_ext. See Promos guide for config schemas.

Mount admin/subscriptions.

MethodPathPerm
GET/admin/subscriptionspayments:read

Query: status, platform, country, cursor, limit.

Returns list of active/expired subscriptions across users. Read-only in v2.

Mount admin/economy.

Permission: any of analytics:read, payments:read, pricing:read.

Query: dateFrom, dateTo, market, segmentId.

Response:

{
"period": { "start": "...", "end": "..." },
"mintedCoins": 1234567,
"burnedCoins": 987654,
"liabilityBonusCoins": 2345678,
"liabilityPaidCoins": 3456789,
"zeroSumBreach": false,
"mintedBySource": {
"source_iap_apple": 500000,
"source_promo": 12000,
"source_support_grant": 3400,
...
},
"burnedBySink": {
"sink_unlock": 900000,
"sink_refund": 87000,
...
},
"daily": [ /* per-day series */ ]
}