{
  "openapi": "3.1.0",
  "jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
  "info": {
    "title": "OpenSpeaker Generation API",
    "version": "1.0.0",
    "description": "Sanitized public discovery specification for active OpenSpeaker generation workflows. Workflow-specific payload details remain in the authenticated documentation.",
    "contact": {
      "name": "OpenSpeaker support",
      "email": "vivoo.global.network@gmail.com"
    }
  },
  "externalDocs": {
    "description": "Public developer guide",
    "url": "https://openspeaker.ai/developers"
  },
  "servers": [
    {
      "url": "https://api.openspeaker.ai"
    }
  ],
  "tags": [
    {
      "name": "Common",
      "description": "Task lifecycle, credits and health."
    },
    {
      "name": "Voice library",
      "description": "Unified active voice search. Disabled and legacy providers are excluded."
    },
    {
      "name": "Text to Speech",
      "description": "Natural speech from leading voice libraries, plus low-cost and long-form processing."
    },
    {
      "name": "Text to Dialogue",
      "description": "Multi-speaker audio with per-speaker voices and timing controls."
    },
    {
      "name": "Pronunciation Dictionary",
      "description": "Reusable pronunciation rules for names, brands and difficult terms."
    },
    {
      "name": "Clone Voice",
      "description": "Clone a reusable voice from consented reference audio."
    },
    {
      "name": "AI Audio Dubbing",
      "description": "Translate and dub MP3 or M4A audio while preserving vocal character."
    },
    {
      "name": "Voice Changer",
      "description": "Transform a recording into another selected voice."
    },
    {
      "name": "Voice Isolation",
      "description": "Remove background noise and isolate clear speech from recordings."
    },
    {
      "name": "Speech to Text",
      "description": "Accurate transcription with structured text and subtitle export."
    },
    {
      "name": "Sound Effects",
      "description": "Generate custom sound effects from a simple text description."
    },
    {
      "name": "AI Music Generation",
      "description": "Request two music clips per run with Suno v4.5-all."
    },
    {
      "name": "AI Image Generation",
      "description": "Create and edit images across 20 active models with dynamic cost estimates."
    }
  ],
  "paths": {
    "/v3/text-to-speech": {
      "post": {
        "operationId": "posttext_to_speech1",
        "summary": "POST Text to Speech",
        "description": "Turn scripts and long-form text into natural speech. Process up to 1,000,000 characters per task with voice sources from ElevenLabs, MiniMax, Vbee, Fish Audio or low-cost Microsoft Edge voices.",
        "tags": [
          "Text to Speech"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Task or resource accepted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "422": {
            "description": "Invalid input or unsupported configuration"
          }
        },
        "requestBody": {
          "required": true,
          "description": "See the public developer guide and authenticated API documentation for workflow-specific fields.",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        }
      }
    },
    "/v3/text-to-speech/dialogue": {
      "post": {
        "operationId": "posttext_to_dialogue1",
        "summary": "POST Text to Dialogue",
        "description": "Build multi-speaker audio from written dialogue. Assign a different voice to each speaker and control pauses between lines.",
        "tags": [
          "Text to Dialogue"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Task or resource accepted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "422": {
            "description": "Invalid input or unsupported configuration"
          }
        },
        "requestBody": {
          "required": true,
          "description": "See the public developer guide and authenticated API documentation for workflow-specific fields.",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        }
      }
    },
    "/v3/dictionaries": {
      "get": {
        "operationId": "getpronunciation_dictionary1",
        "summary": "GET Pronunciation Dictionary",
        "description": "Create reusable replacement rules before generating speech or dialogue, so important names and specialist terms are spoken consistently.",
        "tags": [
          "Pronunciation Dictionary"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "422": {
            "description": "Invalid input or unsupported configuration"
          }
        }
      },
      "post": {
        "operationId": "postpronunciation_dictionary2",
        "summary": "POST Pronunciation Dictionary",
        "description": "Create reusable replacement rules before generating speech or dialogue, so important names and specialist terms are spoken consistently.",
        "tags": [
          "Pronunciation Dictionary"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Task or resource accepted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "422": {
            "description": "Invalid input or unsupported configuration"
          }
        },
        "requestBody": {
          "required": true,
          "description": "See the public developer guide and authenticated API documentation for workflow-specific fields.",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        }
      }
    },
    "/v3/dictionaries/preview": {
      "post": {
        "operationId": "postpronunciation_dictionary3",
        "summary": "POST Pronunciation Dictionary",
        "description": "Create reusable replacement rules before generating speech or dialogue, so important names and specialist terms are spoken consistently.",
        "tags": [
          "Pronunciation Dictionary"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Task or resource accepted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "422": {
            "description": "Invalid input or unsupported configuration"
          }
        },
        "requestBody": {
          "required": true,
          "description": "See the public developer guide and authenticated API documentation for workflow-specific fields.",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        }
      }
    },
    "/v3/text-to-speech/voice-clone": {
      "post": {
        "operationId": "postvoice_cloning1",
        "summary": "POST Clone Voice",
        "description": "Clone a reusable voice from your own recording or properly consented reference audio, then use it in the unified speech workspace.",
        "tags": [
          "Clone Voice"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Task or resource accepted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "422": {
            "description": "Invalid input or unsupported configuration"
          }
        },
        "requestBody": {
          "required": true,
          "description": "See the public developer guide and authenticated API documentation for workflow-specific fields.",
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        }
      }
    },
    "/v1/task/dubbing": {
      "post": {
        "operationId": "postaudio_dubbing1",
        "summary": "POST AI Audio Dubbing",
        "description": "Upload MP3 or M4A audio, choose a target language and create a dubbed version through the ElevenLabs dubbing workflow.",
        "tags": [
          "AI Audio Dubbing"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Task or resource accepted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "422": {
            "description": "Invalid input or unsupported configuration"
          }
        },
        "requestBody": {
          "required": true,
          "description": "See the public developer guide and authenticated API documentation for workflow-specific fields.",
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        }
      }
    },
    "/v1/task/voice-changer": {
      "post": {
        "operationId": "postvoice_changer1",
        "summary": "POST Voice Changer",
        "description": "Transform recorded speech into another voice with ElevenLabs speech-to-speech while retaining the original performance and pacing.",
        "tags": [
          "Voice Changer"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Task or resource accepted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "422": {
            "description": "Invalid input or unsupported configuration"
          }
        },
        "requestBody": {
          "required": true,
          "description": "See the public developer guide and authenticated API documentation for workflow-specific fields.",
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        }
      }
    },
    "/v1/task/voice-isolate": {
      "post": {
        "operationId": "postvoice_isolation1",
        "summary": "POST Voice Isolation",
        "description": "Clean up spoken audio by isolating the voice from background noise through ElevenLabs Audio Isolation.",
        "tags": [
          "Voice Isolation"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Task or resource accepted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "422": {
            "description": "Invalid input or unsupported configuration"
          }
        },
        "requestBody": {
          "required": true,
          "description": "See the public developer guide and authenticated API documentation for workflow-specific fields.",
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        }
      }
    },
    "/v1/task/speech-to-text": {
      "post": {
        "operationId": "postspeech_to_text1",
        "summary": "POST Speech to Text",
        "description": "Transcribe audio with ElevenLabs Scribe v2 and export readable text, SRT subtitles or structured timing data.",
        "tags": [
          "Speech to Text"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Task or resource accepted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "422": {
            "description": "Invalid input or unsupported configuration"
          }
        },
        "requestBody": {
          "required": true,
          "description": "See the public developer guide and authenticated API documentation for workflow-specific fields.",
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        }
      }
    },
    "/v1/task/sound-effect": {
      "post": {
        "operationId": "postsound_effects1",
        "summary": "POST Sound Effects",
        "description": "Describe the sound you need and generate a custom effect with ElevenLabs Text to Sound v2.",
        "tags": [
          "Sound Effects"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Task or resource accepted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "422": {
            "description": "Invalid input or unsupported configuration"
          }
        },
        "requestBody": {
          "required": true,
          "description": "See the public developer guide and authenticated API documentation for workflow-specific fields.",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        }
      }
    },
    "/v1s/task/music-generation": {
      "post": {
        "operationId": "postmusic_generation1",
        "summary": "POST AI Music Generation",
        "description": "Turn a song idea or lyrics into a two-clip generation request with the active Suno v4.5-all workflow. A partial clip failure can occur.",
        "tags": [
          "AI Music Generation"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Task or resource accepted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "422": {
            "description": "Invalid input or unsupported configuration"
          }
        },
        "requestBody": {
          "required": true,
          "description": "See the public developer guide and authenticated API documentation for workflow-specific fields.",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        }
      }
    },
    "/v1i/models": {
      "get": {
        "operationId": "getimage_generation1",
        "summary": "GET AI Image Generation",
        "description": "Create and edit AI images with 20 active models from OpenAI, Google, ByteDance, Krea, Recraft, Kling, Black Forest Labs, Runway and Wan. Use up to 14 reference images and output up to 4K on supported models.",
        "tags": [
          "AI Image Generation"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "422": {
            "description": "Invalid input or unsupported configuration"
          }
        }
      }
    },
    "/v1i/task/price": {
      "post": {
        "operationId": "postimage_generation2",
        "summary": "POST AI Image Generation",
        "description": "Create and edit AI images with 20 active models from OpenAI, Google, ByteDance, Krea, Recraft, Kling, Black Forest Labs, Runway and Wan. Use up to 14 reference images and output up to 4K on supported models.",
        "tags": [
          "AI Image Generation"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Task or resource accepted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "422": {
            "description": "Invalid input or unsupported configuration"
          }
        },
        "requestBody": {
          "required": true,
          "description": "See the public developer guide and authenticated API documentation for workflow-specific fields.",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        }
      }
    },
    "/v1i/task/generate-image": {
      "post": {
        "operationId": "postimage_generation3",
        "summary": "POST AI Image Generation",
        "description": "Create and edit AI images with 20 active models from OpenAI, Google, ByteDance, Krea, Recraft, Kling, Black Forest Labs, Runway and Wan. Use up to 14 reference images and output up to 4K on supported models.",
        "tags": [
          "AI Image Generation"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Task or resource accepted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key"
          },
          "422": {
            "description": "Invalid input or unsupported configuration"
          }
        },
        "requestBody": {
          "required": true,
          "description": "See the public developer guide and authenticated API documentation for workflow-specific fields.",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true
              }
            }
          }
        }
      }
    },
    "/v1/task/{task_id}": {
      "get": {
        "operationId": "getTask",
        "summary": "Poll an asynchronous task",
        "tags": [
          "Common"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "task_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Current task state and output when available",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/v1/tasks": {
      "get": {
        "operationId": "listTasks",
        "summary": "List task history",
        "tags": [
          "Common"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 20
            }
          },
          {
            "name": "type",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated tasks",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/v1/credits": {
      "get": {
        "operationId": "getCredits",
        "summary": "Read the current credit balance",
        "tags": [
          "Common"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Credit balance",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    },
    "/v1/health-check": {
      "get": {
        "operationId": "healthCheck",
        "summary": "Check API availability",
        "tags": [
          "Common"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "API is available"
          }
        }
      }
    },
    "/v3/voices": {
      "get": {
        "operationId": "listVoices",
        "summary": "Search the unified voice library",
        "tags": [
          "Voice library"
        ],
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "parameters": [
          {
            "name": "provider",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "elevenlabs",
                "minimax",
                "clone",
                "edge",
                "vbee",
                "fishaudio"
              ]
            }
          },
          {
            "name": "search",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "page_size",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 30
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Matching voices and pagination",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "ApiKeyAuth": {
        "type": "apiKey",
        "in": "header",
        "name": "xi-api-key",
        "description": "Keep this key server-side. Never publish a real OpenSpeaker API key."
      }
    }
  }
}