Skip to main content
POST
Create a new Mode

Authorizations

Authorization
string
header
required

Token from the discovery file. Required on every endpoint except /health.

Body

application/json

A key that is not listed here is IGNORED, on every platform. That is what makes the "Windows and Linux" keys below safe to send from a cross-platform client. The seven required keys are required on POST /modes only; a body missing one is refused on every platform with HTTP 200 and INVALID_REQUEST, naming the keys that are missing. A well-formed JSON object that is merely incomplete is a business failure, not a protocol failure — see the envelope rule in this document's introduction. A body that is not a JSON object, or that carries a value of the wrong type, is still the protocol failure that rule describes: HTTP 400.

name
string
required

Must not be empty after normalization and must be unique. Two names are the same name when they are equal after trimming Unicode whitespace and lowercasing. Windows and Linux trim boundary whitespace first; macOS also normalizes Unicode, trims invisible boundary characters, and rejects names with no visible base character. Lengths are counted in Unicode scalar values.

Required string length: 1 - 100
preset
string
required

hyper | message | mail | note | meeting | code | custom

Required string length: 1 - 64
language
string
required
Required string length: 1 - 32
model
string
required
punctuation
boolean
required
capitalization
boolean
required
profanityFilter
boolean
required
id
string<uuid>
customInstructions
string | null
userSystemPrompt
string | null
Maximum string length: 8000
isDefault
boolean | null
isSystemProvided
boolean | null
sortOrder
integer | null

Every platform accepts values from -32768 through 32767 and refuses anything outside that range with INVALID_REQUEST. On create, macOS ignores the value and assigns the next stored order.

Required range: -32768 <= x <= 32767
createdDate
string<date-time> | null
modifiedDate
string<date-time> | null
languageModel
string | null
cloudTranscriptionModel
string | null
cloudProvider
string | null

The cloud vendor this Mode dictates on. A value you WRITE is normalized before it is stored, on every platform: it is lowercased, and the two LEGACY names googlespeech and microsoftazurespeech (either casing) are folded onto hyperwhisper plus the matching cloudAccuracyTier (geminiTranscribe, azureMaiTranscribe) — those providers are HyperWhisper Cloud accuracy tiers now, not standalone vendors. So a Mode read back may not carry the string you sent. On CREATE the folded tier wins over a cloudAccuracyTier in the same body; on PATCH a cloudAccuracyTier in the same request wins — so PATCHING BACK A WHOLE DOCUMENT YOU FETCHED WITH GET folds the provider but PINS the tier the Mode already had, which may not be the tier the name implies. Send only the keys you are changing. A Mode that ALREADY holds a legacy name is not rewritten by this endpoint and is reported as stored. Windows, macOS and Linux fold such a row once at app startup.

postProcessingMode
integer

0 = off, 1 = cloud, 2 = local. Every platform rejects all other values.

Required range: 0 <= x <= 2
postProcessingProvider
string | null
englishSpelling
string | null

american | british | australian | canadian. On create, an omitted value is seeded from the system region (Canada → canadian, Australia → australian, UK/IE/IN/SG/ZA/NZ and other British-English regions → british, everything else and an unknown region → american).

useStreamingTranscription
boolean | null
cloudAccuracyTier
string | null

On create, an omitted or empty value resolves to elevenLabsScribeV2.

removeTrailingPeriod
boolean | null
enableScreenOCR
boolean | null
geminiCustomPrompt
string | null
Maximum string length: 2000
cloudPostProcessingModel
string | null

On create, an omitted or empty value resolves to anthropic:claude-haiku-5-5.

cloudTranscriptionDomain
string | null
localEngine
string | null

Windows and Linux. macOS ignores this key and never returns it. Defaults to whisper on create.

localParakeetModel
string | null

Windows and Linux. macOS ignores this key and never returns it.

localPostProcessingModel
string | null

Windows and Linux. macOS ignores this key and never returns it.

customVocabulary
string[] | null

Windows and Linux. macOS ignores this key and never returns it.

Maximum array length: 1000
Maximum string length: 200
providerType
string | null

Windows and Linux. macOS ignores this key and never returns it. Windows accepts local or cloud in any casing, stores it lowercase, and refuses any other value with INVALID_REQUEST. A mode written before that rule may still return another value; Windows runs it on-device. Linux stores any value other than cloud as local and does not refuse it.

Response

200 - application/json

Created mode

ok
boolean
mode
object

A key that is not listed here is IGNORED, on every platform. That is what makes the "Windows and Linux" keys below safe to send from a cross-platform client. The seven required keys are required on POST /modes only; a body missing one is refused on every platform with HTTP 200 and INVALID_REQUEST, naming the keys that are missing. A well-formed JSON object that is merely incomplete is a business failure, not a protocol failure — see the envelope rule in this document's introduction. A body that is not a JSON object, or that carries a value of the wrong type, is still the protocol failure that rule describes: HTTP 400.