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.
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.
| Parameter | Type | Required | Description |
|---|---|---|---|
| offer_id | integer | No | Filter to a single offer by its unique ID. |
| offer_status | string | No | Filter by status: active, paused, or inactive. |
| vertical_id | integer | No | Filter offers belonging to a specific vertical. |
| advertiser_id | integer | No | Filter offers belonging to a specific advertiser. |
| tag_id | integer | No | Filter offers associated with a specific tag. |
| start_at_row | integer | No | Row offset for pagination. Default: 0. |
| row_limit | integer | No | Max offers to return. Default: 25. |
| sort_field | string | No | Field name to sort results by (e.g., offer_name). |
| sort_descending | boolean | No | Set 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=falseSample 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.
| Parameter | Type | Required | Description |
|---|---|---|---|
| offer_name | string | Yes | Display name for the offer. |
| advertiser_id | integer | Yes | ID of the advertiser who owns this offer. |
| vertical_id | integer | Yes | ID of the vertical category for this offer. |
| offer_url | string | Yes | Destination URL. Supports CAKE sub ID macros. |
| offer_status | string | No | Initial status: active, paused, or inactive. Default: inactive. |
| payout | decimal | No | Flat payout amount paid to affiliates per conversion. |
| payout_type | string | No | Payout model: CPA, CPC, or CPM. |
| revenue | decimal | No | Revenue amount billed to the advertiser per conversion. |
| revenue_type | string | No | Revenue model: CPA, CPC, or CPM. |
| session_hours | integer | No | Cookie window in hours. |
| expiration_date | date | No | Offer end date. Format: YYYY-MM-DD. |
| offer_description | string | No | Internal 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.
| Parameter | Type | Required | Description |
|---|---|---|---|
| offer_id | integer | Yes | ID of the offer to update. |
| offer_name | string | No | New display name. |
| offer_status | string | No | Updated status: active, paused, or inactive. |
| offer_url | string | No | Updated destination URL. |
| payout | decimal | No | Updated affiliate payout amount. |
| expiration_date | date | No | Updated 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.