Skip to main content
Your dictionary is the list of names, jargon and acronyms OpenWhispr hands to the transcription model as a hint, so they come out spelled the way you want. Snippets are trigger phrases that expand into saved text when you say them. The API reads and writes the same lists you edit under Dictionary in the desktop app — see Teach OpenWhispr your words and Snippets for how each behaves during dictation. Typical uses: seed a new starter’s dictionary from a team glossary, push product names into everyone’s dictionary as they’re added to your catalogue, or keep a standard set of snippets in sync from a script.

Scopes

These routes take a personal key (owk_live_) only. A workspace key (ow_wks_live_) gets 403 forbidden on every one of them — a dictionary belongs to a person, not a space. Create the key in the desktop app or through the API, naming the scopes explicitly.

Dictionary

An entry looks like this:
source is manual for words you added and learned for words auto-learn picked up from your corrections.

List entries

Add words

Returns 201 with data holding an entry for every word you sent. The rules:
  • 1 to 200 words per call.
  • Each word is 1 to 100 characters and can’t contain <, > or a line break.
  • Words are deduplicated case-insensitively. A word already in your dictionary is returned as it stands, not created again — so re-sending a whole glossary is safe and won’t leave duplicates.

Rename an entry

Returns 200 with the updated entry. 404 not_found if the id doesn’t exist; 409 conflict if another entry already has that spelling.

Remove an entry

Returns 204 with no body. Deletes are idempotent — deleting an id that’s already gone also returns 204, so retries are safe.

Snippets

A snippet looks like this:

List snippets

Same envelope as the dictionary list: data, has_more, next_cursor.

Create a snippet

Returns 201 with the snippet. trigger is 1 to 100 characters and must be unique — a repeat gets 409 conflict. Two words make a safer trigger than one; see choosing a good trigger.

Update a snippet

Send trigger, replacement, or both — at least one is required. Returns 200 with the updated snippet.

Remove a snippet

Returns 204, and is idempotent like the dictionary delete.

Pagination

Both list endpoints take limit (1 to 500, default 200) and cursor. Most dictionaries fit in one page; if has_more is true, pass next_cursor back as cursor exactly as received. See Pagination for the general pattern.

Organization policy

If you’re a managed user and your organization has turned off cloud backup, the create and update endpoints for both dictionary and snippets return 403 forbidden with the message “Cloud backup is turned off by your organization.” Deletes are never blocked, so an integration can always clean up even when it can’t add.

Errors

All errors use the standard { "error": { "code", "message" } } envelope — see Errors.