Complete guide to integrating and using RareSift AI-powered video search platform
Get started with RareSift in minutes. Upload your first video and start searching driving scenarios.
Sign up and get access to the platform
Drag and drop your driving footage
Use natural language to find scenarios
RareSift uses OpenCLIP embeddings to enable semantic search of driving scenarios. Upload videos, and our AI automatically extracts frames and generates searchable embeddings.
Describe scenarios in plain English. Our AI understands context and finds matching frames.
Upload a reference image to find visually similar scenes across your video collection.
Integrate RareSift into your existing workflows with our comprehensive REST API.
Use API keys for secure access to all endpoints:
Process multiple videos simultaneously and export results in various formats.
import requests url = "https://api.raresift.com/v1/search" headers = { "Authorization": "Bearer YOUR_API_KEY", "Content-Type": "application/json" } payload = { "query": "cars merging onto highway", "limit": 10, "similarity_threshold": 0.7 } response = requests.post(url, json=payload, headers=headers) results = response.json() for result in results["results"]: print(f"Frame {result['frame_id']} - Similarity: {result['similarity']:.2f}") print(f"Video: {result['video_filename']}") print(f"Timestamp: {result['timestamp']}s") print("---")
const uploadVideo = async (file) => { const formData = new FormData(); formData.append('file', file); formData.append('metadata', JSON.stringify({ weather: 'sunny', time_of_day: 'day', location: 'highway' })); const response = await fetch('/api/v1/videos/upload', { method: 'POST', headers: { 'Authorization': `Bearer ${API_KEY}` }, body: formData }); const result = await response.json(); console.log('Upload successful:', result.video_id); // Monitor processing status const checkStatus = setInterval(async () => { const status = await fetch(`/api/v1/videos/${result.video_id}`); const video = await status.json(); if (video.processing_status === 'completed') { clearInterval(checkStatus); console.log('Processing complete!'); } }, 5000); };