Client libraries for the FrameQuery video processing API. Upload a video, get back scenes and transcripts.
| 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 |
Same pattern everywhere — create a client, call process(), get typed results back.
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}")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}`));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)
}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);
}client = FrameQuery::Client.new(api_key: "fq_...")
result = client.process("interview.mp4")
result.scenes.each { |s| puts "[#{s.end_time}s] #{s.description}" }Grab an API key from the dashboard. Every SDK also checks FRAMEQUERY_API_KEY from the environment:
export FRAMEQUERY_API_KEY=fq_...# 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")| 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 |
MIT