Examples

These examples combine calls documented individually elsewhere into complete, runnable flows.

Build a searchable clip library

Using the Python SDK to index a folder of recordings and search them.

1from pureframe import Pureframe
2import time
3
4client = Pureframe(api_key="pf_...")
5
6# 1. Create a collection
7collection = client.collections.create(name="Sales calls")
8
9# 2. Upload every recording in a folder
10import glob
11job_ids = []
12for path in glob.glob("recordings/*.mp4"):
13 job = client.upload(collection_id=collection.data.id, file=open(path, "rb"))
14 job_ids.append(job.data.job_id)
15
16# 3. Wait for every job to finish
17for job_id in job_ids:
18 while True:
19 status = client.jobs.get(job_id)
20 if status.data.status in ("done", "failed"):
21 break
22 time.sleep(5)
23
24# 4. Search across the whole collection
25results = client.search(query="customer mentions renewal", collection_id=collection.data.id)
26for video in results.data:
27 for seg in video.segments:
28 print(f"{video.filename} @ {seg.timestamp_start:.1f}s — {seg.score:.2f}")

Give an agent video search via MCP

Configure Claude Code to search your library directly, using the setup from the MCP guide:

$claude mcp add pureframe -- npx -y pureframe-mcp

Set PUREFRAME_API_KEY to a read_only key (see API Keys) so the agent can search but never upload or delete. Then, in conversation:

“Search our onboarding call recordings for anywhere a customer asks about SSO, and tell me what was said.”

Claude calls search_videos, receives clips with thumbnail_base64 and transcribed speech, and can answer directly from what it sees and reads — no manual video scrubbing.

Reverse image search for brand mentions

Find every moment a specific product or logo appears on screen, using a reference image instead of a text description:

$curl -X POST https://api.pureframe.ai/v1/search \
> -H "Authorization: Bearer pf_..." \
> -F "image=@logo-reference.jpg" \
> -F "modes=video"

This restricts to modes=video since a static reference image has no transcript to match. Combine with collection_id to scope the scan to a specific library (e.g. a collection of user-generated video submissions) — see Search for the full parameter reference.