Layers
Partner APIAPI referenceAds

GET / PATCH /v1/projects/:projectId/ads/:platform/campaigns/:campaignId/authority

Read or update a campaign's bucket-mode authority block (creative / tactical / structural axes).

View as Markdown
GET/v1/projects/:projectId/ads/{platform}/campaigns/:campaignId/authority
Phase 1stable
Auth
Bearer
Scope
ads:read
PATCH/v1/projects/:projectId/ads/{platform}/campaigns/:campaignId/authority
Phase 1stable
Auth
Bearer
Scope
ads:write:policy

Inspect or modify the per-campaign authority block. The block is the source of truth for whether subsequent writes against this campaign dispatch (auto), queue (draft), or are denied (off). Customer's layer-defaults block is the fallback when per-campaign authority isn't pinned.

A PATCH from a partner key flows through the gate identically to a customer-issued PATCH — partner cannot escalate past customer policy.

Path parameters

  • projectId
    string (uuid)required
  • platform
    stringrequired
    One of: meta, tiktok, apple
  • campaignId
    stringrequired
    Layers campaign id (`cmp_…`).

GET response

{
  "campaignId": "cmp_01HZX9...",
  "platform": "meta",
  "authority": {
    "creative": "auto",
    "tactical": "draft",
    "structural": "off"
  },
  "source": "per_campaign",
  "lastModifiedAt": "2026-05-08T14:32:11Z",
  "lastModifiedBy": {
    "actorType": "partner",
    "actorOrganizationId": "org_2481fa5c-a404-44ed-a561-565392499abc",
    "actorApiKeyId": "key_c2037bb9..."
  }
}

source is per_campaign (this row) or layer_defaults (inherited from the layer's defaults block).

PATCH body

Body
  • authority
    objectrequired
    `{ creative?, tactical?, structural? }`. Each axis: `off` | `draft` | `auto`.
curl -X PATCH https://api.layers.com/v1/projects/$PROJECT_ID/ads/meta/campaigns/$CAMPAIGN_ID/authority \
  -H "Authorization: Bearer $LAYERS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "authority": { "creative": "auto", "tactical": "draft", "structural": "off" }
  }'

PATCH response

{
  "campaignId": "cmp_01HZX9...",
  "authority": { "creative": "auto", "tactical": "draft", "structural": "off" },
  "verdictId": "ver_01HZX9..."
}

Errors

CodeWhen
AUTHORITY_DENIEDCustomer's layer-defaults policy refuses the requested axis change.
FORBIDDEN_SCOPEKey lacks ads:write:policy.
NOT_FOUNDCampaign not in this org.

See also

On this page