> **Shapeless capabilities index**
> Fetch https://shapelessai.com/llms.txt to discover every page before exploring further.
> Every page also answers Markdown: append `.md` to its path, or send `Accept: text/markdown`.

# Turn text into speech

*Verified 2026-10-07. Source: https://shapelessai.com/capabilities/text-to-speech*

Read up to 2,000 characters aloud into a WAV in the media library, for $0.03 a call.

Pick one of six narrator voices (Sulafat, Charon, Kore, Achird, Erinome, Schedar) or pass a character from GET /api/characters to speak in that actor's designed or cloned voice. Energy is calm, confident, energetic or hype, and a style line adds direction in plain words. The WAV key goes into a video edit or a post.

## Ask in plain words

- "read this script aloud in a calm female voice"
- "text to speech API for my videos"
- "say this in my cloned voice"
- "make a voiceover for the launch clip"

## From an agent host (MCP)

Server: `https://shapelessai.com/mcp` ([add it to your host](https://shapelessai.com/connect)).

- `tools_run` with `{ "name": "speak", "input": { ... } }`: the input is the REST body below; `tools_list` prints its JSON Schema.

## From code (REST)

Bearer API key with the scope each call names ([auth](https://shapelessai.com/docs/auth), [OpenAPI](https://shapelessai.com/api/openapi.json)).

- `POST /api/speech` (write scope): Text to speech (tool speak): {text (<= 2000 chars), voice? (Sulafat, Charon, Kore, Achird, Erinome, Schedar), character? (id or slug, reads in its voice), energy? (calm|confident|energetic|hype), style?, name?, budgetUsd?}. Output mediaKey is a WAV.

## From a terminal (CLI)

- `shapeless tools run speak --input '<json>'` (`tools show speak` prints the schema)

## Example

```bash
curl -s https://shapelessai.com/api/speech -H "Authorization: Bearer $SHAPELESS_API_KEY" -H "Content-Type: application/json" -d '{"text":"We ship on Friday. Here is what changed.","voice":"Kore","energy":"energetic"}'
```

## Refusals

| Status | Meaning |
| --- | --- |
| 400 | The input does not match the tool's schema; the message names the field. |
| 402 | Not enough credit to hold budgetUsd, or the call costs more than budgetUsd. |
| 404 | No such tool on this deployment. |
| 422 | The tool refused this input; nothing was charged. |
| 502 | The tool failed; nothing was charged. |

## Where else

- [The api docs](https://shapelessai.com/docs/api) ([markdown](https://shapelessai.com/docs/api.md))
