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
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
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
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
data, has_more, next_cursor.
Create a snippet
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
trigger, replacement, or both — at least one is required. Returns 200 with the updated snippet.
Remove a snippet
204, and is idempotent like the dictionary delete.
Pagination
Both list endpoints takelimit (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.