matchToken from one of three searches. The token fixes the channel set: campaign creation buys exactly the channels cached under it, and a channel outside that search can never be bought by that campaign.
Three ways to search
- From your ad copy
- From a sentence
- Look-alikes
destinationUrl and the foreign-domain rule cannot be evaluated without one. Validate separately.POST /api/v1/campaigns/generate-channel-prompt writes a prompt on your behalf from your ad copy, capped at 300 characters — a search box, not a brief. Drop it straight into match-channels-by-prompt.
Extending a selection instead of replacing it
Pass the previousmatchToken to a look-alike search and the seeds are carried into the new list, at its head, with relevancy: 1. The selection extends.
Seeds never come back among the look-alikes themselves: a seed is its own closest look-alike and would fill the top of the answer. They are re-added from matchToken when one is given. A token belonging to another user, project or platform is refused; an expired one is treated as absent.
Reading the results
Checking how you were read
filters comes back only from match-channels-by-prompt — the only search that infers its filters rather than being told them. It reports what was read out of your sentence, so 20K+ subscribers appears as minSubscribers: 20000. If that is not what you meant, reword and search again.
An absent field means no such filter narrowed the search. ranking (balanced, max_reach, max_engagement) and minManagerContactConfidence (any, low, medium, high) always come back, because the search always ranks somehow and always applies a contact requirement.
Striking channels off
You do not have to buy everything a search returned. PassexcludedChannelIds to campaign creation and those channels become neither placements nor part of the queue behind them — the campaign can never come back to one of them later. Ids outside the previewed set are ignored; a strike-out list that leaves nothing at all is a 400.