Skip to content
merran
GitHubInstall

Merran documentation API & integrations

The server voice

GET
/api/settings/server/voice
curl --request GET \
--url http://localhost:3000/api/settings/server/voice \
--cookie merran.session_token=<merran.session_token>

Server admins only. Who reads aloud, Kokoro’s address, the voice picked for each, and the voices Kokoro and OpenAI have. Change them at PATCH /settings/server (voice.*).

The server voice.

Media typeapplication/json
object
provider
required
string
Allowed values: device kokoro openai
kokoroUrl
required
string | null
voices
required

The voice picked for each.

object
kokoro
required
string
openai
required
string
kokoro
required
object
voices
required
Array<object>
object
id
required
string
name
required
string
accent
required
string | null
gender
required
string | null
Allowed values: woman man
english
required
boolean
error
required

Why Kokoro couldn’t say which voices it has.

string | null
openai
required
Array<object>
object
id
required
string
name
required
string

Example

{
"provider": "kokoro",
"kokoroUrl": "http://kokoro:8880",
"voices": {
"kokoro": "af_heart",
"openai": "marin"
},
"kokoro": {
"voices": [
{
"id": "af_heart",
"name": "Heart",
"accent": "American",
"gender": "woman",
"english": true
}
],
"error": null
},
"openai": [
{
"id": "marin",
"name": "Marin"
}
]
}

Not signed in.

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
fields
object
key
additional properties
string

Example

{
"error": {
"code": "not_found",
"message": "There's nothing here.",
"fields": {
"name": "Give it a name."
}
}
}

Not allowed.

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
fields
object
key
additional properties
string

Example

{
"error": {
"code": "not_found",
"message": "There's nothing here.",
"fields": {
"name": "Give it a name."
}
}
}

© 2026 Kyle Johnson. Documentation: CC BY 4.0. Merran: AGPL-3.0-or-later.