Verbatik LogoVerbatik

API Reference

Complete REST API endpoint reference for all Verbatik endpoints.

API Reference

Complete reference for all Verbatik REST API endpoints. All endpoints require authentication via API key.

Base URL

https://api.verbatik.com

Authentication

Authorization: Bearer vbt_your_api_key

Endpoints Overview

MethodEndpointDescription
GET/api/v1/voicesList pre-trained voices
POST/api/v1/ttsText-to-speech synthesis
POST/api/v1/voice-trainingClone a voice from audio
POST/api/v1/voice-designDesign a voice from description
POST/api/v1/voice-cloningGenerate speech with a cloned voice
GET/api/v1/my-voicesList your cloned/designed voices
POST/api/v1/text-to-musicGenerate music from text
POST/api/audio-uploadUpload an audio file

GET /api/v1/voices

List available pre-trained TTS voices.

Query Parameters:

ParameterTypeDescription
languagestringFilter by language code (e.g., en-US).
genderstringMale, Female, Neutral.
searchstringSearch by name or language.

Response:

[
  {
    "id": "jenny-en-us",
    "name": "Jenny",
    "gender": "Female",
    "language_code": "en-US",
    "language_name": "English (United States)",
    "is_neural": true,
    "sample_url": "https://...",
    "styles": ["cheerful", "sad"]
  }
]

POST /api/v1/tts

Convert text to speech using pre-trained voices.

HeaderRequiredDescription
Content-TypeYestext/plain or application/ssml+xml
X-Voice-IDNoVoice slug. Default: jenny-en-us.
X-Store-AudioNotrue for URL response instead of binary.

Body: Plain text or SSML (max 25,000 characters). Cost: $0.025 per 1,000 characters.

POST /api/v1/voice-training

Clone a voice from an audio sample.

{
  "audio_url": "https://example.com/sample.mp3",
  "name": "My Voice",
  "noise_reduction": false,
  "volume_normalization": false,
  "accuracy": 0.8,
  "preview_text": "Hello, this is a preview."
}

Cost: $3.00 per voice.

Response:

{
  "success": true,
  "voice_id": "uuid",
  "name": "My Voice",
  "preview_url": "https://...",
  "cost_cents": 300,
  "balance_cents": 1700
}

POST /api/v1/voice-design

Create a voice from a text description.

{
  "prompt": "A warm, friendly female voice...",
  "name": "Friendly Voice",
  "preview_text": "Hello, this is a preview."
}

Cost: $3.00 per voice.

POST /api/v1/voice-cloning

Generate speech using a cloned or designed voice.

HeaderRequiredDescription
Content-TypeYestext/plain
X-Voice-IDYesCloned voice UUID.
X-Store-AudioNotrue to store audio.
X-SpeedNo0.5–2.0 (default: 1).
X-VolumeNo0–10 (default: 1).
X-PitchNo-12 to 12 (default: 0).
X-EmotionNohappy, sad, angry, fearful, disgusted, surprised, neutral.
X-English-NormalizationNotrue/false.
X-Voice-Modify-PitchNo-100 to 100.
X-Voice-Modify-IntensityNo-100 to 100.
X-Voice-Modify-TimbreNo-100 to 100.
X-Sample-RateNo8000, 16000, 22050, 24000, 32000, 44100.
X-BitrateNo32000, 64000, 128000, 256000.
X-FormatNomp3, pcm, flac.
X-Language-BoostNoLanguage code for enhanced recognition.

Body: Plain text (max 5,000 characters). Cost: $0.08 per 1,000 characters.

GET /api/v1/my-voices

List all cloned and designed voices in your workspace.

ParameterTypeDescription
statusstringFilter: pending, ready, failed.
[
  {
    "id": "uuid",
    "name": "My Voice",
    "status": "ready",
    "preview_url": "https://...",
    "source_audio_url": "https://...",
    "created_at": "2025-01-15T10:30:00.000Z",
    "last_used_at": "2025-01-20T14:00:00.000Z"
  }
]

POST /api/v1/text-to-music

Generate music from text prompts.

{
  "prompt": "An upbeat electronic track",
  "tags": ["electronic", "upbeat"],
  "lyrics": "Feel the rhythm...",
  "num_songs": 1,
  "output_format": "mp3",
  "store_audio": true,
  "name": "My Track"
}

Cost: $0.20 per minute of audio.

POST /api/audio-upload

Upload an audio file for use with voice cloning.

Content-Type: multipart/form-data

Returns a URL for use with the voice-training endpoint.

Common Error Responses

StatusDescription
400Bad request — invalid parameters or missing required fields.
401Unauthorized — invalid or missing API key.
402Payment required — insufficient balance.
403Forbidden — no access to this resource.
404Not found — resource does not exist.
429Rate limit exceeded — too many requests.
500Internal server error — unexpected failure.

All errors follow this format:

{
  "success": false,
  "error": "Description of the error"
}

CORS

All endpoints support CORS:

Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, OPTIONS
Access-Control-Allow-Headers: Content-Type, Authorization
Access-Control-Max-Age: 86400

On this page