Video in.
Your JSON out.
Upload a video. Hand us a JSON schema. Get back exactly the structured data your workflow expects. Nothing more, nothing to configure.
30 free minutes. No card. Already have an account?
{
"meeting_title": "Q3 pricing review",
"participants": ["Ada", "Ravi", "Mei"],
"decisions": [
{ "at": "04:12", "text": "Ship usage tiers" }
],
"action_items": [
{ "owner": "Ravi", "due": "2026-08-11" }
],
"sentiment": "aligned"
}
1887 / ANIMAL LOCOMOTION, PLATE 626
Cutting motion into frames is not the hard part any more.
Muybridge needed a row of tripwired cameras to turn a gallop into sixteen numbered frames. Frames are cheap now. Turning them into something your code can read is the part still worth paying for.
Fovea is a video-to-JSON API. You send a video and the shape you want back — a JSON Schema, or a sketch of one — and you get JSON that conforms to it, validated before it leaves us. It comes three ways: a web app, one POST to /v1/extract, and an MCP server that Claude Code, Codex or any MCP client installs in a line. Any field in your schema can carry a timestamp. Videos are deleted once the job finishes, and nothing you send is used to train a model.
01 / THE ONLY THING YOU CONFIGURE
You write the schema.
We fill it in.
No prompt engineering, no extraction presets, no pipeline to assemble. Give us the shape you want and every response conforms to it: validated, typed, and ready to hand straight to your code.
{
"clip_summary": "string",
"speakers": ["string"],
"key_moments": [
{ "t": "string", "label": "string" }
],
"topics": ["string"],
"sentiment": "positive | neutral | negative",
"brand_safe": "boolean",
"has_speech": "boolean",
"duration_sec": "number",
"language": "string"
}Conformance, not best effort
Every response is validated against your schema before it leaves us. Wrong shape means retry on our side, not yours.
Every field can carry a timestamp
Put a timestamp in your schema and it comes back with the data, so you can jump straight to that point in the video.
Change the schema, not the plumbing
Need a new field next week? Add it to the schema and re-run. There is no model to retrain and no config to migrate.
02 / INTEGRATE
One line for your agent. One POST for everything else.
Give Claude Code or Codex the server and it reads video on its own. Or send a file and a schema yourself and read the JSON off the response.
claude mcp add --transport http fovea https://api.fovea.run/v1/mcp \ --header "Authorization: Bearer $FOVEA_KEY"
export FOVEA_KEY=fv_live_xxxxx codex mcp add fovea --url https://api.fovea.run/v1/mcp \ --bearer-token-env-var FOVEA_KEY
curl https://api.fovea.run/v1/extract \
-H "Authorization: Bearer $FOVEA_KEY" \
-F video=@standup-2026-08-04.mp4 \
-F schema='{ "decisions": [{ "at": "string", "text": "string" }] }'import json, os, requests
schema = {"decisions": [{"at": "string", "text": "string"}]}
response = requests.post(
"https://api.fovea.run/v1/extract",
headers={"Authorization": f"Bearer {os.environ['FOVEA_KEY']}"},
files={"video": open("standup-2026-08-04.mp4", "rb")},
data={"schema": json.dumps(schema)},
)
print(response.json())const form = new FormData()
form.set("video", await openAsBlob("standup-2026-08-04.mp4"))
form.set("schema", JSON.stringify({
decisions: [{ at: "string", text: "string" }],
}))
const response = await fetch("https://api.fovea.run/v1/extract", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.FOVEA_KEY}` },
body: form,
})
console.log(await response.json()){
"mcpServers": {
"fovea": {
"type": "http",
"url": "https://api.fovea.run/v1/mcp",
"headers": { "Authorization": "Bearer ${FOVEA_KEY}" }
}
}
}ONE LINE FOR AN AGENT
Claude Code and Codex each take a single mcp add. Your agent picks its own schema from there.
IT COMES BACK LIVE
The JSON returns on the same request. There is no job to poll and no webhook to stand up.
NOTHING TO INSTALL
A file and a schema against one endpoint. If you can write curl, you are already integrated.
03 / THREE WAYS IN
Same engine. Whichever door you walk through.
One account, one key, one billing meter across all three.
Drag a file in, get JSON back
Paste your schema into the editor, drop a video, copy the result. Useful for one-offs and for proving the shape before you wire it up.
One endpoint, no SDK required
Send a URL or an upload, send a schema, read the JSON off the response. If you can write curl, you are already integrated.
Your agent gets eyes
One mcp add in Claude Code or Codex — or any MCP client — and your agent decides the schema it needs and reads video on its own.
04 / PRICING
One number: minutes of video.
No seat licences, no per-field charges, no separate line for the API and the MCP server.
The meter is video length. That’s it.
Schema size and field count cost nothing extra. However complex the shape, the price is the same.
Free
START HEREEvery surface, no card
- Web, API and MCP included
- Videos up to 10 minutes
- Minutes do not expire
Minutes
COMING SOONPrepaid minutes, top up when you run out
- Top up $5, $25 or $100. A dollar is 20 minutes.
- Measured per second, one minute minimum
- Same endpoint, same guarantees, no SDK
Coming soon — register interest
Volume
For sustained high volume
- Committed-use discount
- Region pinning and retention terms
- Shared Slack channel
05 / BEFORE YOU ASK
The questions we get first.
Anything else, mail us. A person answers.
- Which model is behind this?
- Fovea runs on Google's Gemini multimodal models today. The layer on top is ours and it is model independent, so when a better video model ships you get it without touching your schema.
- What happens to my video?
- Fovea deletes your video once the job finishes. Nothing you send to Fovea is used to train a model.
- How long can a video be?
- Fovea accepts videos up to ten minutes at launch. That is a limit of how we run extraction today, not of the model, and it is the first thing we will raise.
- What if it gets something wrong?
- Fovea guarantees the shape, not the judgement. Ask for a timestamp on the fields that matter and you can spot-check them against the video.
- What happens when I run out of minutes?
- Fovea stops the job rather than quietly billing you. Top up $5, $25 or $100 whenever you want, at twenty minutes to the dollar. Unused minutes carry over, nothing renews, and there is no subscription.
THIRTY FREE MINUTES · NO CARD
Make your agents video-aware.
Create a key and run your first extraction in the next five minutes.
30 free minutes. No card. Already have an account?
