How to Create and Manage Offers via the CAKE API

This article will cover the following:


Overview

The CAKE Offers API lets you create, retrieve, and update offers programmatically — whether you're syncing a large advertiser catalog, automating offer launches, or adjusting caps and payouts in response to campaign performance. All endpoints require your api_key as a query parameter.

Tip:
See Managing Offers in CAKE for a full guide to offer statuses, caps, and how affiliates apply for offers via the UI.

List Offers

Returns a filtered list of offers. Supports pagination via start_at_row and row_limit.

GET /api/2/offers.json
ParameterTypeRequiredDescription
offer_idintegerNoFilter to a single offer by its unique ID.
offer_statusstringNoFilter by status: active, paused, or inactive.
vertical_idintegerNoFilter offers belonging to a specific vertical.
advertiser_idintegerNoFilter offers belonging to a specific advertiser.
tag_idintegerNoFilter offers associated with a specific tag.
start_at_rowintegerNoRow offset for pagination. Default: 0.
row_limitintegerNoMax offers to return. Default: 25.
sort_fieldstringNoField name to sort results by (e.g., offer_name).
sort_descendingbooleanNoSet to true to reverse sort order.

Sample request

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

Sample response

{ "request_status": "Success", "offers": [{ "offer": { "offer_id": 12345, "offer_name": "Premium Credit Card Signup", "offer_status": "active", "vertical_id": 3, "advertiser_id": 88, "offer_url": "https://acmefinancial.com/apply?sub_id={sub_id}", "payout": 45.00, "payout_type": "CPA", "revenue": 55.00, "session_hours": 24 } }], "total_rows": 1 }

Create Offer

Creates a new offer. The offer is created in inactive status by default unless offer_status is specified.

POST /api/2/offer.json
ParameterTypeRequiredDescription
offer_namestringYesDisplay name for the offer.
advertiser_idintegerYesID of the advertiser who owns this offer.
vertical_idintegerYesID of the vertical category for this offer.
offer_urlstringYesDestination URL. Supports CAKE sub ID macros.
offer_statusstringNoInitial status: active, paused, or inactive. Default: inactive.
payoutdecimalNoFlat payout amount paid to affiliates per conversion.
payout_typestringNoPayout model: CPA, CPC, or CPM.
revenuedecimalNoRevenue amount billed to the advertiser per conversion.
revenue_typestringNoRevenue model: CPA, CPC, or CPM.
session_hoursintegerNoCookie window in hours.
expiration_datedateNoOffer end date. Format: YYYY-MM-DD.
offer_descriptionstringNoInternal or affiliate-facing description.

Sample request

POST https://yourdomain.cake.com/api/2/offer.json { "api_key": "YOUR_API_KEY", "offer_name": "Premium Credit Card Signup", "advertiser_id": 88, "vertical_id": 3, "offer_url": "https://acmefinancial.com/apply?sub_id={sub_id}", "offer_status": "active", "payout": 45.00, "payout_type": "CPA", "revenue": 55.00, "session_hours": 24 }

Sample response

{ "request_status": "Success", "offer": { "offer_id": 12346, "offer_name": "Premium Credit Card Signup", "offer_status": "active" } }

Update Offer

Updates an existing offer. Supply only the fields you want to change alongside the required offer_id.

POST /api/2/update_offer.json
ParameterTypeRequiredDescription
offer_idintegerYesID of the offer to update.
offer_namestringNoNew display name.
offer_statusstringNoUpdated status: active, paused, or inactive.
offer_urlstringNoUpdated destination URL.
payoutdecimalNoUpdated affiliate payout amount.
expiration_datedateNoUpdated expiration date. Format: YYYY-MM-DD.

Sample request

POST https://yourdomain.cake.com/api/2/update_offer.json { "api_key": "YOUR_API_KEY", "offer_id": 12345, "offer_status": "paused" }

Sample response

{ "request_status": "Success", "offer": { "offer_id": 12345, "offer_status": "paused" } }

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.