The SDKs are open source at github.com/sf-voice/sf-voice-core. These docs cover SDK versionDocumentation Index
Fetch the complete documentation index at: https://docs.sf-voice.sh/llms.txt
Use this file to discover all available pages before exploring further.
0.1.1. We are iterating quickly, so pin your SDK version and expect breaking changes between versions until the API settles.
The SDKs cover the core operations: ingest, getTask, pollTask, listAssets, getAsset, deleteAsset, search. Method names follow the naming convention of each language.
TypeScript
@sf-voice/media — Node.js, Bun, Deno, browserPython
sf-voice-media — sync and async clientsElixir
:sf_voice — Req-based, returns {:ok, _} or {:error, _}Go
sfvoice — idiomatic Go with context.ContextRust
sf_voice_media — async with tokio, builder patternJava
com.sfvoice:sf-voice-media-java — synchronous, Java 17+Kotlin
com.sfvoice:sf-voice-media-kotlin — coroutine-native with KtorC++
single header —
std::future-based, CPR + nlohmannAuthentication
SDKs send your API key as theX-API-Key request header. Keep it in an environment variable and avoid committing it to source control.
Error handling
SDKs use three error categories:| Error | When it’s thrown |
|---|---|
| API error | The server returned a non-2xx response. Carries code, message, and status. |
| Request timeout | A single HTTP request exceeded the configured timeout. |
| Poll timeout | pollTask ran out of time before the task reached ready or failed. |
| Code | Meaning |
|---|---|
unauthorized | Invalid or missing API key. |
not_found | Asset or task ID doesn’t exist. |
bucket_not_connected | S3 source used before bucket is configured. |
s3_access_denied | SDK can’t read from the specified S3 key. |
unsupported_format | File type isn’t supported for indexing. |
file_too_large | Upload exceeds the size limit. |
rate_limited | Too many requests. Back off and retry. |

