Skip to main content

API late March 2026 improvements

Sam Critchley
Co-Founder

Additional API features, improvements and fixes that shipped to production in late March 2026, on top of the earlier mid-March 2026 release.

  • Added a new composable campaign type that combines configurable reward-handling behaviour (independent or random_draw, for example competition-draw rewards), reward methods with their own restrictions, usage limits and usage costs, and voucher-style rewards. Composable campaigns can also be triggered via interact-campaign for scratch-card-style flows.
  • Added a rewards_handling_behaviour field (independent/random_draw) on composable campaigns.
  • Added a usage_cost restriction on composable campaigns so that a wallet balance is deducted per interaction.
  • Added usage_limit and selection fields on reward methods, including competition-style random-draw weighting.
  • Added reward-method-level restrictions (currency, business, basket_item) so that spend-context restrictions can be applied directly to a reward method.
  • Added an honour_voucher reward-method type with honour_code configuration.
  • Added member-number-range fields to chain endpoint responses.
  • Added a chain-level setting that controls how long after a user is created a referral_code can still be applied to trigger referral-campaign rewards.
  • Added a new auth/apply-referral-code endpoint so that an existing user can submit a referral code after signup (within the chain's configured submission window).
  • Added explicit is_default create and alter handling to loyalty campaigns, with the API enforcing that only one active default loyalty campaign can exist per chain.
  • Changed loyalty-level-change side effects so they are only triggered for the campaign that owns the progress entry, preventing duplicate side effects when a chain has multiple active loyalty campaigns.
  • Improved database performance for voucher and voucher-distribution reporting through additional database indexes.
  • Fixed min_earn_quantity handling for fixed-monetary and quantity-unit basket campaigns so that an empty min_earn_quantity no longer triggers a type error, and a submitted value of 0 is preserved rather than silently coerced to 1.
  • Fixed claim-basket so that campaign barcode assignments are preloaded consistently with add-basket, ensuring only items matching a campaign's barcode-assignment list qualify for rewards.
  • Fixed delete-voucher and expire-voucher so they no longer delete or expire a voucher that has already been redeemed (previously this could incorrectly restore wallet balance for wallet-campaign vouchers).