search command. The examples below distinguish terminal filtering of aspect ls output from content search requests.
Filter a directory listing
aspect ls lists one level. Its JSON entries include id, name, and type; asset entries can also include size in bytes.
With jq installed, find filenames containing a word:
Choose a content channel
Search requests contain one or more signals. Each signal names a channel and the text to match:
Use short, direct descriptions. Transcript search concerns speech; a query for
applause is not an audio-event detector. Filename search does not search folder paths and is not a glob or regular expression. For a strict filename condition, use the Name metadata filter described below.
Content channels depend on the asset’s available processing results. A recently uploaded file may have a name before its transcript or visual analysis is ready.
Run a search from the terminal
First find your project ID. This returns the projects in a workspace:PROJECT_ID to the selected project’s UUID, and configure ASPECT_API_KEY as described in Authentication. Raw curl requests use that key directly, independently of whichever desktop account the CLI uses.
spec value unless stated otherwise. Keep project_id at the top level when sending them.
Combine visual and spoken content
Discover metadata filters
Filters refer to attribute UUIDs. Select fields also use option UUIDs, rather than their displayed labels. Retrieve the available attributes for your project:assets_search_capabilities with project_id to obtain channel descriptions, filter attributes, valid clauses, and selectable values. Its select_options field supplies option IDs. The current capabilities response omits Path; use the REST attribute list to discover Path for folder filters.
Apply mandatory conditions
Thisspec selects videos with a duration from 30 through 120 seconds. Replace every placeholder with a discovered UUID:
signals array makes this a filter-only search. At least one signal or filter is required. Add these filters to a visual or transcript search to keep only ranked candidates that satisfy them.
Separate filter entries combine with AND. Multiple values inside a positive eq, contains, or includes filter match any listed value. For example, one Name contains filter with ["interview", "b-roll"] matches either string. Two separate Name filters require both. For ranges, use separate lower and upper bounds as above.
Use the clauses valid for the selected attribute. Text comparisons are case-insensitive;
% and _ are literal characters. includes matches any selected value, while not_includes excludes the listed values. Boolean clauses and supported exists/not_exists checks need no comparison values.
Search within a folder
Discover the Path attribute’s ID fromattributes.json and the folder’s ID by listing its parent with aspect ls --json. Add this filter to spec.filters:
includes covers the folder and all nested folders. Use eq to restrict results to immediate children. A list of folder UUIDs matches any listed location. The request still needs the containing project’s project_id.
Find a known person
Use the People attribute and a known FACE entity UUID. MCP capabilities can provide available person options;entities_list can also discover entity IDs. Putting someone’s name in a visual query is not equivalent to filtering for their recognized identity.
Read results and narrow the search
REST results are inassets; each asset’s search contains an ordering score, a confidence label, signal summaries, and moments. A score is not a probability. Filter-only results use score 1 and confidence unknown.
Moments can include start_time and end_time in seconds, a 1-indexed document page, and an evidence_text excerpt marked lexical or semantic. Filename matches are asset-level and need not have timestamps. Excerpts are bounded evidence, not the full transcript.
MCP assets_search accepts the same project_id and spec, plus optional asset_id. Its compact results expose matches on each asset. In REST, search one asset with POST /search/asset/<asset-uuid>/run, sending project_id and spec; the response is search metadata directly.
Search has no public pagination parameters or total-match count. Signal searches use a bounded candidate pool, and metadata filters can reduce it further. An empty result is not proof that the project contains no relevant file. Narrow the query, try a different channel, or use filter-only search for metadata criteria. MCP’s returned and available describe the returned set, not an independent count of every possible match.
Use the result’s folder path with aspect download to retrieve the media. You can replace the final filename with its asset UUID to avoid name ambiguity; keep the containing folders in the URL. Or download a proxy for a smaller viewing copy.