Avatar catalog search returns few results: auto_expand explained
When an avatar catalog search is thin, Sume relaxes filters in a set order and lists them in relaxed_filters. Set auto_expand to false for strict matching.
If POST /v1/avatar-catalog/search returns fewer avatars than you filtered for, check data.relaxed_filters in the response. auto_expand is on by default, and when results are thin, Sume relaxes the search in a fixed order: soft text first, then product_category, then best_for. Language, visibility and ownership are never relaxed. Send auto_expand: false to keep strict filtering.
When does a search count as thin?
The min_results field is the threshold, default 5 and range 1 to 100. The schema says secondary filters may relax until at least that many results are available when possible. Setting min_results to 1 makes expansion rarer; a higher number makes it more likely.
| Step | What relaxes | Stays fixed |
|---|---|---|
| 1 | Soft text match | Language, visibility, ownership |
| 2 | product_category | Language, visibility, ownership |
| 3 | best_for | Language, visibility, ownership |
How do I know what was relaxed?
The response carries relaxed_filters, an array of the filters or matching rules that auto-expand relaxed; it is empty when nothing was relaxed. It also returns candidate_count, the number of candidates loaded before scoring, and filters, the filters the request used.
Log relaxed_filters next to the query. If your UI promises "beauty creators" and the list contains product_category, the grid is showing a wider set than the label says.
{
"query": "creator",
"filters": {
"status": "ready",
"product_category": "beauty",
"use_case": "beauty_ugc",
"language": "ko"
},
"min_results": 3,
"auto_expand": false,
"limit": 10
}Which filters can I send?
These are the filters in the request schema; each one narrows the candidate set.
status:processing,ready,failedorarchived; defaultready.visibility:publicorprivate; private results are limited to your workspace.product_category(string) orproduct_categories(up to 20),use_case,language.best_for: a string or up to 20 strings.
Sources
Related posts
More in Developers
- Face swap job completed but no video_url: resource_status
For Avatar Face Swap, poll job_status but read the video only when resource_status is ready. How to poll /v1/jobs and fetch the result without an empty URL.
- Face swap source clip: 4-15 seconds with usable audio on Sume
Sume's Avatar Face Swap Beta targets source videos of about 4-15 seconds with usable audio. What the docs say on length, silent clips, and unsupported fields.
- Approved an avatar preview, now the hook changed: new preview
Sume's generate-video from an avatar preview keeps the script and first frame. Only quality can change, so a new hook needs a new preview.
- Avatar video 409 avatar_not_ready: wait for the avatar to be ready
POST /v1/avatar-1.0/talking-video returns 409 avatar_not_ready when the avatar is still processing or failed. Poll the avatar's resource_status, then submit.
Written by Sume