POST /api/v2/buyer/campaigns/{campaignId}/creative-collections/{collectionId}/attach.
Campaign-scoped collections under /campaigns/{campaignId}/creative-collections
keep their existing behaviour and are not described here.
Operations
All paths are under/api/v2/buyer/advertisers/{advertiserId}. The advertiser
must belong to the authenticated customer; otherwise the request returns
NOT_FOUND.
Every response that changes a collection returns the collection as it stands
after the change, read inside the same transaction, and member changes also
return
added_count or removed_count.
The revision check
Each collection carriesupdated_at. Update and member operations require you
to send that value back as expected_updated_at. If the collection changed
since you read it, the request returns 409 CONFLICT and nothing changes; read
the collection again and retry with the new value. This keeps two people or
agents from silently overwriting each other’s work.
Members
Members are saved creatives owned by the same advertiser. Every id inmember_ids must name an active creative of that advertiser; if any id does not,
the request returns 400 VALIDATION_ERROR and no members are added. Adding a
creative that is already a member is a no-op, and removing an id that is not a
member is a no-op that leaves updated_at unchanged. A creative can belong to a
collection whether or not it is assigned to a campaign.
Clearing a description
Send"description": null on the update to clear it. Omitting description
leaves it as it is.
Nesting collections
Setparent_id when creating or updating a collection to place it beneath
another active collection owned by the same advertiser. Send "parent_id": null on an update to move it back to the top level. Reads and list results
include parent_id and descendant_member_count; the latter counts each saved
creative once across the collection and all active descendants.
You cannot make a collection its own parent, move it under one of its
descendants, cross advertiser or customer boundaries, or create a hierarchy
deeper than 16 levels. Archive children first: a collection with active children
cannot be archived.
In the Creative Library
Collections appear as a navigable tree. Nested collections show their full path, and a parent count includes distinct saved creatives in child collections. You can drag a creative onto any collection to add it; the Library immediately offers Undo for the members it added.From an agent
In the v3 tool surface the same operations aresearch and get with
kind: "creative_collection" and an advertiserId, and
save_creative_collection with advertiserId, the collectionId, and the
returned updatedAt as expectedUpdatedAt. Advertiser writes accept name,
description (null clears it), parentId (null clears it), and one
addMemberIds or removeMemberIds list per call. Send isArchived: true to
archive a collection after its children are archived. Send isArchived: false
with the archive response’s expectedUpdatedAt to restore it. A restore
requires that its parent, if any, is active and belongs to the same advertiser.
Campaign-only fields such as role, syncPolicy, and attachToCampaign are
refused for advertiser collections.