# 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