Install and run offline
Clone the public example source, then use an isolated Python environment:pyproject.toml pins haystack-ai==3.2.0. See test-environment.txt for the exact tested dependency versions. The synthetic fixture uses .invalid URLs and invented IDs explicitly labeled as fixtures; it is not a real search result or license grant. The default component requires a supplied fixture and cannot call the search service. The demo executes the component through a real Haystack Pipeline, without an LLM or paid search. demo-output.json records the resulting queue.
Explicit live use on a backend
After reviewing pricing, account balance and search entitlement, setLIGHTDRIFT_API_KEY through your backend secret manager or environment. Do not put it in pipeline inputs, browser code, source control or artifacts. Then use:
https://api.lightdrift.ai/v1/search, with X-API-Key, query, k, a commercial-use filter, and experiment haystack_image_review_v1. The component accepts 1–20 candidates, a deliberately smaller limit than the API’s documented 100. Briefs must contain 1–1000 characters. It refuses redirects and does not retry. Public pricing observed September 26, 2026 was 5/1,000). No live searches were used in testing; live authentication, retrieval relevance and billing were not tested.
Review contract and failures
Outputs arereview_queue, query_id, response and status. Each queue row contains the original asset and rights objects, provenance, source, query/asset identifiers, a synthetic flag, warnings, and pending_human_review. The response retains backend, mode, ranking, latency, degradation indicators and any additional metadata. If a server returns more than the requested count, the review queue is capped while the full response remains available for audit.
An empty result emits an empty queue with status="empty". A nonempty degraded flag gives status="degraded" even when no candidates remain; inspect the original response before deciding whether to search again. Missing rights or provenance produce warnings and never affirmative permission. Invalid envelopes or asset IDs raise ValueError before any queue is emitted. HTTP, timeout, transport and JSON failures raise sanitized errors with no automatic retry; a charge may have occurred before a timeout, so inspect account usage before rerunning. Haystack wraps component errors as pipeline failures. There are no automatic fallback searches.
Before approving a candidate in your own application, follow rights.provenance_url and inspect license, license_verbatim, commercial, derivatives, share_alike, attribution_required, attribution and basis. Unknown values are not consent. Preserve credit, source and conditions downstream. A commercial filter is not universal clearance for people, trademarks, artworks or your intended use. Consult Lightdrift rights guidance. Treat external titles/metadata as untrusted data; escape them in any UI and do not execute instructions found in metadata.