Skip to main content
We make voice AI better. Our first feature is a search engine for media. You do not need to build your own transcript store, embedding pipeline, or media search layer first.
These docs cover version 0.1.1. We are iterating quickly, so pin your SDK version and expect breaking changes between versions until the API settles.
Search is where we start. Next up is benchmarking and toolings for voice AI systems.

What you can build with our media SDKs.

  • Search all audio by topic, objection, or feature request as humanly possible “Where does customers got impatient?”, or **When did security guard left their work station?”.
  • Find calls where your AI interrupted the caller, spoke too slowly, or repeated itself.
  • Find specifc content within a video even when nobody is talking.
  • Build compliance review, QA workflows, or knowledge bases on top of your audio or video archive.

Lifecycle

1

Ingest

Send a URL, authenticate us to your bucket via S3 key, or file upload with your asset_id (more details about asset_id and asset_class). The API returns a task_id immediately.
2

Index

Poll the task until it reaches ready. Indexing runs in the background.
3

Search

Query with natural language, scoped to an asset_class or explicit asset_ids. Results include start_ms and end_ms.

Data and privacy

We index your media and keep the searchable representation: embeddings, transcripts, and metadata. Source files pass through the processing pipeline and are not retained after indexing completes. You keep ownership of your media. We store the indexed data needed for search. Regional processing:
  • US customers — processed in the United States.
  • EU and UK customers — processed in Europe.

Data & Privacy

Data handling, retention, regional processing, and DPA details.

SDKs

Six installable SDKs. Open source at github.com/sf-voice/sf-voice-core.

TypeScript

Elixir

Go

Rust

Java

Kotlin

Building in C++? See the C++ example — a single-header helper you can copy into your project.

Start here

Quickstart

Ingest one recording, wait for indexing, run your first search.