Sign in
Enter your work email. We'll send you a one-time sign-in link.
New here? Request access
Dictation API
Docs
Enter your work email. We'll send you a one-time sign-in link.
New here? Request access
Add dictation to your web or Electron app in two calls. Tell us who you are; we review every request and email you as soon as you're approved, with free minutes to start.
Already have an account? Sign in
Continue to the Unmute Dictation API console.
This month's usage, and the keys your servers use.
Below, under API keys. It stays on your server; never put it in your app.
Your server swaps the secret key for a short-lived token for each user.
// Node / Express
import { createClientToken } from '@unmute/dictation/server'
app.post('/api/dictation-token', requireLogin, async (req, res) => {
const { token } = await createClientToken({ apiKey: process.env.UNMUTE_SECRET_KEY, endUserId: req.user.id })
res.json({ token })
})
# any language
curl -X POST /v1/tokens -H "Authorization: Bearer $UNMUTE_SECRET_KEY"Web or Electron. Two calls: start() and stop().
import { Dictation } from '@unmute/dictation'
const dictation = new Dictation({
token: () => fetch('/api/dictation-token', { method: 'POST' }).then(r => r.json()).then(j => j.token),
mode: 'clean',
})
await dictation.start() // on press
const { text } = await dictation.stop() // on release
No bundler? <script src="/sdk/unmute-dictation.min.js"> then new UnmuteDictation.Dictation(…). Full guide: docs.
From your app, or right here:
| Day | Minutes | Dictations |
|---|
| Name | Key | Created | Last used |
|---|
end_user_id| End user | Minutes | Dictations |
|---|
| Role | Last sign-in |
|---|