Developer Resources
Developer Guides | FrameFlow
AI-Powered 4K Stock Footage Marketplace
Embedding the FrameFlow Search Widget
Integrate our real-time footage search directly into your production dashboards or client portals in under five minutes.
Step 1: Generate a Widget Secret
Navigate to Dashboard > API Keys > Widgets. Create a new secret with read:footage scope. Note the ff_widget_8x9k2m... string for the next step.
Step 2: Inject the Script Tag
Place the following snippet before your closing </body> tag. Replace the placeholder with your actual secret.
<script src="https://cdn.frameflow.io/widget/v2.4/embed.js"></script> <div id="ff-search-container" data-widget-id="ff_widget_8x9k2m" data-default-fps="24" data-aspect="16:9"></div>
Step 3: Initialize & Style
The widget auto-mounts on DOMContentLoaded. Override default CSS variables like --ff-accent: #00D4FF; to match your brand. Full theme documentation is available in the reference guide.
Batch-Downloading via CLI
Automate high-volume asset retrieval for offline editing suites and automated VFX pipelines using the FrameFlow CLI tool.
First, install the CLI globally via npm or pip. Authenticate using your organization’s bearer token, then execute batch jobs with precise filter parameters.
Authentication & Configuration
Run ff-cli auth --token your_api_key to store credentials securely in your local keychain. Verify connectivity with ff-cli ping.
Executing a Batch Job
Use the download command with JSON filter syntax. Example: retrieve all 4K drone shots tagged "urban" from Q3 2024.
ff-cli batch download \
--filter '{"resolution": "3840x2160", "tags": ["urban", "drone"], "date_range": "2024-07-01..2024-09-30"}' \
--output ./assets/q3_drone \
--concurrency 4
Managing Resumable Downloads
The CLI automatically handles interrupted transfers. Check job status with ff-cli jobs list and resume any stalled queue using --resume. Logs are written to ~/.frameflow/cli/logs/.
Creating Custom API Collections
Curate dynamic, programmatic asset libraries that update in real-time based on your project’s visual requirements.
Collections function as persistent API endpoints. Define them via our REST API, then query them like standard endpoints with added metadata layers.
Define Collection Schema
POST to /v1/collections with a JSON payload specifying name, slug, and initial filter rules. Include a webhook URL if you want real-time sync notifications.
{
"name": "Neon Cyberpunk B-Roll",
"slug": "neon-cyberpunk-v2",
"filters": {
"min_duration_sec": 8,
"color_palette": ["#FF00FF", "#00FFFF"],
"exclude_watermark": true
},
"webhook_url": "https://hooks.yourapp.com/ff-sync"
}
Query & Iterate
Retrieve your collection using the generated collection_id. Paginate results using cursor-based offsets. Add or remove items dynamically with PATCH requests to /v1/collections/{id}/items.
Version Control & Rollback
Every schema change creates a version snapshot. Use the ?version=2 query parameter to lock your pipeline to a specific collection state, preventing unexpected asset swaps during active renders.