edges, filters by edge type and direction, and returns the linked documents (carrying the edge’s attributes with each result).
Stage Category: APPLY (relationship traversal)Transformation: N documents → M linked documents (optionally including the originating documents)
When to Use
When NOT to Use
How it works
- For each document entering the stage, the stage reads its root-level
edgeslist. - Edges are kept when their
typematchesedge_typeand theirdirectionmatches the configureddirection. - Each kept edge’s
target_object_idis resolved to the linked document(s); withtarget_collection_idset, only documents from that collection are returned. - Matched documents are returned with the originating edge’s
attributesattached (e.g.clip_order,start_ticks_in/start_ticks_out), so downstream stages can use them.
edge_type and direction.
Creating edges on objects
Edges are customer-owned data written at the root of an object when you create it (never under_internal). They flow automatically from the object,
through your collections, into each document’s search payload — so a stage can
follow them at query time without you re-computing anything.
Pass an edges array to POST /v1/buckets/{bucket_id}/objects:
Parameters
Example
Starting from an ad document, fetch every piece of footage it uses:edge_type also accepts a list to follow several relationship types in a single
stage — e.g. "edge_type": ["uses_footage", "used_in_ad"] returns documents reached
by either edge, each still labelled with its own traversed_via.
Each returned footage document carries the edge attributes from the ad that referenced it — clip_order, start_ticks_in, and start_ticks_out — so you know exactly where in the footage each clip was taken.
The traversed_via response
Every document produced by traversal carries a traversed_via field describing
the edge (or edges) that reached it:
Single source (footage → ad,
used_in_ad) — traversed_via is an object:
uses_footage, where two
ads reference the same footage) — traversed_via is a list:
uses_footage/out from an ad to reach its footage,
or used_in_ad/out from that footage to reach the ads that use it — and the
attributes (clip order, ticks) are identical in both directions.
Related
- Objects — how edges are stored on objects and flow to documents
- Iconik integration — how footage↔ad edges are captured at ingestion
- Cross Compare — match content across collections by similarity instead of saved edges

