API429 / ElevenLabs

ElevenLabs API: eleven_v4 speech synthesis, voice ID and MP3 checks

Synthesize speech with the literal eleven_v4 model on POST /v1/audio/speech using an allowed voice identifier in API429_VOICE_ID. Verify the returned MP3 binary signature before saving, respect voice usage rights and consent, and budget using the catalog rate per 1,000 characters.

Models and current API429 rates

These are exact speech model IDs for this family. The public catalog and GET /v1/models for your key answer different questions: a published entry does not prove account access. Preserve hyphens, dots and versions exactly.

Model / exact IDAPI429: USD and billing units
Eleven V4eleven_v4
$0.03000000 / 1,000 TTS characters

Catalog data date: . Rates retain their catalog conditions; an absent row does not mean a free request.

Family pricing and calculator · Full catalog

Prepare a short speech test and an allowed API429_VOICE_ID

Start your evaluation of eleven_v4 with two short sentences that include ordinary words, a number and a natural pause so you can judge pronunciation and pacing by ear. The literal catalog identifier eleven_v4 does not promise access to every voice library entry or studio feature described on the ElevenLabs website. Before making a paid call, obtain a voice identifier confirmed for your API429 connection and set API429_VOICE_ID in your server environment. Never hardcode a random voice ID from an upstream tutorial or assume a default voice will be selected.

Call POST /v1/audio/speech and inspect the MP3 header bytes

This guide uses POST /v1/audio/speech with model set to eleven_v4, text in input, your confirmed voice string and response_format set to mp3. Because the endpoint returns binary audio rather than a text completion, inspect the HTTP status, check that the Content-Type header matches audio/mpeg or audio/mp3, and verify that the payload starts with an ID3 tag or an MPEG frame sync header before writing speech.mp3 to disk. Listen to the saved file to confirm clear pronunciation and complete phrasing before automating batch synthesis.

Budget per 1,000 characters and verify voice rights and consent

Speech synthesis for eleven_v4 is billed by character count using the tts_characters metric published in the API429 catalog, quoted per 1,000 characters. Do not apply text token prices or estimate spend from audio duration alone without a documented character conversion. Upstream ElevenLabs documentation covers native model variants, output encodings and voice licensing rules; always ensure you hold the necessary rights and speaker consent for any voice and script used in your project, and consult the dedicated ElevenLabs pricing guide for rate comparisons.

Check key access in GET /v1/models and protect server credentials

Create your API429 key in the account dashboard and check GET /v1/models with that key to confirm that eleven_v4 is enabled for your account. A public catalog entry shows published inventory rather than account-specific entitlement. Keep the exact underscore spelling eleven_v4, store API429_API_KEY and API429_VOICE_ID in server-side environment variables, and keep credentials out of browser bundles and logs. If a speech request times out, check the operation state before retrying so you do not trigger duplicate billable synthesis.

Read live character rates from the API429 public catalog

The pricing table on this page displays the current character rate for eleven_v4 only when the API429 public catalog provides a fresh, unambiguous standard_public quotation. If a rate cell is hidden, treat the price as unconfirmed rather than free. Log the model ID, input character length, voice ID and audio verification result in your application before scaling up your workload, and keep your API429 balance separate from any native ElevenLabs subscription plan.

Choose your next connection step

  • ElevenLabs API pricing

    Compare character billing units, workload budgets and published rate conditions for ElevenLabs speech synthesis.

  • API429 model catalog

    Check the literal eleven_v4 catalog entry, audio capabilities and live tts_characters billing units.

  • API429 quickstart

    Set up your API429 key, verify model access in GET /v1/models and review documented endpoint contracts.

First speech synthesis: curl, Python, JavaScript

  1. Create a key in your API429 account and add balance by Russian bank card, a business invoice, USDT or TON. A $10 test balance is available for subscribing to the Telegram channel through the bonus bot.
  2. Use the same key to verify eleven_v4 in GET https://gateway.api429.com/v1/models.
  3. Set API429_API_KEY on the server and send a small paid request. The example does not retry automatically.
  4. Inspect HTTP status, MP3 MIME type and a non-empty response body, then listen to the saved file. A timeout does not prove that the operation was unbilled.

The request uses POST /v1/audio/speech, an explicit voice and response_format=mp3. Set a confirmed API429_VOICE_ID for Python and JavaScript; replace YOUR_VOICE_ID in curl. No default voice is assumed. Python and JavaScript verify key access, audio MIME type and a non-empty body; for curl, check the model list and response separately before saving the MP3.

curl

curl --fail-with-body https://gateway.api429.com/v1/audio/speech \
  -H "Authorization: Bearer $API429_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"eleven_v4","input":"Welcome. Check the pronunciation and pacing of this short sample before running batch speech synthesis.","voice":"YOUR_VOICE_ID","response_format":"mp3"}' \
  --output speech.mp3

Python 3

import base64
import json
import os
import urllib.request
from pathlib import Path

key = os.environ["API429_API_KEY"]
base = "https://gateway.api429.com/v1"
headers = {"Authorization": "Bearer " + key, "Content-Type": "application/json"}
model = "eleven_v4"
with urllib.request.urlopen(urllib.request.Request(base + "/models", headers=headers), timeout=30) as response:
    available = {item["id"] for item in json.load(response)["data"]}
if model not in available:
    raise ValueError("Model unavailable to this key")
payload = json.loads("{\"model\":\"eleven_v4\",\"input\":\"Welcome. Check the pronunciation and pacing of this short sample before running batch speech synthesis.\",\"voice\":\"YOUR_VOICE_ID\",\"response_format\":\"mp3\"}")
payload["voice"] = os.environ["API429_VOICE_ID"]
if not payload["voice"] or payload["voice"] == "YOUR_VOICE_ID":
    raise ValueError("Set a confirmed voice ID")
request = urllib.request.Request(base + "/audio/speech",
    data=json.dumps(payload).encode("utf-8"), headers=headers, method="POST")
with urllib.request.urlopen(request, timeout=180) as response:
    content_type = response.headers.get("Content-Type", "").split(";")[0].strip().lower()
    if content_type not in ("audio/mpeg", "audio/mp3"):
        raise ValueError("Expected MP3 MIME; inspect response before saving")
    audio = response.read()
if not audio:
    raise ValueError("Empty audio")
Path("speech.mp3").write_bytes(audio)

JavaScript: Node.js 18+

import { writeFile } from "node:fs/promises";
const key = process.env.API429_API_KEY;
if (!key) throw new Error("Set API429_API_KEY");
const base = "https://gateway.api429.com/v1";
const headers = { Authorization: "Bearer " + key, "Content-Type": "application/json" };
const model = "eleven_v4";
const available = await fetch(base + "/models", { headers, signal: AbortSignal.timeout(30000) });
if (!available.ok) throw new Error("Models HTTP " + available.status);
if (!(await available.json()).data.some(item => item.id === model)) throw new Error("Model unavailable to this key");
const payload = {"model":"eleven_v4","input":"Welcome. Check the pronunciation and pacing of this short sample before running batch speech synthesis.","voice":"YOUR_VOICE_ID","response_format":"mp3"};
payload.voice = process.env.API429_VOICE_ID;
if (!payload.voice || payload.voice === "YOUR_VOICE_ID") throw new Error("Set a confirmed voice ID");
const response = await fetch(base + "/audio/speech", {
 method: "POST", headers, body: JSON.stringify(payload), signal: AbortSignal.timeout(180000)
});
if (!response.ok) throw new Error("Generation HTTP " + response.status);
if (!["audio/mpeg", "audio/mp3"].includes((response.headers.get("content-type") || "").split(";")[0].trim().toLowerCase())) throw new Error("Expected MP3 MIME");
const bytes = Buffer.from(await response.arrayBuffer());
if (!bytes.length) throw new Error("Empty audio");
await writeFile("speech.mp3", bytes);

These examples do not prove access for your key; verify the exact ID before a paid request. API contract · Configure your client · Questions and support

Payment and a $10 test

  • Russian bank card. Top up your balance in the account.
  • Invoice for companies. Bank transfer with closing documents.
  • USDT and TON. Top up in crypto.

$10 test credit. Subscribe to our Telegram channel through the bot and get $10 on your balance for the first requests. Get $10 in the bot

Frequently asked questions

Where do I get the voice ID for eleven_v4 requests?

Use a voice identifier confirmed for your API429 connection, set it in the API429_VOICE_ID environment variable for Python or JavaScript, and replace YOUR_VOICE_ID in curl.

How do I verify that the response is a valid MP3 file?

Check for a 200 HTTP status, an audio/mpeg or audio/mp3 Content-Type header, a non-empty body and an ID3 or MPEG frame sync header before saving and listening to the file.

How is eleven_v4 billed on API429?

It is billed by character count using the published tts_characters rate per 1,000 characters in the API429 catalog, separate from any consumer ElevenLabs subscription.

Does API429 grant rights to clone or use any third-party voice?

No. You remain responsible for verifying voice availability on your connection and holding all required permissions, licenses and speaker consent for your audio content.

Sources and editorial review

Manufacturer documentation describes its family and its own API rules. API429 IDs, rates and request contracts require separate catalog and documentation checks. The original source-review date below is retained; English publication does not renew the source review.

Source review: . To connect, create an API429 account and follow the quickstart instructions.

Telegram