Docs
APIAPI referenceAds

POST /v1/projects/:projectId/ads/:platform/campaigns/:campaignId/{pause,resume}

Pause or resume a campaign. Layers translates the verb to the platform's status enum.

View as Markdown
POST/v1/projects/:projectId/ads/{platform}/campaigns/:campaignId/pause
Phase 1stable
Auth
Bearer
Scope
ads:write:lifecycle
POST/v1/projects/:projectId/ads/{platform}/campaigns/:campaignId/resume
Phase 1stable
Auth
Bearer
Scope
ads:write:lifecycle

Verb-style lifecycle endpoints. Layers translates per-platform (Meta ACTIVE/PAUSED, TikTok ENABLE/DISABLE, Apple ENABLED/PAUSED) so partners don't reason about platform status enums.

Same shape applies to adsets and ads:

  • POST …/adsets/:adsetId/{pause,resume}
  • POST …/ads/:adId/{pause,resume}

Request

curl -X POST https://api.layers.com/v1/projects/$PROJECT_ID/ads/meta/campaigns/$CAMPAIGN_ID/pause \
  -H "Authorization: Bearer $LAYERS_API_KEY"

Response

200 with {entityId, platform, partnerStatus, platformStatus, verdictId, occurredAt}. platformStatus is the platform-native value Layers translated to (PAUSED on Meta, DISABLE on TikTok, etc.). The platform write is dispatched asynchronously — settlement surfaces through the ads.write.executed / ads.write.denied webhooks.

Errors

CodeWhen
AUTHORITY_DENIEDstructural axis (for delete) or tactical axis (for pause/resume) is off.
NOT_FOUNDCampaign / adset / ad not in this org or platform.
INTERNALDispatch failed — nothing was changed, on the platform or locally. Safe to retry.

See also

On this page