> For the complete documentation index, see [llms.txt](https://docs.autocontentapi.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.autocontentapi.com/code-samples/podcasts/nodejs/single-custom-voice.md).

# Use One Custom Voice

This snippet recreates the [🎤 Use One Custom Voice](/quick-start/podcasts/single-custom-voice.md) recipe using Node.js. Review the [Node.js guide](/code-samples/language-quickstarts/nodejs.md) for environment setup before running it.

```javascript
// Requires Node.js 18+ for the built-in fetch API.
const token = process.env.AUTOCONTENT_TOKEN ?? "YOUR_API_TOKEN";
const endpoint = "https://api.autocontentapi.com/content/CreatePodcastCustomVoices";

const payload = {
  "outputType": "audio",
  "voice1": 13,
  "resources": [
    {
      "type": "text",
      "content": "Highlights from this week's roadmap, customer wins, and upcoming launches."
    }
  ],
  "text": "Record this as a solo host update with a warm, confident tone."
};

async function run() {
  const response = await fetch(endpoint, {
    method: "POST",
    headers: {
      Authorization: `Bearer ${token}`,
      "Content-Type": "application/json"
    },
    body: JSON.stringify(payload)
  });

  if (!response.ok) {
    const errorText = await response.text();
    throw new Error(`Request failed: ${response.status} ${response.statusText}\n${errorText}`);
  }

  const result = await response.json();
  console.log("Request accepted:", result);
}

run().catch(error => {
  console.error(error);
  process.exit(1);
});
```

Replace `YOUR_API_TOKEN` (or set the `AUTOCONTENT_TOKEN` environment variable) before running the request.

**See also**

* [Scenario overview](/quick-start/podcasts/single-custom-voice.md)
* [Node.js guide](/code-samples/language-quickstarts/nodejs.md)
