Every API here is available over the APIs.io API and to AI agents over MCP.
{
"openapi": "3.0.1",
"info": {
"title": "FineVoice API",
"description": "This is the documentation for the FineVoice API. If you have any questions or need assistance, please contact support@finevoice.ai.",
"version": "v1"
},
"servers": [
{
"url": "https://apis.finevoice.ai",
"description": "FineVoice API Gateway"
}
],
"security": [
{
"BearerAuth": []
}
],
"paths": {
"/v1/audio/speech-synthesis": {
"post": {
"tags": [
"Audio"
],
"summary": "Text to Speech",
"description": "Convert text into natural-sounding speech using a selected AI voice model.",
"operationId": "SpeechSynthesis",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TextToSpeechRequest"
}
}
}
},
"responses": {
"200": {
"description": "Task accepted. Returns a taskId for async polling or the result URL directly.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AudioTaskResponse"
}
}
}
},
"401": {
"description": "Unauthorized — invalid or missing API key."
},
"422": {
"description": "Validation error — check request body fields."
}
}
}
},
"/v1/audio/voice-conversion": {
"post": {
"tags": [
"Audio"
],
"summary": "Voice Conversion",
"description": "Transform the voice in an audio file to a different AI voice while preserving the original content.",
"operationId": "VoiceConversion",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VoiceConversionRequest"
}
}
}
},
"responses": {
"200": {
"description": "Task accepted. Returns a taskId for async polling or the result URL directly.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AudioTaskResponse"
}
}
}
},
"401": {
"description": "Unauthorized — invalid or missing API key."
},
"422": {
"description": "Validation error — check request body fields."
}
}
}
},
"/v1/audio/stt": {
"post": {
"tags": [
"Audio"
],
"summary": "Speech to Text",
"description": "Transcribe speech from an audio or video URL into text, with optional speaker diarization and word-level timestamps.",
"operationId": "SpeechToText",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SpeechToTextRequest"
}
}
}
},
"responses": {
"200": {
"description": "Task accepted. Returns a taskId for async polling or the result URL directly.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AudioTaskResponse"
}
}
}
},
"401": {
"description": "Unauthorized — invalid or missing API key."
},
"422": {
"description": "Validation error — check request body fields."
}
}
}
},
"/v1/audio/sfx-generation": {
"post": {
"tags": [
"Audio"
],
"summary": "Sound Effect Generation",
"description": "Generate royalty-free sound effects from a text prompt or a source video/image.",
"operationId": "SfxGeneration",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SoundEffectGenerationRequest"
}
}
}
},
"responses": {
"200": {
"description": "Task accepted. Returns a taskId for async polling or the result URL directly.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AudioTaskResponse"
}
}
}
},
"401": {
"description": "Unauthorized — invalid or missing API key."
},
"422": {
"description": "Validation error — check request body fields."
}
}
}
},
"/v1/audio/separation": {
"post": {
"tags": [
"Audio"
],
"summary": "Audio Separation",
"description": "Separate vocals, instruments, and other audio stems from an audio file using AI.",
"operationId": "AudioSeparation",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SeparationRequest"
}
}
}
},
"responses": {
"200": {
"description": "Task accepted. Returns a taskId for async polling or the result URL directly.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AudioTaskResponse"
}
}
}
},
"401": {
"description": "Unauthorized — invalid or missing API key."
},
"422": {
"description": "Validation error — check request body fields."
}
}
}
},
"/v1/audio/podcastgen": {
"post": {
"tags": [
"Audio"
],
"summary": "Podcast Generation",
"description": "Generate a multi-speaker AI podcast from a script or prompt, with selectable voice models for each speaker.",
"operationId": "PodcastGen",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PodcastGenerationRequest"
}
}
}
},
"responses": {
"200": {
"description": "Task accepted. Returns a taskId for async polling or the result URL directly.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AudioTaskResponse"
}
}
}
},
"401": {
"description": "Unauthorized — invalid or missing API key."
},
"422": {
"description": "Validation error — check request body fields."
}
}
}
},
"/v1/voice/train": {
"post": {
"tags": [
"Voice"
],
"summary": "Train Voice Model",
"description": "Create a custom AI voice model by providing a training audio URL and basic profile information.",
"operationId": "TrainVoice",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VoiceTrainRequest"
}
}
}
},
"responses": {
"200": {
"description": "Training task accepted.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"401": {
"description": "Unauthorized — invalid or missing API key."
},
"422": {
"description": "Validation error — check request body fields."
}
}
}
},
"/v1/voice/design": {
"post": {
"tags": [
"Voice"
],
"summary": "Voice Design",
"description": "Design a new AI voice from a text prompt and preview it with sample text.",
"operationId": "VoiceDesign",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VoiceDesignRequest"
}
}
}
},
"responses": {
"200": {
"description": "Voice design task accepted.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"401": {
"description": "Unauthorized — invalid or missing API key."
},
"422": {
"description": "Validation error — check request body fields."
}
}
}
},
"/v1/voice/{name}": {
"get": {
"tags": [
"Voice"
],
"summary": "Get Voice Detail",
"description": "Retrieve detailed information about a specific voice model by its name.",
"operationId": "GetVoiceDetail",
"parameters": [
{
"name": "name",
"in": "path",
"required": true,
"schema": {
"type": "string"
},
"description": "The voice model name.",
"example": "james"
},
{
"name": "desigUuid",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "Optional design UUID to retrieve a specific voice design version."
}
],
"responses": {
"200": {
"description": "Voice detail returned.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"401": {
"description": "Unauthorized — invalid or missing API key."
},
"404": {
"description": "Voice not found."
}
}
}
},
"/v1/voice/pagevoices": {
"get": {
"tags": [
"Voice"
],
"summary": "List Voice Models",
"description": "Retrieve a paginated, filterable list of available AI voice models.",
"operationId": "PageVoices",
"parameters": [
{
"name": "categroy",
"in": "query",
"required": false,
"schema": {
"type": "string",
"enum": [
"all",
"my_voices",
"favorite"
],
"example": "all"
},
"description": "Category filter. `all` returns every voice, `my_voices` returns custom models, `favorite` returns favorited voices."
},
{
"name": "primary_category",
"in": "query",
"required": false,
"schema": {
"type": "string",
"enum": [
"social-media",
"advertisement",
"characters-and-animation",
"entertainment-and-tv",
"informative-and-educational",
"narrative-and-story",
"interactive_media",
"healthcare",
"companions",
"education_training",
"enterprise",
"all"
],
"example": "all"
},
"description": "Primary category filter."
},
{
"name": "gender",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "Filter by gender (e.g. `male`, `female`)."
},
{
"name": "language",
"in": "query",
"required": false,
"schema": {
"type": "string",
"example": "en-US"
},
"description": "Language filter using locale codes such as `en-US`, `zh-CN`, `ja-JP`."
},
{
"name": "keyword",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "Search keyword to filter voice names."
},
{
"name": "page",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"minimum": 0,
"example": 0
},
"description": "Page index, starting from 0."
},
{
"name": "limit",
"in": "query",
"required": false,
"schema": {
"type": "integer",
"format": "int32"
},
"description": "Number of voices per page."
},
{
"name": "tts",
"in": "query",
"required": false,
"schema": {
"type": "boolean"
},
"description": "Filter for TTS-compatible voices only."
},
{
"name": "style",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "Filter by voice style."
},
{
"name": "age",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "Filter by age range."
},
{
"name": "sub_category",
"in": "query",
"required": false,
"schema": {
"type": "string"
},
"description": "Sub-category filter."
}
],
"responses": {
"200": {
"description": "Paginated list of voice models.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"401": {
"description": "Unauthorized — invalid or missing API key."
}
}
}
},
"/v1/task/{task_id}": {
"get": {
"tags": [
"Task"
],
"summary": "Get Task Status",
"description": "Poll the status and result of an asynchronous audio processing task.",
"operationId": "GetTaskStatus",
"parameters": [
{
"name": "task_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
},
"description": "The task identifier returned by a previous API call.",
"example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
],
"responses": {
"200": {
"description": "Task status and result.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TaskQueryResponse"
}
}
}
},
"401": {
"description": "Unauthorized — invalid or missing API key."
},
"404": {
"description": "Task not found."
}
}
}
},
"/v1/music/musicgenbyprompt": {
"post": {
"tags": [
"Music"
],
"summary": "Music Generation by Prompt",
"description": "Generate a royalty-free music track from a text prompt, with control over style, duration, and model version.",
"operationId": "MusicGenByPrompt",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MusicGenerationByPromptRequest"
}
}
}
},
"responses": {
"200": {
"description": "Task accepted.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"401": {
"description": "Unauthorized — invalid or missing API key."
},
"422": {
"description": "Validation error — check request body fields."
}
}
}
},
"/v1/music/musicgen": {
"post": {
"tags": [
"Music"
],
"summary": "Music Generation by Lyrics",
"description": "Generate a full music track with vocals and/or instrumentation from lyrics, style description, and reference tracks.",
"operationId": "MusicGen",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MusicGenerationRequest"
}
}
}
},
"responses": {
"200": {
"description": "Task accepted.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"401": {
"description": "Unauthorized — invalid or missing API key."
},
"422": {
"description": "Validation error — check request body fields."
}
}
}
},
"/v1/music/cover": {
"post": {
"tags": [
"Music"
],
"summary": "Music Cover",
"description": "Create an AI voice cover of a song by replacing the original vocals with a target AI voice model.",
"operationId": "MusicCover",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MusicCoverRequest"
}
}
}
},
"responses": {
"200": {
"description": "Task accepted.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"401": {
"description": "Unauthorized — invalid or missing API key."
},
"422": {
"description": "Validation error — check request body fields."
}
}
}
},
"/v1/enhancer/speech_enhancement": {
"post": {
"tags": [
"Audio Enhancer"
],
"summary": "Speech Enhancement",
"description": "Reduce background noise and enhance speech quality. Supports WAV/MP3/FLAC/AAC/OGG/OPUS/M4A/WEBM. Returns enhanced audio file.",
"operationId": "SpeechEnhancement",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SpeechEnhancementRequest"
}
}
}
},
"responses": {
"200": {
"description": "Enhanced audio returned.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"401": {
"description": "Unauthorized — invalid or missing API key."
},
"422": {
"description": "Validation error — check request body fields."
}
}
}
},
"/v1/enhancer/speech_super_resolution": {
"post": {
"tags": [
"Audio Enhancer"
],
"summary": "Speech Super Resolution",
"description": "Upsample low-quality audio from 8 kHz to 48 kHz using the MossFormer2_SR_48K model. Returns high sample-rate audio file.",
"operationId": "SpeechSuperResolution",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SpeechSuperResolutionRequest"
}
}
}
},
"responses": {
"200": {
"description": "High sample-rate audio returned.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"401": {
"description": "Unauthorized — invalid or missing API key."
},
"422": {
"description": "Validation error — check request body fields."
}
}
}
},
"/v1/enhancer/speech_separation": {
"post": {
"tags": [
"Audio Enhancer"
],
"summary": "Speech Separation",
"description": "Separate two speakers from a mixed audio file using the MossFormer2_SS_16K model. Use `speaker_index` (0 or 1) to select which speaker to return.",
"operationId": "EnhancerSpeechSeparation",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SpeechSeparationRequest"
}
}
}
},
"responses": {
"200": {
"description": "Separated speaker audio returned.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"401": {
"description": "Unauthorized — invalid or missing API key."
},
"422": {
"description": "Validation error — check request body fields."
}
}
}
},
"/v1/enhancer/remove_mouth_sounds": {
"post": {
"tags": [
"Audio Enhancer"
],
"summary": "Remove Mouth Sounds",
"description": "Remove mouth sounds (clicks, pops, breathing) from audio using RNNoise, Hush, or Whisper-based stutter detection.",
"operationId": "RemoveMouthSounds",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RemoveMouthSoundsRequest"
}
}
}
},
"responses": {
"200": {
"description": "Processed audio returned.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"401": {
"description": "Unauthorized — invalid or missing API key."
},
"422": {
"description": "Validation error — check request body fields."
}
}
}
},
"/v1/enhancer/remove_long_silences": {
"post": {
"tags": [
"Audio Enhancer"
],
"summary": "Remove Long Silences",
"description": "Detect and trim silence segments exceeding a threshold duration while preserving boundary silence to avoid abrupt cuts.",
"operationId": "RemoveLongSilences",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RemoveLongSilencesRequest"
}
}
}
},
"responses": {
"200": {
"description": "Processed audio returned.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"401": {
"description": "Unauthorized — invalid or missing API key."
},
"422": {
"description": "Validation error — check request body fields."
}
}
}
},
"/v1/enhancer/filler_words/detect": {
"post": {
"tags": [
"Audio Enhancer"
],
"summary": "Filler Words Detect",
"description": "Detect filler words (um, uh, er, hmm) in audio. Default mode uses a lightweight audio classifier (language-agnostic). Whisper mode uses ASR for precise word-level timestamps.",
"operationId": "FillerWordsDetect",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FillerWordsRequest"
}
}
}
},
"responses": {
"200": {
"description": "Filler word timestamps returned.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"401": {
"description": "Unauthorized — invalid or missing API key."
},
"422": {
"description": "Validation error — check request body fields."
}
}
}
},
"/v1/enhancer/filler_words/remove": {
"post": {
"tags": [
"Audio Enhancer"
],
"summary": "Filler Words Remove",
"description": "Detect and remove filler words from audio. Default mode uses an audio classifier; Whisper mode uses ASR to precisely locate and cut filler words.",
"operationId": "FillerWordsRemove",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FillerWordsRequest"
}
}
}
},
"responses": {
"200": {
"description": "Processed audio file returned.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"401": {
"description": "Unauthorized — invalid or missing API key."
},
"422": {
"description": "Validation error — check request body fields."
}
}
}
},
"/v1/enhancer/stuttering/remove": {
"post": {
"tags": [
"Audio Enhancer"
],
"summary": "Stuttering Remove",
"description": "Detect and remove stuttering segments from audio using Whisper ASR. Returns processed audio file.",
"operationId": "StutteringRemove",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/StutteringRemoveRequest"
}
}
}
},
"responses": {
"200": {
"description": "Processed audio file returned.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"401": {
"description": "Unauthorized — invalid or missing API key."
},
"422": {
"description": "Validation error — check request body fields."
}
}
}
},
"/v1/enhancer/audio_normalization": {
"post": {
"tags": [
"Audio Enhancer"
],
"summary": "Audio Normalization",
"description": "Normalize audio loudness using peak, RMS, or combined normalization methods. Returns normalized audio file.",
"operationId": "AudioNormalization",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AudioNormalizationRequest"
}
}
}
},
"responses": {
"200": {
"description": "Normalized audio file returned.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"401": {
"description": "Unauthorized — invalid or missing API key."
},
"422": {
"description": "Validation error — check request body fields."
}
}
}
},
"/v1/enhancer/process/pipeline": {
"post": {
"tags": [
"Audio Enhancer"
],
"summary": "Process Pipeline",
"description": "All-in-one audio processing pipeline. Select steps via boolean flags. Execution order: (1) Speech Enhancement, (2) Remove Mouth Sounds, (3) Remove Long Silences, (4) Super Resolution, (5) Filler Words Removal, (6) Stuttering Removal, (7) Audio Normalization. Returns a download URL.",
"operationId": "ProcessPipeline",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PipelineRequest"
}
}
}
},
"responses": {
"200": {
"description": "Processed audio download URL returned.",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"401": {
"description": "Unauthorized — invalid or missing API key."
},
"422": {
"description": "Validation error — check request body fields."
}
}
}
}
},
"components": {
"securitySchemes": {
"BearerAuth": {
"type": "http",
"scheme": "bearer",
"bearerFormat": "JWT",
"description": "Bearer token (API key). Format: `Bearer {your_api_key}`"
}
},
"schemas": {
"ApiError": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "Error code."
},
"message": {
"type": "string",
"description": "Error message."
}
}
},
"AudioTaskResponse": {
"type": "object",
"description": "Standard response for audio processing tasks.",
"properties": {
"status": {
"type": "integer",
"format": "int32",
"description": "HTTP-style status code (200 for success, 202 for in-progress)."
},
"url": {
"type": "string",
"description": "Download URL of the generated audio file (available when completed)."
},
"taskId": {
"type": "string",
"description": "Task identifier for async polling. Use with GET /v1/task/{task_id}.",
"example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
},
"error": {
"$ref": "#/components/schemas/ApiError"
},
"urls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Multiple output URLs (e.g. for separation stems)."
},
"service": {
"type": "string"
},
"port": {
"
# --- truncated at 32 KB (63 KB total) ---
# Full source: https://artifacts.apis.io/finevoice/openapi/_original/finevoice-openapi-openapi.json