Lazybird Platform

API Reference

List Lazybird voices and generate MP3 speech from text or SSML in your own application.

Overview

The Lazybird Speech API lets you list available voices, generate MP3 speech from text or SSML, and create private cloned voices.

Base URL:

Text
1https://api.lazybird.app/v1

Authentication

Create an API key from your Lazybird Studio settings, then send it with each request.

Preferred header:

HTTP
1X-API-Key: YOUR_API_KEY

You can also pass the key as an api_key query parameter when a tool cannot set headers:

Text
1https://api.lazybird.app/v1/voices?api_key=YOUR_API_KEY

Keep API keys private. Do not expose them in browser code, mobile apps, public repositories, or client-side logs.

Agent skill

When you are using an AI coding agent, install the official Lazybird API skill so the agent has the current API shape, examples, and integration gotchas available in context.

Install the Lazybird API skill
1npx skills add lazybirdai/skills --agent codex --skill lazybird-api

Quickstart

Generate speech with a known voice ID:

Generate speech
1curl -X POST "https://api.lazybird.app/v1/generate-speech" \2  -H "X-API-Key: $LAZYBIRD_API_KEY" \3  -H "Content-Type: application/json" \4  --output speech.mp3 \5  --data '{6    "voiceId": "msa.en-US.SerenaMultilingual",7    "text": "My name is Serena and I am a voice from Lazybird."8  }'

The response is an MP3 audio file. Save the response body to a file instead of trying to display it as JSON.

Check service status

HTTP
1GET /status

Returns the current API health.

Example:

Terminal
1curl "https://api.lazybird.app/v1/status"

Response:

JSON
1{2  "status": "ok"3}

List voices

HTTP
1GET /voices

Returns voices that can be used with generate-speech.

Example:

Terminal
1curl "https://api.lazybird.app/v1/voices" \2  -H "X-API-Key: $LAZYBIRD_API_KEY"

Response:

JSON
1[2  {3    "id": "msa.en-US.Jenny",4    "displayName": "Jenny",5    "language": "English (United States)",6    "gender": "Female",7    "previewText": "Hi, I am Jenny.",8    "avatar": "https://example.com/avatar.jpg"9  }10]

Use the id value as voiceId when generating speech.

Generate speech

HTTP
1POST /generate-speech

Generates speech with the selected voice and returns an MP3 audio file.

Headers:

Header Required Value
X-API-Key Yes Your Lazybird API key
Content-Type Yes application/json

Body:

Field Type Required Description
voiceId string Yes Voice ID from /voices
text string No Plain text to convert to speech
ssml string No SSML content. Use this instead of text when you need pauses or speech markup.
settings object No Optional voice settings for this generation

Provide either text or ssml.

Plain text example

Terminal
1curl -X POST "https://api.lazybird.app/v1/generate-speech" \2  -H "X-API-Key: $LAZYBIRD_API_KEY" \3  -H "Content-Type: application/json" \4  --output speech.mp3 \5  --data '{6    "voiceId": "msa.en-US.SerenaMultilingual",7    "text": "My name is Serena and I am a voice from Lazybird."8  }'

SSML example

Terminal
1curl -X POST "https://api.lazybird.app/v1/generate-speech" \2  -H "X-API-Key: $LAZYBIRD_API_KEY" \3  -H "Content-Type: application/json" \4  --output speech.mp3 \5  --data '{6    "voiceId": "msa.en-US.SerenaMultilingual",7    "ssml": "<speak>My name is Serena <break time=\"1s\"/> and I am a voice from Lazybird.</speak>"8  }'

Voice settings example

All settings fields are optional.

JSON
1{2  "voiceId": "msa.en-US.SerenaMultilingual",3  "text": "This line is slower and slightly higher pitched.",4  "settings": {5    "style": "sad",6    "speed": 0.7,7    "pitch": 1.2,8    "volume": 1,9    "styleIntensity": 1,10    "locale": "es-ES"11  }12}

Settings:

Field Type Description
style string Speaking style or tone, when supported by the selected voice
speed number Speech speed. 1 is normal speed.
pitch number Voice pitch. 1 is the default pitch.
volume number Output volume. 1 is the default volume.
styleIntensity number Strength of the selected speaking style
locale string BCP-47 locale override, such as en-US, es-ES, fr-FR, de-DE, or ja-JP, when supported by the selected voice

Locale override

Use settings.locale to choose the spoken language or accent for multilingual voices. This is especially important for personal voices, which can be synthesized in different languages by passing a locale override.

Terminal
1curl -X POST "https://api.lazybird.app/v1/generate-speech" \2  -H "X-API-Key: $LAZYBIRD_API_KEY" \3  -H "Content-Type: application/json" \4  --output spanish.mp3 \5  --data '{6    "voiceId": "msa.en-US.SerenaMultilingual",7    "text": "Hola, este audio usa una configuración regional en español.",8    "settings": {9      "locale": "es-ES"10    }11  }'

List personal voices

HTTP
1GET /personal-voices

Returns cloned voices owned by the authenticated API key's user.

Example:

Terminal
1curl "https://api.lazybird.app/v1/personal-voices" \2  -H "X-API-Key: $LAZYBIRD_API_KEY"

Response:

JSON
1{2  "voices": [3    {4      "id": "pv:abc123",5      "name": "Narrator",6      "sampleUrl": "https://cdn.lazybird.app/voice-samples/abc123.mp3"7    }8  ]9}

Use the returned pv:<id> value as the voiceId when generating speech with a cloned voice.

Create a personal voice

HTTP
1POST /personal-voices

Creates a private cloned voice from a publicly reachable voice sample URL. Voice cloning requires a plan with voice cloning access and available voice slots.

Headers:

Header Required Value
X-API-Key Yes Your Lazybird API key
Content-Type Yes application/json

Body:

Field Type Required Description
name string Yes Display name for the cloned voice
sampleUrl string Yes Public URL for the source voice sample

Example:

Terminal
1curl -X POST "https://api.lazybird.app/v1/personal-voices" \2  -H "X-API-Key: $LAZYBIRD_API_KEY" \3  -H "Content-Type: application/json" \4  --data '{5    "name": "Narrator",6    "sampleUrl": "https://example.com/sample.wav"7  }'

Generate speech with a personal voice

You can call the normal speech endpoint with a pv: voice ID:

Terminal
1curl -X POST "https://api.lazybird.app/v1/generate-speech" \2  -H "X-API-Key: $LAZYBIRD_API_KEY" \3  -H "Content-Type: application/json" \4  --output cloned.mp3 \5  --data '{6    "voiceId": "pv:abc123",7    "text": "Este audio usa mi voz clonada en español.",8    "settings": {9      "locale": "es-ES"10    }11  }'

Or use the explicit personal voice synthesis endpoint:

HTTP
1POST /personal-voices/{voiceId}/generate-speech
Terminal
1curl -X POST "https://api.lazybird.app/v1/personal-voices/pv:abc123/generate-speech" \2  -H "X-API-Key: $LAZYBIRD_API_KEY" \3  -H "Content-Type: application/json" \4  --output cloned.mp3 \5  --data '{6    "text": "This uses my cloned voice."7  }'

This endpoint accepts the same text, ssml, settings, pauses, and cacheKey fields as POST /generate-speech.

Delete a personal voice

HTTP
1DELETE /personal-voices/{voiceId}

Example:

Terminal
1curl -X DELETE "https://api.lazybird.app/v1/personal-voices/pv:abc123" \2  -H "X-API-Key: $LAZYBIRD_API_KEY"

Responses

Successful generate-speech requests return an MP3 file.

HTTP
1HTTP/1.1 200 OK2Content-Type: audio/mpeg

If a request fails, check that your API key is valid, the voiceId exists, and the request includes either text or ssml.

Testing tips

  • Make API requests from a server environment, not browser code.
  • Start by calling /voices and copying a voice ID from the response.
  • Save generate-speech responses with --output speech.mp3.
  • Keep SSML valid XML. Escape quotation marks correctly when sending SSML inside JSON.