Cloakup API
API reference

Campaigns

Endpoints under /v1/campaigns

All endpoints require Authorization: Bearer ck_....

List campaigns

GET /v1/campaigns

Scope: campaigns:list

Query parameters

ParameterTypeDefaultDescription
pageinteger1Page number (min 1)
limitinteger10One of 1, 5, 10, 25, 50, 100
activeboolean—Filter by active status
namestring—Max 255 chars
networkstring—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

CampaignFull


Get campaign

GET /v1/campaigns/:id

Scope: campaigns:show

Path parameters

NameTypeDescription
idintegerCampaign 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

CampaignBody

Response 200

CampaignFull


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

CampaignFull


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.

On this page