> **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`.

# Cast actors and voices

*Verified 2026-10-07. Source: https://shapelessai.com/capabilities/characters*

The account's actors: the founder as themself, and any character the videos are narrated or fronted by.

Read the roster with each voice and its locks, create or edit an actor, archive one, and give an actor a voice: designed from a description, cloned from a sample, or spoken on demand. Voice work spends credit and says so in the response. A job that names an actor uses that voice, so this is where a person's own voice becomes the one their content speaks in.

## Ask in plain words

- "clone my voice from this recording"
- "design a calm British narrator voice"
- "which actors do I have and what do they sound like"
- "voice cloning API for my videos"

## From an agent host (MCP)

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

- `characters_list`: The account's actors: who they are, what their voice is, and which parts are locked. `voiceDescription` is the casting direction a designed voice was written from - read it before designing another one, and reuse the actor that already fits. Needs the read scope.
- `characters_voice`: SPENDS CREDIT: gives an actor a voice. `description` designs one from casting direction (kept on the character, so later runs can reuse the actor); `sampleMediaKey` clones a real voice and requires `consent: true` - the user's own attestation that they hold the rights. Returns the voice id, a preview clip and what it cost. Needs the write scope.

## 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)).

- `GET /api/characters` (read scope): The actor roster: identity, voice, locks.
- `POST /api/characters` (write scope): Create an actor: {name, bio?, isUser?}.
- `GET /api/characters/{id}` (read scope): One actor.
- `PATCH /api/characters/{id}` (write scope): Edit an actor, including its locks.
- `DELETE /api/characters/{id}` (write scope): Archive an actor.
- `POST /api/characters/{id}/voice` (write scope): Design, clone, or speak a voice: {action: design, voicePrompt} | {action: clone, sampleMediaKey, consent: true} | {action: speak, text} (billed like POST /api/speech).

## From a terminal (CLI)

- `shapeless characters list`
- `shapeless characters voice`

## Example

```bash
curl -s https://shapelessai.com/api/characters/<id>/voice -H "Authorization: Bearer $SHAPELESS_API_KEY" -H "Content-Type: application/json" -d '{"action":"design","voicePrompt":"Calm, warm, British, unhurried."}'
```
```jsonc
// MCP tool call
{ "tool": "characters_voice", "arguments": { "character": "tal", "description": "Calm, warm, British, unhurried." } }
```
```bash
shapeless characters voice tal --describe "Calm, warm, British, unhurried."
```

## Where else

- [Do it in the studio](https://shapelessai.com/brain/characters)
