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.

View Widget Reference Copy Quick-Start Snippet

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.

Access API Playground Download SDKs