This article will cover the following:
When to use these endpoints:
Use these write endpoints to create offers in bulk, automate offer setup during advertiser onboarding, or update payout and status without logging into the CAKE UI.
Use these write endpoints to create offers in bulk, automate offer setup during advertiser onboarding, or update payout and status without logging into the CAKE UI.
Authentication: All CAKE API requests require your
api_key parameter. Find yours under Setup → System Access → API Keys.Part of a series: This focused guide is part of the complete CAKE API — Offers reference, which documents all available endpoints for this feature area.
Available Endpoints
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
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | Yes | Your CAKE API key. |
| offer_name | string | Yes | Display name for the offer. |
| advertiser_id | integer | Yes | ID of the advertiser running this offer. |
| vertical_id | integer | Yes | Vertical category the offer belongs to. |
| offer_url | string | Yes | The tracking URL affiliates will use. |
| preview_url | string | No | Landing page preview URL for affiliates. |
| offer_status | string | No | active | inactive | pending. Default: active. |
| payout | decimal | No | Affiliate payout amount. |
| payout_type | string | No | cpa | cpc | cpm | revshare |
| revenue | decimal | No | Advertiser revenue amount. |
| revenue_type | string | No | cpa | cpc | cpm | revshare |
| currency_id | integer | No | Currency ID (1 = USD). |
| session_hours | integer | No | Cookie duration in hours. |
| expiration_date | datetime | No | Offer expiry (YYYY-MM-DD HH:MM:SS). |
| offer_description | string | No | Internal 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
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | Yes | Your CAKE API key. |
| offer_id | integer | Yes | ID of the offer to update. |
| offer_name | string | No | New display name. |
| offer_status | string | No | active | inactive | pending |
| payout | decimal | No | Updated affiliate payout. |
| revenue | decimal | No | Updated advertiser revenue. |
| expiration_date | datetime | No | New 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"
}
}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
| Parameter | Type | Required | Description |
|---|---|---|---|
| api_key | string | Yes | Your CAKE API key. |
| offer_id | integer | Yes | ID of the offer to update. |
| offer_name | string | No | New display name. |
| offer_status | string | No | active | inactive | pending |
| payout | decimal | No | Updated affiliate payout. |
| revenue | decimal | No | Updated advertiser revenue. |
| expiration_date | datetime | No | New 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"
}
}You may also be interested in:
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.