Merran documentation API & integrations
Hear a voice
POST
/api/settings/server/voice/preview
const url = 'http://localhost:3000/api/settings/server/voice/preview';const options = { method: 'POST', headers: { cookie: 'merran.session_token=<merran.session_token>', 'Content-Type': 'application/json' }, body: '{"provider":"kokoro","voice":"bf_emma"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url http://localhost:3000/api/settings/server/voice/preview \ --header 'Content-Type: application/json' \ --cookie merran.session_token=<merran.session_token> \ --data '{ "provider": "kokoro", "voice": "bf_emma" }'Server admins only. A sample cook step read in any Kokoro or OpenAI voice, before it’s picked: made once and kept. OpenAI’s is on an OpenAI key of the admin’s household, a fraction of a cent the first time.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”Media typeapplication/json
object
provider
required
string
voice
required
string
kokoroUrl
Kokoro’s address, to try one before saving it.
string format: uri
Example
{ "provider": "kokoro", "voice": "bf_emma"}Responses
Section titled “Responses”The reading, as MP3.
Media typeaudio/mpeg
string format: binary
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." } }}Kokoro didn’t answer, or there’s no OpenAI key.
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.