Skip to content

FrameQuery/framequery-sdks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FrameQuery SDKs

Client libraries for the FrameQuery video processing API. Upload a video, get back scenes and transcripts.

Languages

Language Package Install
Python framequery pip install framequery
TypeScript / Node.js framequery npm install framequery
Go framequery-go go get github.com/framequery/framequery-go
Rust framequery cargo add framequery
Ruby framequery gem install framequery

Quick Start

Same pattern everywhere — create a client, call process(), get typed results back.

Python

from framequery import FrameQuery

fq = FrameQuery(api_key="fq_...")

result = fq.process("interview.mp4")
for scene in result.scenes:
    print(f"  [{scene.end_time}s] {scene.description}")
for seg in result.transcript:
    print(f"  [{seg.start_time}-{seg.end_time}s] {seg.text}")

TypeScript

import FrameQuery from "framequery";

const fq = new FrameQuery({ apiKey: "fq_..." });

const result = await fq.process("./interview.mp4");
result.scenes.forEach((s) => console.log(`[${s.endTime}s] ${s.description}`));

Go

client := framequery.New("fq_...")

result, err := client.Process(ctx, "interview.mp4", nil)
if err != nil {
    log.Fatal(err)
}
for _, s := range result.Scenes {
    fmt.Printf("[%.1fs] %s\n", s.EndTime, s.Description)
}

Rust

let client = framequery::Client::new("fq_...");

let result = client.process("interview.mp4", None).await?;
for scene in &result.scenes {
    println!("[{}s] {}", scene.end_time, scene.description);
}

Ruby

client = FrameQuery::Client.new(api_key: "fq_...")

result = client.process("interview.mp4")
result.scenes.each { |s| puts "[#{s.end_time}s] #{s.description}" }

Auth

Grab an API key from the dashboard. Every SDK also checks FRAMEQUERY_API_KEY from the environment:

export FRAMEQUERY_API_KEY=fq_...

Other Things You Can Do

# Process from a URL instead of a local file
result = fq.process_url("https://cdn.example.com/video.mp4")

# Upload without blocking — returns a job you can poll later
job = fq.upload("video.mp4")
print(job.id)

# Progress callback
result = fq.process("video.mp4", on_progress=lambda j: print(j.status))

# Check your quota
quota = fq.get_quota()
print(f"{quota.credits_balance_hours}h remaining")

Endpoints

Method Endpoint What it does
POST /v1/api/jobs Create a job, get a signed upload URL back
POST /v1/api/jobs/from-url Create a job from a remote URL
GET /v1/api/jobs/{jobId} Get job status and results
GET /v1/api/jobs List jobs (cursor-paginated)
GET /v1/api/quota Check remaining hours

License

MIT

About

SDKs to support the FrameQuery API

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors