Skip to content
merran
GitHubInstall

Merran documentation API & integrations

Read some text aloud

POST
/api/voice/speak
curl --request POST \
--url http://localhost:3000/api/voice/speak \
--header 'Content-Type: application/json' \
--cookie merran.session_token=<merran.session_token> \
--data '{ "text": "Bring a large pot of salted water to the boil." }'

In the server’s voice, as MP3: a cook step, an amount, a timer. Each piece of text is read once per voice and kept, so it’s never paid for twice. When the server doesn’t read aloud for the household, it says so, and the device reads in its own voice. With an API key, it needs the recipes: read permission.

Media typeapplication/json
object
text
required
string
>= 1 characters <= 4000 characters

Example

{
"text": "Bring a large pot of salted water to the boil."
}

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."
}
}
}

The server doesn’t read aloud for the household.

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.