POST /offers/catalog returns the full set of offers a user is eligible for (entitlement and geography already enforced server-side), and you curate client-side.
This guide covers only what differs from the shared flow (select, deliver, claim, activate: see the overview, and Rewarded Actions guide for the complete worked example).
The curation split
Two hard filters, entitlement and geography, always run on Encore’s side, so any offer you receive is one your app may serve and the end user can redeem. Your curation (which offers to feature, in what order) is a soft filter you apply on top. That split is the whole pattern.1
Once, at configuration time: pull your inventory
Call
POST /offers/catalog with includeAllRegions: true to get your full addressable inventory, each offer with its targetCountries. Pick the offers to feature and save their ids in your own configuration.2
On every render: serve the user
Call with a stable
userId and the user’s geography. Encore returns the offers that user is eligible for, each creative carrying a tokenized clickUrl (full contract).3
Curate client-side
Keep the returned offers whose
id is in your featured list, in your preferred order. If none of your picks came back for this user, fall back to the other returned offers so your surface is never empty. Wire each tap to that creative’s clickUrl.ids? The hard filters can remove some of your picks for a given user (for example, US-only offers for a user in Romania). If the server narrowed to your list, you would be left with nothing to show. Returning the whole eligible set lets you fall back gracefully, and you can never accidentally show an ineligible offer.
Gotchas
- Geography is required on the serve path. Send
countryCodein the body, or forward the end user’s IP viaX-Forwarded-For. If neither resolves, the call is a400; Encore never guesses a default country. - Per-creative click URLs. The catalog carries one tokenized
clickUrlper creative. Route the user to theclickUrlon the exact creative they tapped, treat it as opaque, and never modify or wrap it. - Diagnosing a missing pick. If a featured offer is absent from a serve response, compare against your config-time inventory: present there but not here means the user’s country is outside its
targetCountries; absent there means your app is not entitled to it. - Mixed-platform audiences. Each creative lists
supportedPlatforms(ios/android/web); use it to curate each offer to the end user’s surface.
Related
POST /offers/catalogreference: full request/response contract and status codes.- API Reference overview: the selection-mode decision table.
- Rewarded Actions guide: the flagship worked example of the shared flow.