CAKE API — Offers

This article will cover the following:

Why use this API?
Use the Offers API to create offers in bulk, sync your offer catalog into external systems, update payouts or status without logging into the UI, or automate offer lifecycle management as part of an onboarding workflow.
Authentication: All CAKE API requests require your api_key parameter. Find yours under Setup → System Access → API Keys.

Overview

Offers are the foundation of every campaign in CAKE. An offer represents a specific product or service that an advertiser wants promoted, and it defines everything an affiliate needs to participate: the destination URL, payout structure, creative assets, session duration, and conversion rules. Every click, conversion, and commission tracked in CAKE is attributed to an offer.

Each offer belongs to a vertical and can be tagged for flexible filtering. Offers are linked to a single advertiser and can be made available to all affiliates or restricted to a curated group. Payout and revenue values are set at the offer level and can be overridden at the affiliate or creative level.

Offer caps allow you to control spend and conversion volume by setting daily, weekly, or monthly limits. When a cap is reached, CAKE automatically stops serving the offer to affiliates.


Key Concepts

  • Offer — A trackable campaign unit representing a product or service. Contains the tracking URL, payout rules, and creative assets affiliates use.
  • Vertical — A category grouping offers by industry (e.g., Finance, Health, Insurance). Used for filtering and reporting.
  • Payout — The amount the network pays an affiliate per qualifying conversion.
  • Revenue — The amount the advertiser pays the network per conversion.
  • Payout Type — How affiliate compensation is calculated: CPA (fixed per action), CPS (% of sale), CPC (per click), or CPM (per thousand impressions).
  • Session Hours — Duration in hours during which a cookie remains valid for conversion attribution after a click.
  • Offer Cap — A configurable limit on conversions or clicks over a defined time interval to control spend.
  • Offer Status — Controls visibility and availability: Active, Paused, Pending, Expired.
  • Tag — A user-defined label applied to offers for custom grouping and segmentation.
  • Expiration Date — An optional date after which CAKE automatically marks the offer as expired.

Available Actions

Available Actions

Get Offers

Returns a list of offers matching the specified filter criteria. Use this endpoint to retrieve your full offer catalog, filter by status or vertical, or look up a specific offer by ID.

When to use: Sync CAKE offer data into a CRM, BI tool, or external dashboard; retrieve active offers before generating affiliate links.
GET /api/2/offers.json
Parameter Type Required Description
api_keystringYesYour CAKE API key.
offer_idintegerNoFilter to a single offer by its unique CAKE offer ID.
offer_statusstringNoFilter by status: active, paused, pending, expired.
vertical_idintegerNoFilter offers belonging to a specific vertical.
tag_idintegerNoFilter offers associated with a specific tag ID.
start_at_rowintegerNoRow offset for pagination. Defaults to 0.
row_limitintegerNoMaximum records to return. Default 100, max 5000.
sort_fieldstringNoField to sort by (e.g. offer_name, offer_id).
sort_descendingbooleanNoSet true for descending sort. Default false.

Sample request

GET https://yourdomain.cakemarketing.com/api/2/offers.json?api_key=YOUR_API_KEY&offer_status=active&vertical_id=3&row_limit=50&start_at_row=0&sort_field=offer_name&sort_descending=false

Sample response

{ "request_status": "Success", "response": { "offers": [ { "offer": { "offer_id": 12345, "offer_name": "Auto Insurance Quote - US", "offer_status": "active", "vertical": { "vertical_id": 3, "vertical_name": "Insurance" }, "advertiser": { "advertiser_id": 101, "advertiser_name": "SafeDrive Insurance Co." }, "offer_url": "https://safedrive.example.com/quote", "payout": 18.50, "payout_type": "CPA", "revenue": 22.00, "currency": "USD", "session_hours": 24, "expiration_date": "2026-12-31", "tags": [{ "tag_id": 8, "tag_name": "auto" }] } } ], "total_rows": 1 } }
? Tip: Store returned offer_id values as your primary key — offer names can change, but IDs are permanent.

Create Offer

Creates a new offer in CAKE. Use this endpoint to programmatically onboard offers when new advertiser products are added in an external system, eliminating manual UI entry.

When to use: Building an integration that auto-creates CAKE offers when advertisers add products to an external platform.
POST /api/2/offer.json
ParameterTypeRequiredDescription
api_keystringYesYour CAKE API key.
offer_namestringYesDisplay name for the offer.
advertiser_idintegerYesID of the advertiser running this offer.
vertical_idintegerYesVertical category the offer belongs to.
offer_urlstringYesThe tracking URL affiliates will use.
preview_urlstringNoLanding page preview URL for affiliates.
offer_statusstringNoactive | inactive | pending. Default: active.
payoutdecimalNoAffiliate payout amount.
payout_typestringNocpa | cpc | cpm | revshare
revenuedecimalNoAdvertiser revenue amount.
revenue_typestringNocpa | cpc | cpm | revshare
currency_idintegerNoCurrency ID (1 = USD).
session_hoursintegerNoCookie duration in hours.
expiration_datedatetimeNoOffer expiry (YYYY-MM-DD HH:MM:SS).
offer_descriptionstringNoInternal description visible to affiliates in their portal.

Sample request

POST https://yourdomain.cakemarketing.com/api/2/offer.json { "api_key": "YOUR_API_KEY", "offer_name": "Home Warranty Lead - Premium", "advertiser_id": 101, "vertical_id": 7, "offer_url": "https://track.yourdomain.com/aff_c?offer_id={offer_id}&aff_id={aff_id}", "offer_status": "active", "payout": 24.00, "payout_type": "cpa", "revenue": 30.00, "currency_id": 1, "session_hours": 24 }

Sample response

{ "request_status": "Success", "offer": { "offer_id": 12346, "offer_name": "Home Warranty Lead - Premium", "offer_status": "active", "payout": 24.00, "payout_type": "CPA", "revenue": 30.00, "created_date": "2026-06-19 09:15:00" } }

Update Offer

Updates an existing offer's payout, status, or expiry without touching the CAKE UI — essential for bulk updates or automated campaign management via script.

When to use: Automated payout adjustments, pausing expired offers on a schedule, or syncing offer status changes from an external system.
POST /api/2/update_offer.json
ParameterTypeRequiredDescription
api_keystringYesYour CAKE API key.
offer_idintegerYesID of the offer to update.
offer_namestringNoNew display name.
offer_statusstringNoactive | inactive | pending
payoutdecimalNoUpdated affiliate payout.
revenuedecimalNoUpdated advertiser revenue.
expiration_datedatetimeNoNew expiry date (YYYY-MM-DD HH:MM:SS).

Sample request

POST https://yourdomain.cakemarketing.com/api/2/update_offer.json { "api_key": "YOUR_API_KEY", "offer_id": 12345, "offer_status": "inactive", "payout": 20.00, "expiration_date": "2026-09-30 23:59:59" }

Sample response

{ "request_status": "Success", "offer": { "offer_id": 12345, "offer_name": "Auto Insurance Quote - US", "offer_status": "inactive", "payout": 20.00, "expiration_date": "2026-09-30 23:59:59" } }


If you have any questions, please reach out to your dedicated CAKE Client Success Manager/Account Manager or contact the CAKE Support Team at support@getCAKE.com.

Did you find it helpful? Yes No

Send feedback
Sorry we couldn't be helpful. Help us improve this article with your feedback.