Voice input
that feels native
Add state-of-the-art dictation to your app or website with one SDK, so users can write by speaking

The Headless SDK
for Transcription
Coordinate models, auth, quotas, fallback, and insertion from a small headless API.
Speak once. Use the transcript anywhere.
Open the shortcut, watch the transcript form, then insert clean text wherever work is happening.
Best Whisper
Voice typing
Live transcription
Ready for selected field
OpenAI
Deepgram
Mistral
Free
1,000
words per day
Daily limit
- Start transcribing immediately
- Core voice-to-text workflow
- Copy-ready output
No credit card required
Unlimited
Unlimited
words per day
No daily limit
- Unlimited daily transcription
- Longer recording sessions
- Priority export workflow
Cancel anytime
Choose your transcription volume
Start free, then unlock unlimited dictation when daily writing volume grows.
Add voice input without owning the speech stack.
Install the SDK, connect lifecycle events, and send final transcripts back into your product.
Install
packagenpm install @dictum/sdkHeadless client
webimport { createDictumClient } from "@dictum/sdk";
const dictum = createDictumClient({
projectKey: "pk_live_xxx",
userRef: "user_123",
language: "auto",
correction: true
});
dictum.on("state", ({ value }) => setRecorderState(value));
dictum.on("partial", ({ text }) => renderDraft(text));
dictum.on("final", ({ transcript }) => insertTranscript(transcript));
await dictum.prepare();
await dictum.listen();
await dictum.record();
await dictum.stop();Lifecycle
prepare()
Ask for microphone permission and create local audio resources.
listen()
Open the microphone and wait for user speech intent.
record()
Capture audio and emit recording state.
pause()
Pause capture without destroying the session.
resume()
Resume capture on the same session.
stop()
Finalize capture and stream transcript events.
cancel()
Close capture and discard the current audio cycle.
destroy()
Remove listeners and release resources.
Events
state
{ value }
Lifecycle state changed.
partial
{ text, sequence }
Incremental transcript for live UI.
final
{ transcript, language, durationMs }
Final transcript for insertion.
done
{ transcript, usage }
Capture and post-processing completed.
error
{ code, message, retryable }
Failure that the app can render or log.
