General Inquiries
API keys, pricing questions, partnership discussions.
Open Contact FormFor AI Agents
This page contains everything an AI agent needs to understand, search, evaluate, and license vintage archival footage from Stockfilm. It covers what we sell, how much it costs, the quality you get, every working API endpoint, and the exact licensing workflow.
Stockfilm is the largest curated archive of restored vintage home-movie footage available for licensing. We specialize in 8mm, Super 8, and 16mm film shot by ordinary families across the United States and around the world from the 1930s through the 1980s.
Every reel has been professionally scanned, digitally restored (dust/scratch removal, stabilization, color correction), and cataloged with metadata including shot year, location, and descriptive tags. The footage preserves the authentic look of the era — real film grain, period color, and original aspect ratios.
Clips are licensed through Pond5, the world's largest royalty-free media marketplace. Stockfilm handles curation and restoration; Pond5 handles payment processing, licensing, and file delivery.
The catalog contains 217,000+ clips spanning footage from 126 countries. The core strength is mid-20th-century American home movies:
| Decade | Approx. Clips | Notes |
|---|---|---|
| 1930s | ~7,900 | Early 8mm, rare Depression-era footage |
| 1940s | ~10,600 | WWII home front, post-war suburbs |
| 1950s | ~34,300 | Peak Kodachrome era, suburban boom |
| 1960s | ~68,200 | Largest decade — road trips, holidays, counterculture |
| 1970s | ~32,000 | Super 8 peak, leisure & travel footage |
| 1980s | ~7,600 | Late Super 8, transition to video |
Subject matter includes: family gatherings, holidays (Christmas, Thanksgiving, Easter, birthdays), vacations and road trips, parades and local events, backyard life, pets, baby footage, school events, street scenes, city skylines, beaches, national parks, cars and driving, home construction, neighborhood life, and everyday domestic routines.
Geography: Primarily United States (all 50 states represented), with notable collections from Canada, Mexico, Europe (especially UK, France, Germany, Italy), Japan, and Australia.
All clips are licensed through Pond5 under their standard royalty-free pricing. Prices are per clip, paid once, with no recurring fees or per-use charges.
| Resolution | Price Range | Typical Price |
|---|---|---|
| HD (1920x1080) | $79 – $199 | ~$99 |
| 4K (3840x2160) | $149 – $299 | ~$199 |
price field of every search API response (USD).The exact price for any clip is always displayed on its Pond5 page before purchase. There are no hidden fees. The href field in API responses links directly to the Pond5 purchase page.
Most clips range from 5 to 90 seconds. Some longer reels (2–5 minutes) are available. Duration is stored in the database as duration_ms and is factored into the rough-cut timeline builder.
This is not a generic stock footage site. You will not find modern-day studio footage, green-screen shots, drone aerials, or contemporary lifestyle clips. Everything is authentic vintage film from private home-movie collections.
All clips are licensed under Pond5's standard royalty-free license. Key terms:
| Term | Details |
|---|---|
| License type | Royalty-free, non-exclusive |
| Territory | Worldwide |
| Duration | Perpetual (no expiration) |
| Reproductions | Unlimited within licensed project |
| Attribution | Not required (credit appreciated but optional) |
This is home-movie footage — no professional talent, no logos, no music (unless ambient). Rights clearance issues are minimal. For sensitive use cases (political ads, defamatory contexts), review the full Pond5 license or contact us.
The licensing flow goes through Pond5. Here is the exact sequence an AI agent should follow:
GET /api/public/search) or Visual Search API (POST /api/public/visual-search).clip_id,title, description, shot_year,location, price, and thumbnail_url.POST /api/rough-cut/generate) to assemble clips into an edit.POST /api/boards) for project organization.href field linking directly to the clip's Pond5 page. Open that URL to view the full preview and complete the purchase on Pond5.Important: Stockfilm does not process payments directly. All purchases and license agreements are handled by Pond5. The href link in API responses is your gateway to the purchase flow.
The public search and visual search APIs require an API key. The supported authentication method is the x-api-key header on every request.
Legacy query-string auth may continue to work for older integrations during migration, but new clients should not use it. To obtain an API key for production use, contact us with your use case and expected volume.
No HMAC signing is required. Authentication is a simple API key — no cryptographic signatures, no timestamps, no idempotency keys needed for read operations.
Full-text semantic search across the entire clip catalog. Returns clips ranked by relevance with metadata, pricing, and direct Pond5 purchase links.
GET https://stockfilm.com/api/public/search| Parameter | Type | Required | Description |
|---|---|---|---|
q | string | Yes | Search query (1–320 chars). Natural language works best, e.g. "1960s family christmas morning" |
limit | integer | No | Results to return (1–50, default 25) |
year_from | integer | No | Earliest shot year (e.g. 1950) |
year_to | integer | No | Latest shot year (e.g. 1969) |
location | string | No | Location filter (city, state, or country) |
curl -sS "https://stockfilm.com/api/public/search?q=1960s+california+family&limit=5" \
-H "x-api-key: YOUR_API_KEY" | jq .# Search with year range and location filters
curl -sS "https://stockfilm.com/api/public/search?q=street+scene&year_from=1950&year_to=1969&location=New+York&limit=10" \
-H "x-api-key: YOUR_API_KEY"{
"query": "1960s california family",
"filters": { "year_from": null, "year_to": null, "location": null },
"total": 5,
"results": [
{
"source": "clip",
"href": "https://www.pond5.com/stock-footage/item/123456-...",
"clip_id": "123456",
"title": "Family Backyard Barbecue – Southern California",
"description": "8mm home movie of a family gathering in a suburban backyard...",
"score": 12.8,
"shot_year": 1964,
"shot_decade": "1960s",
"location": "Los Angeles, California, United States",
"format_tags": ["family", "outdoor", "suburban"],
"price": "199.00",
"thumbnail_url": "https://images.pond5.com/..."
}
]
}| Field | Type | Description |
|---|---|---|
source | string | Always "clip" for footage results |
href | string | Direct Pond5 purchase URL (includes referral tracking) |
clip_id | string | Unique clip identifier |
title | string | Human-readable clip title |
description | string | Detailed description of clip content |
score | number|null | Search relevance score (higher = more relevant) |
shot_year | number|null | Year the footage was originally shot |
shot_decade | string|null | Decade label (e.g. "1960s") |
location | string|null | Where filmed: "City, State, Country" |
format_tags | string[]|null | Visual/content tags (e.g. ["family", "outdoor"]) |
price | string|null | Price in USD (e.g. "199.00") |
thumbnail_url | string|null | Preview image URL |
Upload a reference image to find visually similar clips in the catalog. Useful for finding footage that matches a specific aesthetic, scene type, or color palette.
POST https://stockfilm.com/api/public/visual-searchSend a multipart/form-data request with the following fields:
| Field | Type | Required | Description |
|---|---|---|---|
image | file | Yes | Reference image (JPG, PNG, WebP, BMP, GIF, TIFF). Max 8 MB. |
top | integer | No | Number of results (1–25, default 10) |
# Upload a reference image to find visually similar clips
curl -sS "https://stockfilm.com/api/public/visual-search" \
-X POST \
-H "x-api-key: YOUR_API_KEY" \
-F "[email protected]" \
-F "top=10"{
"query_type": "visual_image_upload",
"total": 5,
"timing_sec": { "encode": 0.12, "search": 0.03, "total": 0.18 },
"results": [
{
"clip_id": "789012",
"href": "https://www.pond5.com/stock-footage/item/789012-...",
"title": "Downtown Street Corner 1958",
"description": "Super 8 footage of pedestrians crossing a busy intersection...",
"original_filename": "P5_789012.mp4",
"shot_year": 1958,
"shot_decade": "1950s",
"location": "Chicago, Illinois, United States",
"price": "149.00",
"distance": 0.23,
"frame_path": "frames/P5_789012/frame_042.jpg",
"timestamp": 4.2
}
]
}distance — Visual similarity score (lower = more similar, 0.0 = identical)frame_path — Path to the matched frame within the cliptimestamp — Seconds into the clip where the visual match occurstiming_sec — Server-side timing breakdown for performance monitoringAutomatically assemble a sequence of clips into a timed video timeline based on a natural language query. The API selects clips, assigns durations, and diversifies content by location and era. Useful for creating edit lists, preview reels, or storyboards.
POST https://stockfilm.com/api/rough-cut/generate| Field | Type | Required | Description |
|---|---|---|---|
query | string | Yes | Natural language description (2–240 chars) |
targetSeconds | integer | No | Target timeline length in seconds (20–600, default 60) |
pace | string | No | "slow" (4–8s/clip), "balanced" (3–6s/clip), or "fast" (2–4s/clip). Default: "balanced" |
yearFrom | integer|null | No | Earliest year filter |
yearTo | integer|null | No | Latest year filter |
location | string|null | No | Location filter |
lockedClipIds | string[] | No | Clip IDs to force-include (max 30) |
excludedClipIds | string[] | No | Clip IDs to exclude (max 90) |
curl -sS "https://stockfilm.com/api/rough-cut/generate" \
-X POST \
-H "Content-Type: application/json" \
--data '{
"query": "american road trip summer vacation",
"targetSeconds": 60,
"pace": "balanced",
"yearFrom": 1955,
"yearTo": 1975,
"location": null,
"lockedClipIds": [],
"excludedClipIds": []
}'{
"query": "american road trip summer vacation",
"targetSeconds": 60,
"pace": "balanced",
"filters": { "yearFrom": 1955, "yearTo": 1975, "location": null },
"coverage": {
"totalClipCandidates": 87,
"previewReadyCandidates": 34,
"selectedSegments": 15,
"selectedPreviewReadySegments": 11
},
"estimatedRuntimeSec": 60,
"segments": [
{
"order": 1,
"clipId": "345678",
"title": "Family Loading Station Wagon",
"href": "https://www.pond5.com/stock-footage/item/345678-...",
"thumbnailUrl": "https://images.pond5.com/...",
"tinyVideoUrl": "/tiny-videos/345678.mp4",
"tinyVideoAvailable": true,
"shotYear": 1962,
"location": "Detroit, Michigan, United States",
"formatTags": ["family", "automotive", "suburban"],
"durationSec": 4,
"startOffsetSec": 0,
"rationale": "period match: 1962 • location cue: Detroit, Michigan • visual tags: family, automotive"
}
]
}targetSecondstinyVideoAvailable is true, a low-res preview is available at tinyVideoUrlCreate and manage curated collections of clips. Boards are useful for organizing selections before licensing, sharing clip lists with collaborators, or building themed collections.
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/boards | List all boards |
| POST | /api/boards | Create a new board |
| GET | /api/boards/[slug] | Get board details |
| PUT | /api/boards/[slug] | Update board name/description |
| DELETE | /api/boards/[slug] | Delete a board |
| GET | /api/boards/[slug]/items | List clips in a board |
| POST | /api/boards/[slug]/items | Add a clip to a board |
| DELETE | /api/boards/[slug]/items/[clipid] | Remove a clip from a board |
| POST | /api/boards/[slug]/reorder | Reorder clips in a board |
| GET | /api/boards/[slug]/export | Export board as CSV |
| POST | /api/boards/[slug]/duplicate | Duplicate a board |
# Create a new board
curl -sS "https://stockfilm.com/api/boards" \
-X POST \
-H "Content-Type: application/json" \
--data '{"name": "1960s California Project", "description": "Clips for documentary edit"}'# Add a clip to a board
curl -sS "https://stockfilm.com/api/boards/1960s-california-project-a1b2c3/items" \
-X POST \
-H "Content-Type: application/json" \
--data '{
"clipId": "123456",
"title": "Family Backyard Barbecue",
"pond5Url": "https://www.pond5.com/stock-footage/item/123456",
"thumbnailUrl": "https://images.pond5.com/...",
"note": "Use at 0:45 in the timeline"
}'# Export board as CSV for licensing workflow
curl -sS "https://stockfilm.com/api/boards/1960s-california-project-a1b2c3/export"Boards are identified by auto-generated slugs (e.g. 1960s-california-project-a1b2c3). The slug is returned in the creation response.
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/comedies?page=N&limit=N | Paginated list of comedy clips with captions |
| GET | /api/clip-thumb/[clipid] | Thumbnail image for a clip (JPEG, 6-hour cache) |
| GET | /api/comedy-video/[clipid] | Stream comedy video (MP4, range requests supported) |
| GET | /api/health | Health check (returns {"status":"ok"}) |
| GET | /api/ready | Readiness check (verifies database connection) |
| POST | /api/contact | Submit a contact form message |
| POST | /api/request-footage | Submit a custom footage request |
Rate limits are enforced per IP address. When exceeded, the API returns429 Too Many Requests with RateLimit-* headers.
| Endpoint | Limit | Window |
|---|---|---|
Text Search (/api/public/search) | 180 requests | 60 seconds |
Visual Search (/api/public/visual-search) | 40 requests | 10 minutes |
Rough-Cut Generate (/api/rough-cut/generate) | 120 requests | 10 minutes |
Board Create (POST /api/boards) | 40 requests | 1 hour |
Contact Form (/api/contact) | 8 requests | 30 minutes |
Footage Request (/api/request-footage) | 8 requests | 30 minutes |
Retry strategy: On 429, read the RateLimit-Resetheader and wait before retrying. Do not retry in a tight loop.
Follow these steps to build a complete Stockfilm integration:
curl -sS "https://stockfilm.com/api/public/search?q=1960s+california+family&limit=5" \
-H "x-api-key: YOUR_API_KEY" | jq .clip_id, title,price, href, and thumbnail_url from each result.429 responses and implement exponential backoff.href URL in each result to complete the purchase on Pond5.In addition to the search and board APIs above, Stockfilm operates a dedicated agent-native API at api.stockfilm.com that supports autonomous clip licensing with cryptocurrency settlement. This API is designed for AI agents that need to search, verify rights, quote, pay, and receive licensed footage without human intervention.
https://api.stockfilm.com| Rail | Settlement Asset | Exchange Rate | Best For |
|---|---|---|---|
solana_usdc | USDC on Solana | 1:1 with USD (stablecoin) | Stable pricing, low fees (~$0.0025) |
solana_sol | Native SOL | Live SOL/USD rate at quote time | SOL holders, DeFi integrations |
lightning_btc | BTC via Lightning | Live BTC/USD rate at quote time | Bitcoin users, instant settlement |
POST /v1/search/assets — Find clips by text queryPOST /v1/rights/verify — Confirm the asset is eligible for your intended usePOST /v1/quotes — Lock in a price and select a payment railPOST /v1/payment-intents — Receive payment instructions (Solana address or Lightning invoice)POST /v1/licenses/execute — Activate the license after payment confirmsPOST /v1/assets/{asset_id}/download-token — Receive a time-limited download URL| Method | Endpoint | Auth | Description |
|---|---|---|---|
| POST | /v1/search/assets | API Key + HMAC | Hybrid text/semantic search |
| POST | /v1/search/similar | API Key + HMAC | Find similar assets by embedding |
| GET | /v1/assets/{asset_id} | API Key | Full asset details + renditions + rights |
| POST | /v1/rights/verify | API Key + HMAC | Rights eligibility check |
| POST | /v1/quotes | API Key + HMAC | Create a price quote |
| GET | /v1/quotes/{quote_id} | API Key | Retrieve quote details |
| POST | /v1/payment-intents | API Key + HMAC | Create payment intent |
| GET | /v1/payment-intents/{id} | API Key | Check payment status |
| POST | /v1/licenses/execute | API Key + HMAC | Activate license after payment |
| GET | /v1/licenses/{license_id} | API Key | License details |
| GET | /v1/receipts/{receipt_id} | API Key | Signed receipt |
| GET | /v1/capabilities | None | API capabilities + supported rails |
# Search via the agent-native API
TIMESTAMP=$(date +%s)
BODY='{"query":"1960s california family","limit":5}'
SIGNATURE=$(echo -n "${TIMESTAMP}.POST./v1/search/assets.${BODY}" \
| openssl dgst -sha256 -hmac "$API_KEY" -hex | awk '{print $NF}')
curl -sS "https://api.stockfilm.com/v1/search/assets" \
-X POST \
-H "X-API-Key: $API_KEY" \
-H "Content-Type: application/json" \
-H "X-Timestamp: $TIMESTAMP" \
-H "X-Signature: $SIGNATURE" \
-H "Idempotency-Key: $(uuidgen)" \
-d "$BODY"All mutating requests (POST, PUT, PATCH,DELETE) to the agent API require HMAC-SHA256 signing. GET requests only require the API key.
| Header | Description |
|---|---|
X-API-Key | Your API key (also used as HMAC secret) |
X-Timestamp | Unix epoch seconds (must be within 5 minutes of server time) |
X-Signature | Hex-encoded HMAC-SHA256 signature |
Idempotency-Key | Unique key per request (UUID recommended) |
# HMAC-SHA256 signing formula
# payload = "{timestamp}.{METHOD}.{path}.{body}"
# signature = hex(HMAC-SHA256(api_key, payload))
TIMESTAMP=$(date +%s)
METHOD="POST"
PATH="/v1/quotes"
BODY='{"asset_id":"...","usage_scope":"commercial","selected_rail":"solana_usdc"}'
PAYLOAD="${TIMESTAMP}.${METHOD}.${PATH}.${BODY}"
SIGNATURE=$(echo -n "$PAYLOAD" | openssl dgst -sha256 -hmac "$API_KEY" -hex | awk '{print $NF}')Security notes: The API key is used as the HMAC secret — no separate signing key is needed. Timestamps older than 5 minutes are rejected. The body is included in the signature to prevent tampering.
# Verify rights eligibility before quoting
curl -sS "https://api.stockfilm.com/v1/rights/verify" \
-X POST \
-H "X-API-Key: $API_KEY" \
-H "Content-Type: application/json" \
-H "X-Timestamp: $TIMESTAMP" \
-H "X-Signature: $SIGNATURE" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"asset_id": "0f5460d8-...", "intended_use": "commercial"}'Returns "decision": "eligible" with the full rights policy, or"decision": "ineligible" with reasons.
# Create a quote for Solana USDC payment
curl -sS "https://api.stockfilm.com/v1/quotes" \
-X POST \
-H "X-API-Key: $API_KEY" \
-H "Content-Type: application/json" \
-H "X-Timestamp: $TIMESTAMP" \
-H "X-Signature: $SIGNATURE" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"asset_id": "0f5460d8-bfb4-4b36-914d-14678fc4dccc",
"usage_scope": "commercial",
"selected_rail": "solana_usdc",
"territory": "worldwide"
}'{
"quote_id": "faa22846-5dc1-41cc-a791-872c80b2b361",
"asset_id": "0f5460d8-bfb4-4b36-914d-14678fc4dccc",
"usage_scope": "commercial",
"territory": "worldwide",
"price_amount_cents": 1500,
"price_currency": "USD",
"tier_label": "commercial:sd",
"selected_rail": "solana_usdc",
"expires_at": "2026-03-19T05:53:26.540858Z",
"quote_hash": "6f664a21b988...",
"status": "open",
"created_at": "2026-03-19T04:53:26.541337Z"
}Quotes expire after 1 hour (configurable via ttl_seconds). Thequote_hash ensures idempotent re-creation — same inputs produce the same quote.
# Create a Solana USDC payment intent from a quote
curl -sS "https://api.stockfilm.com/v1/payment-intents" \
-X POST \
-H "X-API-Key: $API_KEY" \
-H "Content-Type: application/json" \
-H "X-Timestamp: $TIMESTAMP" \
-H "X-Signature: $SIGNATURE" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"quote_id": "faa22846-5dc1-41cc-a791-872c80b2b361"}'{
"payment_intent_id": "d111cd33-f8d3-4bc7-a925-a68a436f36c9",
"quote_id": "faa22846-5dc1-41cc-a791-872c80b2b361",
"license_transaction_id": "b9d3bbe4-b444-4c58-ad47-e052c506e285",
"rail": "solana_usdc",
"amount_cents": 1500,
"currency": "USD",
"status": "pending",
"rail_payment_id": "sol-d111cd33-f8d3-4bc7-a925-a68a436f36c9",
"instructions": {
"recipient_address": "FERR1XDCsvLRzU8U29baMY4XvZ8kwk52tUjqy3SaDRtQ",
"amount_usdc_micro": 15000000,
"token": "USDC",
"currency": "USD",
"amount_fiat_cents": 1500,
"memo": "StockFilm payment d111cd33-...",
"payment_reference": "sol-d111cd33-..."
},
"expires_at": "2026-03-19T05:23:32.102513Z",
"created_at": "2026-03-19T04:53:32.101658Z"
}The instructions object contains everything needed to execute the payment:
| Field | Solana USDC | Solana SOL | Lightning BTC |
|---|---|---|---|
| Address/Invoice | recipient_address | recipient_address | payment_request (BOLT11 invoice) |
| Amount | amount_usdc_micro (6 decimals) | amount_lamports (9 decimals) | amount_sats |
| Token | USDC | SOL | BTC |
| Expiry | 30 minutes | 30 minutes | 1 hour |
Poll GET /v1/payment-intents/{payment_intent_id} to check status. The status field transitions through:
| Status | Meaning | Next Step |
|---|---|---|
pending | Waiting for payment on-chain | Execute the payment using the instructions |
processing | Payment observed, awaiting finality | Wait — Solana needs "finalized" status (32+ confirmations) |
succeeded | Payment confirmed | Execute the license |
failed | Payment failed or expired | Create a new quote and payment intent |
Once payment status is succeeded, activate the license and retrieve the download token:
# Activate the license
POST https://api.stockfilm.com/v1/licenses/execute
{"payment_intent_id": "d111cd33-..."}
# Get time-limited download URL (valid ~5 minutes)
POST https://api.stockfilm.com/v1/assets/{asset_id}/download-tokenConvert payment intent instructions into a Solana Pay–compatible URI that any Solana wallet (Phantom, Solflare, etc.) can scan or deeplink. Use the helper endpoint or construct the URL yourself.
# Generate a Solana Pay URL from payment instructions
curl -sS "https://stockfilm.com/api/agent/solana-pay-url" \
-X POST \
-H "Content-Type: application/json" \
-d '{
"recipient_address": "FERR1XDCsvLRzU8U29baMY4XvZ8kwk52tUjqy3SaDRtQ",
"amount_usdc_micro": 15000000,
"token": "USDC",
"memo": "StockFilm payment d111cd33-..."
}'{
"solana_pay_url": "solana:FERR1X...?amount=15&spl-token=EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v&memo=...",
"recipient": "FERR1XDCsvLRzU8U29baMY4XvZ8kwk52tUjqy3SaDRtQ",
"amount_display": "15.00 USDC",
"token": "USDC",
"expires_note": "Use within 30 minutes of payment intent creation."
}If you prefer to construct the URL yourself, the Solana Pay URI format is:
# USDC payment
solana:<recipient_address>?amount=<usdc_amount>&spl-token=EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v&memo=<memo>
# SOL payment
solana:<recipient_address>?amount=<sol_amount>&memo=<memo>
# USDC mint address (Solana mainnet):
# EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1vCheck the health of the entire Stockfilm platform — both the web app and the agent licensing API — with a single request. No authentication required.
# Check platform status (no auth required)
curl -sS "https://stockfilm.com/api/agent/status"{
"status": "operational",
"timestamp": "2026-03-19T04:53:00.000Z",
"services": [
{ "service": "stockfilm-web", "status": "ok" },
{
"service": "stockfilm-agent-api",
"status": "ok",
"latency_ms": 12,
"version": "2026-03-04",
"rails": ["lightning_btc", "solana_sol", "solana_usdc"]
}
],
"docs": {
"agents": "https://stockfilm.com/for-ai-agents",
"api": "https://api.stockfilm.com",
"llms_txt": "https://stockfilm.com/llms.txt",
"discovery": "https://stockfilm.com/.well-known/stockfilm-agent.json"
}
}The status field is one of: operational (all services healthy),degraded (agent API unavailable), or partial (some services impaired).
Stockfilm provides standard machine-readable discovery endpoints for AI agents, LLM tools, and autonomous systems:
| URL | Format | Purpose |
|---|---|---|
stockfilm.com/llms.txt | Plain text | LLM-readable service overview, auth, and workflow summary |
stockfilm.com/.well-known/stockfilm-agent.json | JSON | Machine-parseable agent manifest with auth, workflow, and capabilities URL |
api.stockfilm.com/v1/capabilities | JSON | Full capabilities: supported rails, search filters, usage scopes, endpoints |
api.stockfilm.com/openapi.json | OpenAPI 3.0 | Complete API specification for code generation |
stockfilm.com/api/agent/status | JSON | Platform health check (web + agent API) |
Recommended integration order: Start with /llms.txt for a quick overview, then fetch /.well-known/stockfilm-agent.json for structured discovery, and finally use /v1/capabilities for full feature enumeration.
Stockfilm supports the x402 protocol (V2) for instant, pay-per-use clip licensing. Any x402-compatible agent can search for clips and license them with a single HTTP request — no API keys, no sign-up, no multi-step flow.
GET https://api.stockfilm.com/x402/search?q=beachGET https://api.stockfilm.com/x402/clip/{clip_id}GET https://api.stockfilm.com/x402/clip/{clip_id}/rightsGET https://api.stockfilm.com/x402/clip/{clip_id}/licenseThe license endpoint returns HTTP 402 with a PAYMENT-REQUIRED header containing base64-encoded payment instructions. Your x402 client signs a payment authorisation, retries the request with a PAYMENT-SIGNATURE header, and receives the license + download URL.
FERR1XDCsvLRzU8U29baMY4XvZ8kwk52tUjqy3SaDRtQ0x4AeeD280b6006Aa354e09427AF4F49bD09f9447Bsolana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp — Solana mainnet USDCeip155:8453 — Base mainnet USDCStockfilm exposes an MCP server that AI agents (Claude, GPT, Gemini, LangChain, etc.) can connect to and discover tools automatically.
claude mcp add --transport http stockfilm https://api.stockfilm.com/mcp{
"mcpServers": {
"stockfilm": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://api.stockfilm.com/mcp"]
}
}
}| Tool | Description | Cost |
|---|---|---|
search_vintage_footage | Search 217,000+ vintage clips by text query, year, and location | Free |
get_clip_details | Get full metadata, thumbnail, and pricing for a clip | Free |
find_similar_footage | Find visually similar clips by clip ID | Free |
build_rough_cut | Auto-assemble a timed video timeline from a description | Free |
check_clip_rights | Verify usage eligibility (commercial, editorial, etc.) | Free |
license_clip | License a clip via x402 payment ($10 USDC) | $10 |
https://api.stockfilm.com/mcpFor API keys, enterprise licensing, custom integrations, or technical questions:
API keys, pricing questions, partnership discussions.
Open Contact FormNeed specific footage? Describe the era, location, and subject.
Submit RequestDetailed human-readable walkthrough of the full licensing process.
Read Guide