# AudioStack Integration via LowCodeAPI
**Last Updated**: February 11, 2026
## Overview
AudioStack is a platform for creating and managing audio content including text-to-speech and audio production. It provides a comprehensive API for:
- Text-to-speech synthesis with various voices
- Script management and content generation
- Voice cloning and custom dictionaries
- File and content management
- Audio recommendations (tones, moods, tags)
## Base Endpoint
https://api.lowcodeapi.com/audiostack
**Important**: Always include the provider name in the URL path after `api.lowcodeapi.com/`
## Authentication
AudioStack uses a Bearer Token authentication method.
### Setup Instructions
1. Sign up at [AudioStack](https://audiostack.com)
2. Navigate to your account settings to generate an API key
3. Copy your API key
4. Add it to your LowCodeAPI credentials for the `audiostack` provider
### Get Credentials
- **API Key**: [AudioStack Account API Keys](https://audiostack.com/account/api)
## URL Format (Important)
LowCodeAPI supports **two URL formats** for endpoints with path parameters. Always try the **New Format first**, and only fall back to the **Old Format** if it doesn't work.
### New Format (Priority) - Dynamic Path Parameters
Path parameters stay in the URL path - do NOT convert to query parameters.
Pattern: `https://api.lowcodeapi.com/audiostack/{path_with_params}?api_token={api_token}`
**Example**:
```bash
# New Format - Path parameter stays in the URL path
https://api.lowcodeapi.com/audiostack/content/file/id/FILE_123456?api_token=YOUR_API_TOKEN
```
### Old Format (Fallback) - Sanitized Path + Query Parameters
Path parameters become query parameters.
Pattern: `https://api.lowcodeapi.com/audiostack/{sanitized_path}?{path_params}&api_token={api_token}`
**Example**:
```bash
# Old Format - Path parameter becomes a query parameter
https://api.lowcodeapi.com/audiostack/content/file/id/fileid?id=FILE_123456&api_token=YOUR_API_TOKEN
```
### Decision Flow for AI Agents
1. Always use New Format first - Keep path parameters in the URL path
2. If you get a 404 or error, try Old Format with sanitized path
3. Log which format worked for future requests to AudioStack
### Multiple Path Parameters
For endpoints with multiple path parameters:
```bash
# New Format (Priority)
https://api.lowcodeapi.com/audiostack/content/script/SCRIPT_ID/v1
# Old Format (Fallback)
https://api.lowcodeapi.com/audiostack/content/script/scriptid/version?scriptId=SCRIPT_ID&version=v1
```
## API Categories
- **File** - File upload, transfer, search, and management
- **Folder** - Folder creation and deletion
- **Recommend** - AI-powered recommendations for tags, tones, moods, and IAB categories
- **Script** - Script creation, editing, listing, and versioning
- **Voice** - Voice listing, selection, and voice cloning
- **Dictionary** - Custom pronunciation dictionaries
- **Predict** - Audio length prediction
- **Speech** - Text-to-speech synthesis and management
- **Mixing** - Audio mixing and production
## Common Endpoints
### Create File Upload URL
Generates a pre-signed URL for uploading a new file to AudioStack.
**Method**: POST | **LowCodeAPI Path**: `/content/file/create-upload-url`
**New Format URL**:
```
https://api.lowcodeapi.com/audiostack/content/file/create-upload-url?api_token={api_token}
```
**Old Format URL**:
```
https://api.lowcodeapi.com/audiostack/content/file/create-upload-url?api_token={api_token}
```
**Path Parameters**: None
**Query Parameters**: None
**Request Body**:
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| filePath | string | Yes | File path in backend where the file will be created. Arbitrary folder paths are supported, and folders not yet created will be created. |
| category | string | No | An arbitrary category for this file. |
| source | string | No | By default this will be the client used to upload (e.g., api, sdk). |
| tags | array | No | A list of tags in string format. |
| metadata | object | No | Freeform object for representing metadata. |
**Example Request** (New Format):
```bash
curl -X POST "https://api.lowcodeapi.com/audiostack/content/file/create-upload-url?api_token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"filePath": "my-audio-files/intro.mp3",
"category": "intro-music",
"tags": ["background", "music"]
}'
```
**Example Response**:
```json
{
"data": {
"url": "https://v2.api.audio/upload/...",
"fileId": "FILE_1234567890"
}
}
```
**Official Documentation**: [Create Upload URL](https://docs.audiostack.ai/reference/postfile)
---
### List Voices
List all available voices with filtering options.
**Method**: GET | **LowCodeAPI Path**: `/speech/voice`
**New Format URL**:
```
https://api.lowcodeapi.com/audiostack/speech/voice?api_token={api_token}
```
**Old Format URL**:
```
https://api.lowcodeapi.com/audiostack/speech/voice?api_token={api_token}
```
**Path Parameters**: None
**Query Parameters**:
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| languageCode | string | No | ISO language code of the voice, e.g. en-US |
| language | string | No | Language of the voice. |
| gender | string | No | Gender of the voice. |
| accent | string | No | Accent of the voice. |
| ageBracket | string | No | Age bracket of the voice. |
| provider | string | No | Provider of the voice. |
| tags | string | No | Tags of the voice. Multiple tags separated by comma are accepted. |
| industryExamples | string | No | Multiple tags separated by comma are accepted. |
| timePerformance | string | No | Relative response time. |
| sort | string | No | Sort order of items by an attribute. |
| page | number | No | Page number to be returned. |
| pageLimit | number | No | Max. amount of items to be returned per page. |
**Example Request** (New Format):
```bash
curl -X GET "https://api.lowcodeapi.com/audiostack/speech/voice?languageCode=en-US&gender=female&api_token=YOUR_API_TOKEN"
```
**Example Response**:
```json
{
"data": {
"voices": [
{
"name": "sarah",
"displayName": "Sarah",
"languageCode": "en-US",
"gender": "female",
"accent": "american",
"provider": "openai"
}
]
}
}
```
**Official Documentation**: [List Voices](https://docs.audiostack.ai/reference/listvoices)
---
### Create Text-to-Speech
Creates a text-to-speech audio file from a script.
**Method**: POST | **LowCodeAPI Path**: `/speech/tts`
**New Format URL**:
```
https://api.lowcodeapi.com/audiostack/speech/tts?api_token={api_token}
```
**Old Format URL**:
```
https://api.lowcodeapi.com/audiostack/speech/tts?api_token={api_token}
```
**Path Parameters**: None
**Query Parameters**: None
**Request Body**:
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| scriptId | string | Yes | Reference to the Script that is to be synthesized. Use /script to create and get it. |
| voice | string | No | Either alias or original (provider's) ID. Available voices are listed at https://library.audiostack.ai/ |
| speed | number | No | Scalar for speed manipulation, range 0.5-3. |
| public | boolean | No | Makes returned URLs publicly available. |
| silencePadding | string | No | Amount of microseconds for silence padding. Half of the amount is inserted as silence at the beginning and at the end of each Speech file. |
| useAutofix | boolean | No | Flag to apply autofix. |
| useDenoiser | boolean | No | Flag to apply denoiser. |
| voiceIntelligence | boolean | No | Flag to apply lexicographical text corrections. |
| audience | object | No | Object defining the values for Script parameters. |
| sections | object | No | Separate configurations for Script section. |
**Example Request** (New Format):
```bash
curl -X POST "https://api.lowcodeapi.com/audiostack/speech/tts?api_token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"scriptId": "SCRIPT_1234567890",
"voice": "sarah",
"speed": 1.0,
"public": true
}'
```
**Example Response**:
```json
{
"data": {
"speechId": "SPEECH_9876543210",
"url": "https://v2.api.audio/file/...",
"duration": 12.5,
"status": "completed"
}
}
```
**Official Documentation**: [Create TTS](https://docs.audiostack.ai/reference/postspeech)
---
### Get Script
Get a single script by ID.
**Method**: GET | **LowCodeAPI Path**: `/content/script/{scriptId}`
**New Format URL**:
```
https://api.lowcodeapi.com/audiostack/content/script/{scriptId}?api_token={api_token}
```
**Old Format URL**:
```
https://api.lowcodeapi.com/audiostack/content/script/scriptid?scriptId={scriptId}&api_token={api_token}
```
**Path Parameters**:
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| scriptId | string | Yes | Script ID |
**Query Parameters**:
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| preview | string | No | Preview the effect of applying various text correction processes, normalisation and dictionary. |
| voice | string | No | Which TTS voice should be used to generate the preview, note that this required as different voices require different text correction processes. |
**Example Request** (New Format):
```bash
curl -X GET "https://api.lowcodeapi.com/audiostack/content/script/SCRIPT_1234567890?api_token=YOUR_API_TOKEN"
```
**Example Response**:
```json
{
"data": {
"scriptId": "SCRIPT_1234567890",
"scriptText": "Hello, welcome to AudioStack!",
"moduleName": "my-module",
"projectName": "my-project",
"scriptName": "intro"
}
}
```
**Official Documentation**: [Get Script](https://docs.audiostack.ai/reference/getscriptid)
---
### Clone Voice
Creates a custom voice clone from uploaded audio files.
**Method**: POST | **LowCodeAPI Path**: `/speech/voice-builder`
**New Format URL**:
```
https://api.lowcodeapi.com/audiostack/speech/voice-builder?api_token={api_token}
```
**Old Format URL**:
```
https://api.lowcodeapi.com/audiostack/speech/voice-builder?api_token={api_token}
```
**Path Parameters**: None
**Query Parameters**: None
**Request Body**:
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| alias | string | Yes | Alias for the cloned voice. You'll be able to use this alias when requesting TTS. Has to be globally unique. |
| fileIds | array of strings | Yes | List of fileIds to be used in cloning. |
| voiceEngine | string | Yes | Voice engine to be used in cloning. |
| consentFileId | string | No | FileId of the consent file, speaker stating they agree to have their voice cloned. Required for voice_engine_2. |
| metadata | object of strings | No | Metadata for the cloned voice. It's recommended to include. |
**Example Request** (New Format):
```bash
curl -X POST "https://api.lowcodeapi.com/audiostack/speech/voice-builder?api_token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"alias": "my-custom-voice",
"fileIds": ["FILE_111", "FILE_222", "FILE_333"],
"voiceEngine": "voice_engine_1",
"metadata": {
"name": "John Doe",
"gender": "male"
}
}'
```
**Example Response**:
```json
{
"data": {
"jobId": "CLONE_1234567890",
"status": "in_progress",
"alias": "my-custom-voice"
}
}
```
**Official Documentation**: [Voice Builder](https://docs.audiostack.ai/reference/voicebuilder)
---
## Complete Endpoint Reference
| Method | Category | New Format Path | Description |
|--------|----------|-----------------|-------------|
| POST | File | `/content/file/create-upload-url` | Creates a URL for uploading a new file |
| PUT | File | `/content/file/transfer-file` | Transfers a file created in the AudioStack API |
| GET | File | `/content/file/search` | Search for files |
| GET | File | `/content/file/id/{fileId}` | Get a file object and creates a URL for downloading |
| DELETE | File | `/content/file/id/{fileId}` | Deletes a file |
| PATCH | File | `/content/file/id/{fileId}` | Updates a file resource |
| POST | Folder | `/content/folder` | Creates an empty folder |
| DELETE | Folder | `/content/folder` | Deletes a folder |
| POST | Recommend | `/content/recommend/tag` | Get recommended tags from user-specified list |
| POST | Recommend | `/content/recommend/tone` | Get recommended tones |
| POST | Recommend | `/content/recommend/mood` | Get recommended moods |
| POST | Recommend | `/content/recommend/iab_category` | Get recommended IAB category |
| POST | Script | `/content/script` | Create a Script resource |
| PUT | Script | `/content/script` | Updates a Script resource |
| GET | Script | `/content/scripts` | Lists multiple script resources |
| GET | Script | `/content/script/{scriptId}` | Get a single script |
| DELETE | Script | `/content/script/{scriptId}` | Deletes a script |
| GET | Script | `/content/script/{scriptId}/{version}` | Get a single version of a script |
| DELETE | Script | `/content/script/{scriptId}/{version}` | Deletes a single version of a script |
| GET | Script | `/content/list_projects` | Lists all projects |
| POST | Script | `/content/generate/advert` | Generate an advert using AI |
| POST | Script | `/content/edit/advert` | Edit an advert |
| GET | Voice | `/speech/voice` | List all available voices |
| GET | Voice | `/speech/voice/parameter` | Lists voice parameters |
| GET | Voice | `/speech/voice/{name}` | Get data for a single voice |
| POST | Voice | `/speech/voice/select` | Get a voice and speed recommendation |
| PUT | Dictionary | `/speech/diction/custom/item` | Add word to a custom dictionary |
| DELETE | Dictionary | `/speech/diction/custom/item` | Deletes a word from a dictionary |
| GET | Dictionary | `/speech/diction` | List dictionaries |
| GET | Dictionary | `/speech/diction/custom` | List custom dictionaries |
| GET | Dictionary | `/speech/diction/custom/items` | Lists all words within a custom dictionary |
| POST | Predict | `/speech/predict` | Predicts audio length |
| GET | Predict | `/speech/predict/voices` | Lists all voices that can predict audio length |
| POST | Voice Cloning | `/speech/voice-builder` | Clones a voice from files |
| GET | Voice Cloning | `/speech/voice-builder` | Lists all Voice Cloning jobs |
| POST | Speech | `/speech/tts` | Create a text-to-speech resource |
| GET | Speech | `/speech/tts` | Lists multiple text-to-speech resources |
| POST | Speech | `/speech/tts/section` | Create a single section of a TTS resource |
| POST | Speech | `/speech/tts/preview` | Create a fast preview of a given voice |
| GET | Speech | `/speech/tts/{speechId}` | Retrieve a TTS resource |
| DELETE | Speech | `/speech/tts/{speechId}` | Deletes a TTS resource |
| POST | Mixing | `/mixing/produce` | Produce an audio mix |
| GET | Mixing | `/mixing/{mixId}` | Get a mix |
## API Definition Endpoints
To discover all available endpoints programmatically:
```bash
# New Format - OpenAPI spec with dynamic path parameters
curl -X GET "https://backend.lowcodeapi.com/audiostack/openapi"
# Old Format - API definition with sanitized paths
curl -X GET "https://backend.lowcodeapi.com/audiostack/definition"
```
## Usage Examples
### Example 1: Create and Synthesize a Simple Script
```bash
# Step 1: Create a script
curl -X POST "https://api.lowcodeapi.com/audiostack/content/script?api_token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"scriptText": "Hello and welcome to our podcast. Today we will discuss the future of AI.",
"scriptName": "podcast-intro",
"projectName": "tech-podcast"
}'
# Response returns: { "data": { "scriptId": "SCRIPT_ABC123..." } }
# Note: SCRIPT_ID returned here will be used in next step
# Step 2: Get available voices to choose one
curl -X GET "https://api.lowcodeapi.com/audiostack/speech/voice?languageCode=en-US&api_token=YOUR_API_TOKEN"
# Response lists available voices - pick one (e.g., "sarah")
# Step 3: Create TTS using the script
curl -X POST "https://api.lowcodeapi.com/audiostack/speech/tts?api_token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"scriptId": "SCRIPT_ABC123...", # From Step 1
"voice": "sarah",
"speed": 1.0
}'
# Response returns audio file URL
```
### Example 2: Upload a File and Use it for Voice Cloning
```bash
# Step 1: Create upload URL for voice sample
curl -X POST "https://api.lowcodeapi.com/audiostack/content/file/create-upload-url?api_token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"filePath": "voice-samples/sample1.wav",
"category": "voice-clone-source"
}'
# Response returns: { "data": { "url": "https://...", "fileId": "FILE_XYZ789..." } }
# Note: Use the returned URL to upload your file, then use fileId in next step
# Step 2: Upload multiple voice samples (repeat for each sample)
# For this example, assume we have FILE_111, FILE_222, FILE_333 from uploads
# Step 3: Create a consent file (required for voice_engine_2)
curl -X POST "https://api.lowcodeapi.com/audiostack/content/file/create-upload-url?api_token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"filePath": "consents/john-consent.txt",
"category": "consent"
}'
# Upload consent file and get FILE_CONSENT
# Step 4: Clone the voice
curl -X POST "https://api.lowcodeapi.com/audiostack/speech/voice-builder?api_token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"alias": "john-custom-voice",
"fileIds": ["FILE_111", "FILE_222", "FILE_333"], # From Step 1
"voiceEngine": "voice_engine_1",
"metadata": {
"name": "John Doe",
"gender": "male"
}
}'
# Response returns: { "data": { "jobId": "CLONE_..." } }
# Step 5: Use the cloned voice for TTS
curl -X POST "https://api.lowcodeapi.com/audiostack/speech/tts?api_token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"scriptId": "SCRIPT_ABC123...",
"voice": "john-custom-voice" # Using the alias from Step 4
}'
```
### Example 3: Get AI Recommendations for Content
```bash
# Step 1: Get recommended tone for your text
curl -X POST "https://api.lowcodeapi.com/audiostack/content/recommend/tone?api_token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"text": "Welcome to our exciting adventure! Get ready for an amazing journey.",
"number_of_results": 3
}'
# Response: { "data": { "tones": ["energetic", "upbeat", "friendly"] } }
# Step 2: Get recommended mood
curl -X POST "https://api.lowcodeapi.com/audiostack/content/recommend/mood?api_token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"text": "This is a sad story about loss and redemption.",
"number_of_results": 3
}'
# Response: { "data": { "moods": ["melancholic", "hopeful", "dramatic"] } }
# Step 3: Get IAB category tags
curl -X POST "https://api.lowcodeapi.com/audiostack/content/recommend/iab_category?api_token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"text": "Learn about the latest iPhone features and specifications.",
"language": "en",
"num_tags": 5
}'
# Response returns categorized IAB tags
```
### Example 4: Search and Download Files
```bash
# Step 1: Search for files
curl -X GET "https://api.lowcodeapi.com/audiostack/content/file/search?category=music&api_token=YOUR_API_TOKEN"
# Response: { "data": { "files": [...] } }
# Step 2: Get a specific file (no ID needed - just the fileId from search results)
# Assume search returned fileId: "FILE_DOWNLOAD123"
# Step 3: Get file with download URL (no ID parameter needed for this endpoint)
curl -X GET "https://api.lowcodeapi.com/audiostack/content/file/id/FILE_DOWNLOAD123?api_token=YOUR_API_TOKEN"
# Response: { "data": { "fileId": "FILE_DOWNLOAD123", "url": "https://..." } }
```
## Error Handling
| Status Code | Description |
|-------------|-------------|
| 200 | Success |
| 400 | Bad Request - Invalid parameters |
| 401 | Unauthorized - Invalid or missing API token |
| 403 | Forbidden - Insufficient permissions |
| 404 | Not Found - Resource or endpoint doesn't exist |
| 422 | Unprocessable Entity - Validation failed |
| 429 | Rate Limit Exceeded |
| 500 | Internal Server Error |
## Response Format
All responses are wrapped in a `data` key:
```json
{
"data": {
// Actual response from AudioStack API (object or array)
}
}
```
## Links
- **Official Documentation**: https://docs.audiostack.ai/reference/quick-start
- **Website**: https://audiostack.ai
- **Get API Key**: https://audiostack.com/account/api