The flow
Every integration is the same five-stage flow; only the selection mode varies.1
Select offers
One
POST in your chosen selection mode: ranked feed, full catalog, single message pick, or a permanent creator link.2
Deliver on your surface
Render the offer in your UI, message, or page. On the feed, confirm each offer’s impression with
POST /offers/impressions/{impressionUid}/delivered when it is actually shown.3
The user claims
Route the tap to the offer’s tokenized
clickUrl. Encore records an attributed transaction (bound to your app, the offer, the creative, and your userId) and 302-redirects to the advertiser. See The claim model.4
Activation is verified
The completion is verified server-side on the advertiser’s side. Only a verified completion counts, and pays.
5
React to the completion
Encore POSTs a signed
offer_completed event to your server: see Receive Completion Events.Choosing a selection mode
Rule of thumb: if the offer appears at a moment, use the feed. Per-offer exposure measurement (the served/delivered split below) exists only on the feed, so feed-based integrations are the ones whose impressions Encore can fully account for.
Authentication
Every endpoint authenticates with the publishable key from your dashboard, passed in theX-API-Key header: pk_live_* for production, pk_test_* for development.
X-Platform header so Encore knows which app to resolve; otherwise the request is rejected with X-Platform header required for multi-app projects:
X-Platform.
Test keys don’t track.
pk_test_... returns offers, mints links, and accepts delivered calls for development, but records no impressions, clicks, or conversions. Use pk_live_... for anything that should show up in your dashboard.The impression model
The API splits “we handed you an offer” from “the user actually saw it”:- Served (the baseline). When the feed returns offers, the server records each returned offer as served. This is bookkeeping, not an impression: calling the feed is not the impression, because you fetch a batch and may only ever show some of it.
- Delivered (the impression). When you actually render an offer, you confirm it with
POST /offers/impressions/{impressionUid}/deliveredusing the per-offerimpressionUidfrom the feed response. An offer you fetch but never confirm stays in the served baseline, never a confirmed impression.
The claim model
Every offer carries a tokenizedclickUrl. When the user taps, you open that URL; Encore records an attributed transaction and 302-redirects the user to the advertiser.
A claim is not a conversion. The claim is a fact about the offer flow: the user tapped through. The completion is verified separately on the advertiser side, and only a verified completion pays out. To react to completions from your server (grant a reward, credit a balance), use the offer_completed webhook.
What’s in this section
Rewarded Actions (start here)
The one end-to-end walkthrough: the complete worked feed pattern, from milestone to attributed claim
Curated Catalog
Pull your addressable inventory and curate your own surface
Automated Messaging
Append an offer to outbound automated messages
Creator Links
Permanent per-creator tracking links and a stats endpoint
Receive Completion Events
Wire the offer_completed webhook to react to verified completions
/offers/feed, /offers/impressions/{impressionUid}/delivered, /offers/catalog, /offers/message, Creator Links endpoints, and the offer_completed webhook.