🔥Hot Feature
Remove Music from Video Online Free
Pure SoundSeparate SoundEfficient
🔥Hot Feature
The Fastest AI Professional Headshot Generator - 100% Free. Try Now
🔥Hot Feature
Remove Music from Video Online Free
Pure SoundSeparate SoundEfficient
🔥Hot Feature
The Fastest AI Professional Headshot Generator - 100% Free. Try Now

API Doc

Audio Cleaner (Podcast) API - Complete Integration Guide

The Podcast API is used to automatically generate podcast results from multiple sources, using a two-step asynchronous task process: first generating the podcast script, then generating the final audio file based on the script. Suitable for news broadcasts, content explanations, interviews, and more.

Overview

Key Features

  • Multi-format and multi-channel support: supports text, web pages, YouTube, PDF, Word, audio, and video input formats and resource links.
  • AI intelligent polishing: intelligently improves storytelling, clarity, and engagement, making podcasts more vivid and natural. Suitable for news, interviews, explanations, and various scenarios.
  • Custom speech speed and style: supports customizable speech speed and style, multiple audio voices to meet diverse output needs.
  • Perfect support for speakers and segments: supports multiple speakers, automatically distinguishes roles, easy segmentation of complex flows.
  • High concurrency and fault tolerance: stable support for large-scale automated tasks, with status polling and clear error returns.
  • Developer-friendly: open API, unified structured response, comprehensive documentation, easy for secondary integration.

Authentication

All API requests require api-key. Include your API key in request headers:

API Host: https://audiocleaner.ai/

api-key: YOUR_API_KEY

Overall Process (Two Steps)

  • Call Step 1 create API to generate podcast script, return global_id
  • Poll Step 1 status API to obtain the script result (train_data, podcast_script, etc.)
  • Call Step 2 create API, input the script structure to generate the audio file, return global_id
  • Poll Step 2 status API to get the final audio address (file_url)

1. Step 1 - Create Podcast Script Task

Endpoint

POST /audio/api/v1/api-keys/podcast/script/create

Request Headers

HeaderTypeRequiredDescription
Content-Typestringapplication/json
api-keystringYOUR_API_KEY

Request Parameters (Body · JSON)

ParameterTypeRequiredDescription
source_typenumberInput type: 1 Website, 2 YouTube, 3 Attachment, 4 Plain text
speakersnumber[]Speaker ID list
stylenumberPodcast style parameter
durationnumberExpected duration level
use_modestringUsage mode, e.g. ai
commercial_usenumberCommercial use flag
languagestringLanguage, e.g. zh
textstringConditionally requiredRequired when source_type=4 (input plain text)
urlstringConditionally requiredRequired when source_type=1/2/3 (input source URL)

Podcast Style Parameter Description

valueDescription
1Educational
2Interview
3Deep Dive
4Storytelling
5News Report
6Talk Show
7Personal Growth
8Funny
9Roast

Duration Level Description

valueDescription
10-1 minute
21-3 minutes
33-5 minutes
45-7 minutes
57-8 minutes
68-10 minutes
710-15 minutes

Supported Languages

Languagevalue
Simplified Chinesezh
Cantonesezh_yue
Englishen
Arabicar
Russianru
Spanishes
Frenchfr
Portuguesept
Germande
Japaneseja
Koreanko

Example Input (Plain Text)

{
  "source_type": 4,
  "speakers": [16098, 16093],
  "style": 1,
  "duration": 3,
  "use_mode": "ai",
  "commercial_use": 0,
  "language": "zh",
  "text": "Faced with growing backlash..."
}

Example Input (Attachment)

{
  "source_type": 3,
  "speakers": [16098, 16093],
  "style": 1,
  "duration": 3,
  "use_mode": "ai",
  "commercial_use": 0,
  "language": "zh",
  "url": "https://resource.audiocleaner.ai/paid/source-file/202604/14/1776147603_307691.jpg"
}

Example Input (Website)

{
  "source_type": 1,
  "speakers": [16098, 16093],
  "style": 1,
  "duration": 3,
  "use_mode": "ai",
  "commercial_use": 0,
  "language": "zh",
  "url": "https://audiocleaner.ai/"
}

Example Input (YouTube)

{
  "source_type": 2,
  "speakers": [16098, 16093],
  "style": 1,
  "duration": 3,
  "use_mode": "ai",
  "commercial_use": 0,
  "language": "zh",
  "url": "https://www.youtube.com/shorts/4QenPnBk99M"
}

Return Format (Success Example)

{
  "code": 100000,
  "data": {
    "global_id": "29a820e8-31ec-4502-859d-883be108d1e0"
  },
  "message": "Request Success"
}

Response Code (code) Description

codeMeaningmessage Example
100000SuccessRequest Success
100100Insufficient credit balanceInsufficient credit balance
101002Invalid API keyInvalid API key
101003API key rate limit exceededAPI key rate limit exceeded
101004API key concurrent request limit exceededAPI key concurrent request limit exceeded
101005API key suspendedYour account is suspended. Status cannot be modified. Please contact the administrator
101006API key not enabledAPI key not enabled

Example

curl --location --request POST 'https://audiocleaner.ai/audio/api/v1/api-keys/podcast/script/create' \
  --header 'Content-Type: application/json' \
  --header 'api-key: YOUR_API_KEY' \
  --data-raw '{
    "source_type": 4,
    "speakers": [16098, 16093],
    "style": 1,
    "duration": 3,
    "use_mode": "ai",
    "commercial_use": 0,
    "language": "zh",
    "text": "Faced with growing backlash..."
  }'

2. Step 1 - Query Podcast Script Task Status

Endpoint

POST /audio/api/v1/api-keys/podcast/script/get

Request Headers

HeaderTypeRequiredDescription
Content-Typestringapplication/json
api-keystringYOUR_API_KEY

Request Parameters (Body · JSON)

ParameterTypeRequiredDescription
global_idstringTask ID returned by Step 1 create API

Return Format (Success Example)

{
  "code": 100000,
  "data": {
    "status": "success",
    "global_id": "29a820e8-31ec-4502-859d-883be108d1e0",
    "source_data": "https://www.youtube.com/shorts/4QenPnBk99M",
    "train_data": "...",
    "podcast_script": [],
    "hightlights": [],
    "processed_content": "...",
    "title": "...",
    "avatar": null,
    "podcast_script_txt": "...",
    "create_time": 1776176539
  },
  "message": "Request Success"
}

Return Field Description

FieldTypeDescription
data.statusstringTask status: waiting/success/failed
data.global_idstringTask unique ID
data.source_datastringOriginal source (summary or URL)
data.train_datastringStructured script outline
data.podcast_scriptarrayDialogue script array (roles, text, voice)
data.hightlightsarrayHighlight segment information (see API field)
data.processed_contentstringPodcast introduction/summary
data.titlestringPodcast title
data.podcast_script_txtstringText version of podcast script

Response Code (code) Description

codeMeaningmessage Example
100000SuccessRequest Success
100100Insufficient credit balanceInsufficient credit balance
101002Invalid API keyInvalid API key
101003API key rate limit exceededAPI key rate limit exceeded
101004API key concurrent request limit exceededAPI key concurrent request limit exceeded
101008Task not foundTask not found

Example

curl --location --request POST 'https://audiocleaner.ai/audio/api/v1/api-keys/podcast/script/get' \
  --header 'Content-Type: application/json' \
  --header 'api-key: YOUR_API_KEY' \
  --data-raw '{
    "global_id": "29a820e8-31ec-4502-859d-883be108d1e0"
  }'

3. Step 2 - Create Podcast Audio Task

Endpoint

POST /audio/api/v1/api-keys/podcast/audio/create

Request Headers

HeaderTypeRequiredDescription
Content-Typestringapplication/json
api-keystringYOUR_API_KEY

Request Parameters (Body · JSON)

ParameterTypeRequiredDescription
titlestringPodcast title
processed_contentstringPodcast introduction
podcast_scriptarrayDialogue script array
hightlightsarrayHighlight segment array
global_idstringScript task ID returned by Step 1

Return Format (Success Example)

{
  "code": 100000,
  "data": {
    "global_id": "29a820e8-31ec-4502-859d-883be108d1e0"
  },
  "message": "Request Success"
}

Response Code (code) Description

codeMeaningmessage Example
100000SuccessRequest Success
100100Insufficient credit balanceInsufficient credit balance
101002Invalid API keyInvalid API key
101003API key rate limit exceededAPI key rate limit exceeded
101004API key concurrent request limit exceededAPI key concurrent request limit exceeded
101005API key suspendedYour account is suspended. Status cannot be modified. Please contact the administrator
101006API key not enabledAPI key not enabled

Example

curl --location --request POST 'https://audiocleaner.ai/audio/api/v1/api-keys/podcast/audio/create' \
  --header 'Content-Type: application/json' \
  --header 'api-key: YOUR_API_KEY' \
  --data-raw '{
    "title": "Who is Shelby? A Power Game in a Conversation",
    "processed_content": "In this episode, we explore the subtle moments of power encounters...",
    "podcast_script": [
      {
        "role": "A",
        "name": "Unrestrained Young Man",
        "avatar": "",
        "text": "Hi everyone! Today we’re going to talk about a very interesting conversation.",
        "voice_id": "https://resource.audiocleaner.ai/acweb/minimax/zh/Chinese (Mandarin)_Unrestrained_Young_Man.mp3"
      }
    ],
    "hightlights": [
      {
        "highlight": "Power encounter moments and provocative tone",
        "index": 0,
        "script_start_index": 0,
        "script_end_index": 3
      }
    ],
    "global_id": "ce2afb8f-7ccd-44a5-8bb0-8849098acfb7"
  }'

4. Step 2 - Query Podcast Audio Task Status

Endpoint

POST /audio/api/v1/api-keys/podcast/audio/get

Credit Consumption Description

  • Credit consumption for audio generation tasks is billed according to the duration of the generated audio, as follows:
  • Credit consumption = max(10, ⌊audio duration (minutes)⌋ × 10) (at least 10 credits)
  • ⌊⌋ means rounding down. For example: 5.9 minutes is calculated as 5 minutes.
  • If the current credit balance is less than required, the remaining balance will be set to zero (i.e., this task will not result in negative balance).
Audio Duration (min)Credit Consumption (consumption = max(10, floor × 10))
[0, 1)10
[1, 2)10
[2, 3)20
......

Request Headers

HeaderTypeRequiredDescription
Content-Typestringapplication/json
api-keystringYOUR_API_KEY

Request Parameters (Body · JSON)

ParameterTypeRequiredDescription
global_idstringTask ID returned by Step 2 create API

Return Format (Success Example)

{
  "code": 100000,
  "data": {
    "status": "success",
    "global_id": "29a820e8-31ec-4502-859d-883be108d1e0",
    "file_url": "https://resource.audiocleaner.ai/paid/output/result/xxx_final.mp3",
    "source_data": "https://www.youtube.com/shorts/4QenPnBk99M",
    "train_data": "...",
    "podcast_script": [],
    "hightlights": [],
    "processed_content": "...",
    "title": "...",
    "avatar": "/img/cover1.png",
    "podcast_script_txt": "...",
    "create_time": 1776147898
  },
  "message": "Request Success"
}

Return Field Description (Key)

FieldTypeDescription
data.statusstringTask status: waiting/success/failed
data.global_idstringTask unique ID
data.file_urlstringFinal podcast audio URL (returned on success)
data.podcast_scriptarrayScript details
data.hightlightsarrayHighlight segments (may include start_time)
data.podcast_script_txtstringFinal text script (may include podcast link)

Response Code (code) Description

codeMeaningmessage Example
100000SuccessRequest Success
100100Insufficient credit balanceInsufficient credit balance
101002Invalid API keyInvalid API key
101003API key rate limit exceededAPI key rate limit exceeded
101004API key concurrent request limit exceededAPI key concurrent request limit exceeded
101008Task not foundTask not found

Example

curl --location --request POST 'https://audiocleaner.ai/audio/api/v1/api-keys/podcast/audio/get' \
  --header 'Content-Type: application/json' \
  --header 'api-key: YOUR_API_KEY' \
  --data-raw '{
    "global_id": "29a820e8-31ec-4502-859d-883be108d1e0"
  }'

5. Download Podcast Voice Resources

  • Only returns voice information visible/available to the current account.
  • Returns in JSON format and includes all required fields for business use, such as image/audio URLs and basic attributes (e.g. gender, age, language, etc).
  • Key fields in the returned content are described, such as gender and age.
  • After logging in, click the "Developer" menu, enter Playground, and select the "TAI Podcast Master" feature.

Return Format (Success Example)

{
  "code": 100000,
  "data": {
    "total": 481,
    "records": [
      {
        "id": 17827,
        "gender": 1,
        "gender_text": "male",
        "language": "en",
        "age": 2,
        "age_text": "young-adult",
        "emotion": [],
        "image": "https://resource.audiocleaner.ai/acweb/aicovergenerator/images/spongebob.webp",
        "audio": "https://resource.audiocleaner.ai/acweb/aicovergenerator/speak/spongebob.mp3",
        "voice_id": "",
        "tags": ["Animation", "Funny", "SpongeBob SquarePants"],
        "name": "spongebob",
        "display_name": "SpongeBob"
      }
      // ... more voice resources
    ]
  },
  "message": "Request Success"
}

Response Code (code) Description

codeMeaningmessage Example
100000SuccessRequest Success
100001Not logged inNeed Login

Usage Flow Suggestions

  • Call Step 1 create API according to the input source to get global_id
  • Poll Step 1 query API until status=success and get podcast_script
  • Use the script result as parameters to call Step 2 create API, get a new global_id
  • Poll Step 2 query API until status=success and get file_url
  • If resource or account-related data is needed, call the Podcast Voice Resource API

FAQ

Why split into two steps?

The first step produces a structured script, and the second step synthesizes the audio based on the script. Splitting makes retrying, debugging, and quality control easier.

After Step 1 succeeds, do I have to use the returned script structure for Step 2?

Yes, it is recommended to use the title, processed_content, podcast_script, hightlights, etc. returned by Step 1 directly to avoid inconsistency issues.

Why doesn’t the query API check if the key is enabled?

According to the current backend rules, the query API focuses on checking key validity, frequency, concurrency, task existence, and credit status.