Audience matching is in beta. Scores describe relevance under the reported
scoring strategy; they are not purchase probabilities or proof of buying intent.
The API accepts one persona per request, not a contact list, and does not
generate new personas or sync audiences to ad platforms.
Before you start
You need an Upriver API key with access and quota for catalog intake and matching. Use the same API user for catalog setup and matching: catalogs belong to the user who creates them. The examples usecurl and jq.
Set UPRIVER_API_KEY in your environment. If you already have a prepared catalog,
set CATALOG_ID to its ID and skip to Match a persona.
Prepare your advertiser catalog
1. Create a catalog
A catalog is the set of advertisers you want to match against. Save the returnedcatalog_id for subsequent requests.
2. Add advertisers
Choose a stableref for each advertiser. The match response uses this identifier
to connect results back to your own records. You can submit up to 200 entries per
request; inspect each entry’s status in the response before continuing.
3. Research the entries
Hydration researches the advertisers and prepares the characteristics used for matching. Adding an entry alone does not mean it is ready to match.202 response means the request was accepted. Check selected and skipped;
mode indicates whether processing started immediately (inline) or was queued
(queued). Check progress periodically:
succeeded before expecting the prepared entry to participate fully.
pending and running mean work is unfinished; partial means only some research
is available. For failed or stale, retry hydration for the affected ref.
To retry a partial entry, include its ref and "force": true in the hydration
request. Avoid repeatedly restarting entries that are still running.
Match a persona
Send a description of the audience’s stated needs, interests, and situation. Include relevant constraints and objections. Use information you actually have; do not invent individual preferences from a broad segment label.persona.summary (free text), persona.profile
(structured fields), or persona.facets (characteristics you have already typed).
See the Match Persona reference for all request fields,
settings, and the complete response schema.
Read the score and audience breakdown
A facet is a short statement about a persona or an advertiser’s audience, such as a need, interest, or situation. The response separates the supplied persona’s interpretation from the matches it supports.
This illustrative excerpt shows the fields to use for a score column and its
explanation. Values are examples, not measured results; other response fields
are omitted.
Compare candidate audiences
Submit each persona against the same prepared catalog with the same settings. Store its description, advertiser ref, score, reasons, strategy, and response status together. In a spreadsheet or a workflow such as Clay, these can become columns you use to review and prioritize candidate segments. This requires your own integration; it is not a built-in Clay audience-list scoring operation. Check status before comparing results.completeness can be complete, truncated,
or unavailable. A fallback or a different strategy_version can change what a
score means, so do not silently mix these results into one ranking.
The endpoint returns qualifying matches rather than a score for every catalog
entry. A missing advertiser or empty matches array is not a zero score:
check research readiness, response status, exclusions, and score thresholds.
Validate any filtering threshold on examples representative of your use case.
Get facets without running a match
To inspect an advertiser’s stored characteristics and evidence, request:facets with kind, text, confidence, evidence_grade,
sensitive, brand/product scope, and supporting evidence. It reads existing
research; it does not create new research or score a persona. The default limit
is 200, with a maximum of 500. Check truncated to see whether more facets exist
than the response contains.
POST /v1/audience_dimensions serves a different starting point: a brand URL
becomes researched audience facts categorized as behaviors, motivations,
lifestyles, concerns, or interests. Matching facets can draw on that research,
but also on brand, product, and persona research. Use
Personas when you need to discover audience
personas before assessing their fit. There is no separate endpoint that only
interprets a supplied persona; its facets come back in the match response.
Limits and troubleshooting
Matching is limited to 60 requests per 60-second window per API user, in addition to account quota. The default result limit is 10; you can request 1–50 advertisers.
For example, an unknown or inaccessible catalog returns
404 with: