For when to call (thread triggers, per-thread caps) and how to compose and send the message, see the Automated Messaging guide. If you render offers in your own app UI rather than a text conversation, use
POST /offers/feed: a nearly identical payload that returns an array and adds advertiserLogo, additionalImages, and a per-offer impressionUid.Authentication
Pass your publishable key in theX-API-Key header (pk_live_* for production, pk_test_* for development). Multi-app projects also send X-Platform: api. Full model: overview’s Authentication section.
Request
Structure
Field Reference
Response
Structure
Field Reference
The response carries no internal identifiers (impression, campaign, creative, or request ids) and no server-composed message; you build the text from the fields above.
Example
Status codes
Retry guidance
- Idempotency is on your side. The server does not deduplicate retries; every call generates a fresh short link and analytics row. Call
/offers/messageonce per inbound message you’ve decided to attach an offer to, and de-dupe inbound webhooks on your side before calling. - Use exponential backoff with jitter (for example 200ms, 1s, 5s, max 3 retries) for transient failures (429 / 503 / network).
- After exhausting retries, drop the call and send only your client’s normal reply.
Related
- Automated Messaging guide: triggers, caps, and message composition.
POST /offers/feed: the in-app sibling that returns a ranked array with per-offer impression handles.- API Reference overview: auth and the claim model.