PATCH /v1/layers/:layerId/optimizer/write-classes
Per-layer optimizer write-class flags. Override the org-level GrowthBook defaults.
/v1/layers/:layerId/optimizer/write-classes- Auth
- Bearer
- Scope
- ads:write:policy
Layers' optimizer evaluates many write classes (creative push/replace, targeting, schedule, structural budget tweaks, etc.). At the org level these are gated by GrowthBook flags — too coarse for partners running many projects per org.
This endpoint exposes per-layer overrides. Each flag in the body sets a Boolean on project_layers.config.optimizer for one specific write class.
Body
enable_targetingbooleanoptionalAllow optimizer to PATCH adset targeting.enable_schedulebooleanoptionalAllow optimizer to PATCH adset schedule / dayparts.enable_structuralbooleanoptionalAllow optimizer to create/pause/delete campaigns and adsets.
The optimizer reads per-layer flags first, falling back to the org-level GrowthBook flag when a per-layer flag is unset.
Request
curl -X PATCH https://api.layers.com/v1/layers/$LAYER_ID/optimizer/write-classes \
-H "Authorization: Bearer $LAYERS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"enable_targeting": true,
"enable_schedule": false,
"enable_structural": false
}'See also
POST /v1/projects/:projectId/ads/optimizer/run
Trigger an ad-optimizer run. Returns a job id; long-running (5–15 min). Webhook fires on completion with humanized change list.
POST /v1/projects/:projectId/ads/:platform/pending/:pendingId/{approve,reject}
Approve or reject a pending optimizer action queued by the gate's `draft` axes.