Campaigns
Endpoints under /v1/campaigns
All endpoints require Authorization: Bearer ck_....
List campaigns
GET /v1/campaigns
Scope: campaigns:list
Query parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
page | integer | 1 | Page number (min 1) |
limit | integer | 10 | One of 1, 5, 10, 25, 50, 100 |
active | boolean | — | Filter by active status |
name | string | — | Max 255 chars |
network | string | — | facebook, google, tiktok, kwai, taboola, pinterest, yandex, mgid, outbrain, sms, revcontent, adskeeper, newsbreak |
Response 200
{
"count": 0,
"data": []
}Each item in data is a CampaignShort. The in_review field mirrors filters.deny_always.
Example
curl -H "Authorization: Bearer ck_YOUR_KEY" \
"https://api.cloakup.me/v1/campaigns?page=1&limit=10"Create campaign
POST /v1/campaigns
Scope: campaigns:create
Request body
CampaignBody. See Campaign create for defaults and minimal example.
Response 201
Get campaign
GET /v1/campaigns/:id
Scope: campaigns:show
Path parameters
| Name | Type | Description |
|---|---|---|
id | integer | Campaign ID |
Response 200
CampaignFull — includes is_test_mode (true if caller IP is in filters.whitelist).
Update campaign
PUT /v1/campaigns/:id
Scope: campaigns:update
Full replace — same schema as create. Not a partial PATCH.
Request body
Response 200
Delete campaign
DELETE /v1/campaigns/:id
Scope: campaigns:delete
Soft-deletes the campaign.
Response 204
HTTP status is 204. The handler may attach a JSON body { "message": "..." } (Express quirk). Treat success as status 204.
Clone campaign
POST /v1/campaigns/:id/clone
Scope: campaigns:clone
No request body.
Response 200
Toggle status
PUT /v1/campaigns/:id/toggle-status
Scope: campaigns:toggle
Toggles the campaign active flag. No request body.
Response 200
Empty body. Re-fetch with GET show if you need the updated active value.