Feedico

← Home · Integration hub · Unified API · Product

Part of: Unified affiliate API · Publisher integration hub

Offer data API · Coupons & auto offers

Offer Data API: coded coupons and title-only / auto-applied offers

The Offer Data API frames Feedico coupon rows as commerce offers: vouchers with a typed code, and title-only or auto-applied promotions where code is null. Primary production path: POST /api/v1/me/coupons. For discovery without tracking URLs use POST /api/v1/catalog/coupons.

Definition: offer objects in Feedico

An offer is a normalized Coupon entity tied to a Firm (merchant/programme). Upstream networks call them vouchers, promotions, or deals. Schema normalization maps them into stable camelCase fields so your listing templates do not fork per network. See the platform data model for Firm ↔ Coupon relationships.

Code present vs code null

code present

Shopper-typed voucher. Show a copy-code control, title, and outbound offerUrl on /me.

code: null

Title-only or auto-applied offer (free shipping, sitewide sale messaging). Emphasize the title and CTA; do not invent a fake code.

When to use Offer Data API vs siblings

NeedPageNotes
Offer object semanticsThis pagecode null vs present, windows, offerUrl
Production coupon listings/coupon-apiPrimary contract for deal sites
Global discovery/global-coupon-apiCatalog scale story; no offerUrl
Merchant parents/merchant-data-apiFirm directory

Endpoints table

SurfacePathBest for
Your offersPOST /api/v1/me/couponsConnected programmes; offerUrl when synced
CataloguePOST /api/v1/catalog/couponsDiscovery index; no shared tracking links

Bearer auth required. Successful calls count toward monthly API caps. Spec: openapi-customer.yaml.

Curl and JSON examples

curl · POST /api/v1/me/coupons
curl -sS -X POST "https://api.feedico.io/api/v1/me/coupons" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"page":1,"pageSize":50}'
Example /me/coupons as offers (code + code null)
{
  "ok": true,
  "recordCount": 2,
  "page": 1,
  "pageSize": 50,
  "coupons": [
    {
      "id": "cpn_9001",
      "provider": "cj_affiliate",
      "firmName": "Example Outdoor Co",
      "title": "15% off sitewide",
      "code": "OUTDOOR15",
      "startsAt": "2026-09-01T00:00:00.000Z",
      "endsAt": "2026-09-30T23:59:59.000Z",
      "offerUrl": "https://www.example-outdoor.com/?sid=pub",
      "status": "active"
    },
    {
      "id": "cpn_9002",
      "provider": "cj_affiliate",
      "firmName": "Example Outdoor Co",
      "title": "Free shipping over $75 (auto-applied)",
      "code": null,
      "startsAt": null,
      "endsAt": "2026-09-15T23:59:59.000Z",
      "offerUrl": "https://www.example-outdoor.com/shipping?sid=pub",
      "status": "active"
    }
  ],
  "availableProviders": ["cj_affiliate"]
}
curl · POST /api/v1/catalog/coupons
curl -sS -X POST "https://api.feedico.io/api/v1/catalog/coupons" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"page":1,"pageSize":50,"q":"shipping"}'
Example /catalog/coupons (no offerUrl)
{
  "ok": true,
  "recordCount": 1,
  "page": 1,
  "pageSize": 50,
  "coupons": [
    {
      "id": "cat_cpn_4411",
      "brandName": "Example Outdoor Co",
      "provider": "cj_affiliate",
      "title": "15% off sitewide",
      "code": "OUTDOOR15",
      "startsAt": "2026-09-01T00:00:00.000Z",
      "endsAt": "2026-09-30T23:59:59.000Z",
      "merchantWebsiteUrl": "https://www.example-outdoor.com"
    }
  ]
}

Field glossary

FieldMeaning
codeVoucher string when present; null for title-only / auto-applied offers.
titleHuman-readable offer description (percentage, free shipping, BOGO, etc.).
startsAt / endsAtEligibility window in ISO timestamps; either may be null.
offerUrlPublisher tracked deep link on /me when available; never on catalog.
firmName / networkNameParent merchant display context for listing pages.
providerUpstream network slug for filters and warehouse partitioning.
externalCouponIdNetwork-native offer id; natural key with provider for upserts.
statusactive / inactive after sync soft-delete passes.

Architecture workflow: offers into a deals site

  1. Sync coupons via connected integrations; upsert on (provider, externalCouponId).
  2. Page /me/coupons on a schedule; respect startsAt/endsAt in your CMS.
  3. Branch UI: code present → copy control; code null → title + CTA only.
  4. Click out through offerUrl on /me, or attach your own tracking when using catalog discovery.
  5. Pair with merchants for store pages and commerce data hub for the full stack story.
Firm (merchant)
   |
   +-- Offer / Coupon rows
         |
         +-- code present  →  copy-code UX + offerUrl (/me)
         +-- code null     →  title-only / auto-applied UX
         |
   Eligibility: startsAt .. endsAt

Catalog: /catalog/coupons  →  discovery metadata only (no offerUrl)

Offer Data API FAQ

What is the Offer Data API?
It is the offer-object framing of Feedico coupon rows: coded vouchers (code present) and title-only or auto-applied promotions (code null). Production listing contract details live on /coupon-api; this page explains the offer shape, eligibility windows, and offerUrl behavior.
Which endpoint should I call for offers?
POST /api/v1/me/coupons for account-scoped offers with tracked offerUrl when available. POST /api/v1/catalog/coupons for discovery without tracking URLs. Both require a Bearer token and count toward monthly API caps.
What does code: null mean?
A null code usually means a title-only or auto-applied offer: shoppers may not type a voucher. Render the title and deep-link via offerUrl (on /me) or your own compliant tracking link (when using catalog discovery).
How do eligibility windows work?
startsAt and endsAt mark when an offer is valid. Either may be null for open-ended or unknown windows. Filter expired rows in your CMS or request active-only filters as documented in OpenAPI.
When is offerUrl returned?
Account /me/coupons includes offerUrl when your sync provides a tracked link. Catalog coupons omit offerUrl so other publishers' tracking links are never shared. Attach your own links before publishing.
How is this different from /coupon-api?
/coupon-api is the production coupon listing contract for publishers building code pages and deal sites. /offer-data-api is the conceptual offer-object page: coded vs title-only, windows, and tracking. Link both; implement against the same /me/coupons and /catalog/coupons endpoints.
Can I mix offers with product deals?
Yes. Use offers for promo messaging and /product-deal-feed-api or /product-data-api for SKU-level prices. Keep codes and SKUs as separate UI modules so shoppers are not confused.
Where do I read network field mapping?
See how Feedico normalizes affiliate network schemas and the affiliate marketing network data model for Firm/Coupon relationships and natural keys.

You need programme approval and compliant use at each affiliate network. Feedico provides the integration layer - not a substitute for network terms.

Related pages