PATCH /v1/projects/:projectId/ads/:platform/adsets/:adsetId/budget
Update an adset's daily or lifetime budget. Cents universally.
/v1/projects/:projectId/ads/{platform}/adsets/:adsetId/budget- Auth
- Bearer
- Scope
- ads:write:budgets
Same shape as PATCH …/campaigns/:id/budget but at the adset grain. Apple uses "adgroup" for this entity — partner contract uses adsets uniformly and Layers translates.
curl -X PATCH https://api.layers.com/v1/projects/$PROJECT_ID/ads/meta/adsets/$ADSET_ID/budget \
-H "Authorization: Bearer $LAYERS_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "dailyBudgetCents": 2500 }'Authority: gated by the tactical axis on the parent campaign.
See PATCH …/campaigns/:id/budget for full body / response / error documentation — the contract is identical.
CBO vs ABO interplay
On Meta with CBO (campaign budget optimization), adset-level budget is ignored — the campaign's budget is the source. PATCHing adset budget on a CBO campaign returns PLATFORM_REJECTED. Use GET …/campaigns/:id to read budgetMode (CBO or ABO) before deciding which endpoint to call.
GET / PATCH /v1/projects/:projectId/ads/:platform/defaults
Read or update the layer-level defaults block — the fallback authority for campaigns without per-campaign authority pinned.
PATCH /v1/projects/:projectId/ads/:platform/adsets/:adsetId/targeting
Update an adset's targeting (geo, age, custom audiences, placements).