> ## Documentation Index
> Fetch the complete documentation index at: https://docs.summerengine.com/llms.txt
> Use this file to discover all available pages before exploring further.

# HeyGen Voice

> HeyGen Voice on the Summer API: $0.015 per 1,000 characters, about 11 s, MP3 saved to your Summer library. Model id voice/heygen-voice.

Expressive speech in 39 languages, and a very cheap Turbo.

| | |
| - | - |
| Model id | `voice/heygen-voice` |
| Price | \$0.015 per 1,000 characters |
| Typical time | about 11 s |
| Does | [Text to speech](https://docs.summerengine.com/api/models.md#text-to-speech) |
| Output | MP3 |
| Made by | HeyGen |
| Try it | [Examples and playground on summerengine.com](https://www.summerengine.com/models/heygen-voice) |
| Commercial use | Yes |

## Best for

* NPC dialogue in a stock voice.
* Localized voice-over from one script.
* Thousands of short lines with Turbo.

## Price

**\$0.015 per 1,000 characters**, counted from `text`. Exact list price: `0.015 USD`.

No markup: this is the provider's list price, checked 2026-10-24. A failed job costs nothing. Get the exact price of one request, free and without a key, from [`POST /v1/estimate`](https://docs.summerengine.com/api/jobs#know-the-price-first).

## Example call

Sign in once with `summer login`; over HTTP, send `Authorization: Bearer $SUMMER_TOKEN` after `export SUMMER_TOKEN=$(summer token)` ([sign-in](https://docs.summerengine.com/api/sign-in.md)). This job comes back done in the same call, with the file ready to download.

```bash CLI theme={null}
npx -y summer-engine@latest api run voice/heygen-voice \
  --input '{"text":"The gate is open. Go, before the guards come back."}' \
  --download .
```

```bash curl theme={null}
curl https://www.summerengine.com/v1/jobs \
  -H "Authorization: Bearer $SUMMER_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Prefer: wait=60" \
  -d '{"model":"voice/heygen-voice","input":{"text":"The gate is open. Go, before the guards come back."}}'
```

```ts TypeScript theme={null}
const res = await fetch("https://www.summerengine.com/v1/jobs", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.SUMMER_TOKEN}`,
    "Content-Type": "application/json",
    "Idempotency-Key": crypto.randomUUID(),
    Prefer: "wait=60",
  },
  body: JSON.stringify({
    "model": "voice/heygen-voice",
    "input": {
      "text": "The gate is open. Go, before the guards come back."
    }
  }),
});
const { job } = await res.json();
console.log(job.state, job.id);
```

```python Python theme={null}
import os, uuid, requests

res = requests.post(
    "https://www.summerengine.com/v1/jobs",
    headers={
        "Authorization": f"Bearer {os.environ['SUMMER_TOKEN']}",
        "Idempotency-Key": str(uuid.uuid4()),
        "Prefer": "wait=60",
    },
    json={"model": "voice/heygen-voice", "input": {"text": "The gate is open. Go, before the guards come back."}},
)
job = res.json()["job"]
print(job["state"], job["id"])
```

```js MCP theme={null}
// Summer's MCP server: npx -y summer-engine@latest setup <agent> --yes
summer_api_run({
  model: "voice/heygen-voice",
  input: {
    text: "The gate is open. Go, before the guards come back."
  },
  out: "assets",
})
```

The finished job has `state` `"done"` and `result.assets`: one entry per file, each with `assetId`, `fileUrl` (a Summer URL) and `thumbnailUrl`. Download the file into your project, or import it in Summer Engine by its asset id.

## Input

Send these fields in `input`. The full JSON Schema is `inputSchema` in [`GET /v1/models/voice/heygen-voice`](https://docs.summerengine.com/api/reference/get-models-model).

| Field | Type | About |
| - | - | - |
| `text` (required) | string | The words to speak, at most 5000 characters. up to 5000 characters |
| `voiceId` | string | Speech: a voice of the game cast. up to 100 characters |
| `voiceSettings` | object | Speech: voice tuning. |

## Voices

`voiceId` is optional: without it the model uses its default voice. These are Summer's curated voices; the live list is `voices` in `GET /v1/models/voice/heygen-voice`. For more, search the public voice library by words, language, gender, age or accent, each with a sample: `GET /v1/voices?model=voice/heygen-voice&search=old+wizard` (signed in).

> **All 24 voices**
>
> | Name | voiceId |
> | - | - |
> | Jonah | `Jonah` |
> | Nadine | `Nadine` |
> | Tabitha | `Tabitha` |
> | Soren | `Soren` |
> | Elowen | `Elowen` |
> | Vincent | `Vincent` |
> | Jocelyn | `Jocelyn` |
> | Marielle | `Marielle` |
> | Corinne | `Corinne` |
> | Lucian | `Lucian` |
> | Kieran | `Kieran` |
> | Hugh | `Hugh` |
> | Noelle | `Noelle` |
> | Bram | `Bram` |
> | Ewan | `Ewan` |
> | Iona | `Iona` |
> | Cecily | `Cecily` |
> | Simon | `Simon` |
> | Weston | `Weston` |
> | Felicity | `Felicity` |
> | Gareth | `Gareth` |
> | Rory | `Rory` |
> | Meredith | `Meredith` |
> | Sabrina | `Sabrina` |

## Related models

> **[Expressive v3](https://docs.summerengine.com/api/models/voice/expressive-v3.md)**
>
> `voice/expressive-v3`: \$0.08 per 1,000 characters (default)

> **[Multilingual v2](https://docs.summerengine.com/api/models/voice/multilingual-v2.md)**
>
> `voice/multilingual-v2`: \$0.08 per 1,000 characters

> **[HeyGen Voice Turbo](https://docs.summerengine.com/api/models/voice/heygen-voice-turbo.md)**
>
> `voice/heygen-voice-turbo`: \$0.002 per 1,000 characters

> **[Inworld TTS-1.5 Max](https://docs.summerengine.com/api/models/voice/inworld-tts-1-5-max.md)**
>
> `voice/inworld-tts-1.5-max`: \$0.01 per 1,000 characters

## For agents

This page as Markdown: [https://docs.summerengine.com/api/models/voice/heygen-voice.md](https://docs.summerengine.com/api/models/voice/heygen-voice.md). The live record with the JSON Schema: `GET https://www.summerengine.com/v1/models/voice/heygen-voice`, public, no sign-in.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.