# Create IndexTTS 2.5 Speech Task

> Audio Generation

Submit asynchronous speech using the ModelVerse task envelope. Only the documented parameters are supported. Undocumented fields may be ignored and must not be relied on; legacy emo_*, gain, and sample_rate settings have no effect, and save_voice=true is rejected. Use source=asset for temporary references, custom for saved voices, or preset for presets. Assets and custom voices must belong to the public model name in the request; when using a model alias, reference resources registered under that model name.

## Endpoint

`POST https://api.modelverse.cn/v1/tasks/submit`

## Request Body

## Responses

- **200** — Success
- **400** — Invalid request
- **401** — Authentication failed
- **403** — The operation is denied by account status, IP policy, or model access permissions.
- **404** — Resource not found
- **429** — Rate limited
- **500** — Service error

## OpenAPI Definition

```json
{
  "components": {
    "schemas": {
      "Error": {
        "additionalProperties": true,
        "properties": {
          "error": {
            "additionalProperties": true,
            "properties": {
              "code": {},
              "message": {
                "type": "string"
              },
              "param": {},
              "type": {
                "type": "string"
              }
            },
            "required": [
              "message",
              "type"
            ],
            "type": "object"
          }
        },
        "required": [
          "error"
        ],
        "type": "object"
      },
      "File": {
        "additionalProperties": true,
        "properties": {
          "bytes": {
            "type": "integer"
          },
          "created_at": {
            "type": "integer"
          },
          "expires_at": {
            "type": "integer"
          },
          "filename": {
            "type": "string"
          },
          "id": {
            "description": "Reference audio asset ID; use this value as asset_id in subsequent requests.",
            "type": "string"
          },
          "object": {
            "const": "file",
            "type": "string"
          },
          "purpose": {
            "const": "tts:speech_reference:IndexTTS-2.5",
            "description": "Marks reference audio for IndexTTS 2.5.",
            "type": "string"
          },
          "status": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "object",
          "bytes",
          "created_at",
          "filename",
          "purpose"
        ],
        "type": "object"
      },
      "FileList": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/File"
            },
            "type": "array"
          },
          "object": {
            "const": "list",
            "type": "string"
          }
        },
        "required": [
          "object",
          "data"
        ],
        "type": "object"
      },
      "FileUpload": {
        "additionalProperties": false,
        "properties": {
          "duration_ms": {
            "maximum": 30000,
            "minimum": 500,
            "type": "integer"
          },
          "file": {
            "description": "WAV/MP3/FLAC/OGG/M4A; at most 15 MiB (15728640 bytes).",
            "format": "binary",
            "type": "string"
          },
          "purpose": {
            "const": "tts:speech_reference:IndexTTS-2.5",
            "description": "Marks reference audio for IndexTTS 2.5.",
            "type": "string"
          }
        },
        "required": [
          "purpose",
          "duration_ms",
          "file"
        ],
        "type": "object"
      },
      "Pronunciation": {
        "additionalProperties": false,
        "properties": {
          "kind": {
            "enum": [
              "pinyin",
              "alias",
              "cmu",
              "kana"
            ],
            "type": "string"
          },
          "value": {
            "maxLength": 512,
            "minLength": 1,
            "type": "string"
          },
          "word": {
            "maxLength": 64,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "word",
          "kind",
          "value"
        ],
        "type": "object"
      },
      "TaskRequest": {
        "additionalProperties": false,
        "properties": {
          "input": {
            "additionalProperties": false,
            "properties": {
              "text": {
                "description": "Text must contain at least one Unicode letter or decimal digit.",
                "maxLength": 2000,
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "text"
            ],
            "type": "object"
          },
          "model": {
            "const": "IndexTTS-2.5",
            "type": "string"
          },
          "parameters": {
            "additionalProperties": false,
            "properties": {
              "auto_emotion": {
                "default": true,
                "type": "boolean"
              },
              "emotion_description": {
                "maxLength": 200,
                "type": "string"
              },
              "emotion_strength": {
                "default": 0.8,
                "maximum": 1,
                "minimum": 0,
                "type": "number"
              },
              "emotion_vector": {
                "description": "Sum must be greater than 0 and at most 0.8. Requires auto_emotion=false and no emotion description. Order: happy, angry, sad, afraid, disgusted, melancholy, surprised, calm.",
                "items": {
                  "maximum": 0.8,
                  "minimum": 0,
                  "type": "number"
                },
                "maxItems": 8,
                "minItems": 8,
                "type": "array"
              },
              "emotion_vector_mode": {
                "description": "single requires exactly one nonzero element. When omitted, the mode is inferred from the vector.",
                "enum": [
                  "single",
                  "mixed"
                ],
                "type": "string"
              },
              "language": {
                "default": "ZH",
                "enum": [
                  "ZH",
                  "EN",
                  "JA",
                  "ES",
                  "AR"
                ],
                "type": "string"
              },
              "pronunciations": {
                "items": {
                  "$ref": "#/components/schemas/Pronunciation"
                },
                "maxItems": 100,
                "type": "array"
              },
              "speed": {
                "default": 1,
                "description": "Speed ranges from 0.5 to 2. Omit or set to 0 to use 1.",
                "anyOf": [
                  {
                    "const": 0
                  },
                  {
                    "maximum": 2,
                    "minimum": 0.5
                  }
                ],
                "type": "number"
              },
              "voice": {
                "$ref": "#/components/schemas/VoiceReference"
              }
            },
            "required": [
              "voice"
            ],
            "type": "object"
          }
        },
        "required": [
          "model",
          "input",
          "parameters"
        ],
        "type": "object"
      },
      "TaskStatus": {
        "additionalProperties": true,
        "properties": {
          "output": {
            "additionalProperties": true,
            "properties": {
              "error_message": {
                "type": "string"
              },
              "finish_time": {
                "type": "integer"
              },
              "submit_time": {
                "type": "integer"
              },
              "task_id": {
                "type": "string"
              },
              "task_status": {
                "enum": [
                  "Pending",
                  "Running",
                  "Success",
                  "Failure",
                  "Cancelled"
                ],
                "type": "string"
              },
              "urls": {
                "items": {
                  "format": "uri",
                  "type": "string"
                },
                "type": "array"
              }
            },
            "required": [
              "task_id",
              "task_status"
            ],
            "type": "object"
          },
          "request_id": {
            "type": "string"
          },
          "usage": {
            "additionalProperties": true,
            "properties": {
              "prompt_tokens": {
                "description": "After success, counts all Unicode code points in input.text, including punctuation, whitespace, line breaks, and symbols. Zero before success.",
                "type": "integer"
              },
              "completion_tokens": {
                "const": 0,
                "type": "integer"
              },
              "total_tokens": {
                "description": "Equal to prompt_tokens.",
                "type": "integer"
              }
            },
            "required": [
              "prompt_tokens",
              "completion_tokens",
              "total_tokens"
            ],
            "type": "object"
          }
        },
        "required": [
          "output"
        ],
        "type": "object"
      },
      "TaskCancelled": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "deleted": {
            "const": true,
            "type": "boolean"
          },
          "object": {
            "const": "video.deleted",
            "type": "string"
          }
        },
        "required": [
          "id",
          "deleted",
          "object"
        ],
        "type": "object"
      },
      "TaskSubmitted": {
        "additionalProperties": true,
        "properties": {
          "output": {
            "additionalProperties": false,
            "properties": {
              "task_id": {
                "type": "string"
              }
            },
            "required": [
              "task_id"
            ],
            "type": "object"
          },
          "request_id": {
            "type": "string"
          }
        },
        "required": [
          "output"
        ],
        "type": "object"
      },
      "Voice": {
        "additionalProperties": false,
        "properties": {
          "audio_url": {
            "format": "uri",
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "kind": {
            "enum": [
              "preset",
              "custom"
            ],
            "type": "string"
          },
          "language": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "kind"
        ],
        "type": "object"
      },
      "VoiceCreate": {
        "additionalProperties": false,
        "properties": {
          "asset_id": {
            "minLength": 1,
            "type": "string"
          },
          "model": {
            "const": "IndexTTS-2.5",
            "type": "string"
          },
          "name": {
            "maxLength": 64,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "model",
          "name",
          "asset_id"
        ],
        "type": "object"
      },
      "VoiceCreated": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "description": "New voice_id; old uspeech: IDs are not accepted.",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "VoiceDelete": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string"
          },
          "model": {
            "const": "IndexTTS-2.5",
            "type": "string"
          }
        },
        "required": [
          "model",
          "id"
        ],
        "type": "object"
      },
      "VoiceDeleted": {
        "additionalProperties": false,
        "properties": {
          "success": {
            "const": true,
            "type": "boolean"
          }
        },
        "required": [
          "success"
        ],
        "type": "object"
      },
      "VoiceList": {
        "additionalProperties": false,
        "properties": {
          "list": {
            "items": {
              "$ref": "#/components/schemas/Voice"
            },
            "maxItems": 1000,
            "type": "array"
          }
        },
        "required": [
          "list"
        ],
        "type": "object"
      },
      "VoiceReference": {
        "oneOf": [
          {
            "additionalProperties": false,
            "properties": {
              "source": {
                "enum": [
                  "preset",
                  "custom"
                ],
                "type": "string"
              },
              "voice_id": {
                "minLength": 1,
                "type": "string"
              }
            },
            "required": [
              "source",
              "voice_id"
            ],
            "type": "object",
            "title": "object"
          },
          {
            "additionalProperties": false,
            "properties": {
              "asset_id": {
                "minLength": 1,
                "type": "string"
              },
              "source": {
                "const": "asset",
                "type": "string"
              }
            },
            "required": [
              "source",
              "asset_id"
            ],
            "type": "object",
            "title": "object"
          }
        ]
      }
    },
    "securitySchemes": {
      "bearerAuth": {
        "bearerFormat": "ModelVerse API Key",
        "scheme": "bearer",
        "type": "http"
      }
    }
  },
  "info": {
    "description": "IndexTTS 2.5 is an independent asynchronous speech model using ModelVerse API keys and the existing task, Files, and voice paths. To migrate, back up original speaker audio, upload references, create new voices, and record the old-to-new ID mapping. Changing model alone does not migrate old uspeech: IDs, preset names, or emotion audio. Successful generation is billed by all Unicode code points in input.text, including punctuation, whitespace, line breaks, and symbols, using the same counting rule as IndexTTS 2. Emotion descriptions, pronunciation rules, and other generation parameters are excluded from the text count. ModelVerse pricing applies. Submitting another request creates a new task or voice. After a timeout, check any task ID already returned before submitting again. Download results promptly; retention follows the current service policy.",
    "title": "IndexTTS 2.5 Asynchronous Speech API",
    "version": "1.0.0"
  },
  "openapi": "3.1.0",
  "paths": {
    "/v1/audio/voice/delete": {
      "post": {
        "description": "Deletes a voice after validating company and public model ownership, then removes its binding. Source assets are retained. Voices referenced by active tasks may not be deletable.",
        "operationId": "deleteIndexTTS25Voice",
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "id": "<VOICE_ID>",
                "model": "IndexTTS-2.5"
              },
              "schema": {
                "$ref": "#/components/schemas/VoiceDelete"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VoiceDeleted"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Authentication failed"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The operation is denied by account status, IP policy, or model access permissions."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Resource not found"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limited"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Service error"
          }
        },
        "summary": "Delete IndexTTS 2.5 Voice",
        "tags": [
          "IndexTTS 2.5"
        ]
      }
    },
    "/v1/audio/voice/list": {
      "get": {
        "description": "custom returns at most 1000 voices registered to the current company and requested public model. preset returns the preset voice catalog for that model. Response id values are used as voice_id in generation.",
        "operationId": "listIndexTTS25Voices",
        "parameters": [
          {
            "in": "query",
            "name": "model",
            "required": true,
            "schema": {
              "const": "IndexTTS-2.5",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "kind",
            "required": false,
            "schema": {
              "default": "custom",
              "enum": [
                "preset",
                "custom"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VoiceList"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Authentication failed"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The operation is denied by account status, IP policy, or model access permissions."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Resource not found"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limited"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Service error"
          }
        },
        "summary": "List IndexTTS 2.5 Voices",
        "tags": [
          "IndexTTS 2.5"
        ]
      }
    },
    "/v1/audio/voice/upload": {
      "post": {
        "description": "First obtain asset_id through /v1/files, then create a voice from it. The source asset must belong to the current company, current project, and requested public model. Saved voices are shared within the same company and public model.",
        "operationId": "createIndexTTS25Voice",
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "asset_id": "<ASSET_ID>",
                "model": "IndexTTS-2.5",
                "name": "Support voice"
              },
              "schema": {
                "$ref": "#/components/schemas/VoiceCreate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VoiceCreated"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Authentication failed"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The operation is denied by account status, IP policy, or model access permissions."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Resource not found"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limited"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Service error"
          }
        },
        "summary": "Create IndexTTS 2.5 Voice from Asset",
        "tags": [
          "IndexTTS 2.5"
        ]
      }
    },
    "/v1/files": {
      "get": {
        "description": "Returns ModelVerse-registered asset metadata for the current company and project; purpose filters by public model. The current response does not provide a usable next-page cursor, and returned asset IDs cannot be used as after values. Save each uploaded id in the migration manifest and query individual records by id for verification.",
        "operationId": "listIndexTTS25References",
        "parameters": [
          {
            "in": "query",
            "name": "purpose",
            "required": true,
            "schema": {
              "const": "tts:speech_reference:IndexTTS-2.5",
              "description": "Marks reference audio for IndexTTS 2.5.",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "after",
            "deprecated": true,
            "description": "Not recommended for client use. The current response does not expose a usable next-page cursor; save uploaded id values and query each record individually.",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FileList"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Authentication failed"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The operation is denied by account status, IP policy, or model access permissions."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Resource not found"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limited"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Service error"
          }
        },
        "summary": "List IndexTTS 2.5 References",
        "tags": [
          "IndexTTS 2.5"
        ]
      },
      "post": {
        "description": "One request completes audio upload and asset registration. The returned id is the asset_id used in subsequent requests. Assets are scoped to company, project, and public model name. File IDs registered for other Files purposes or public models cannot be used.",
        "operationId": "uploadIndexTTS25Reference",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/FileUpload"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/File"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Authentication failed"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The operation is denied by account status, IP policy, or model access permissions."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Resource not found"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limited"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Service error"
          }
        },
        "summary": "Upload IndexTTS 2.5 Reference",
        "tags": [
          "IndexTTS 2.5"
        ]
      }
    },
    "/v1/files/{file_id}": {
      "get": {
        "description": "Returns reference audio asset metadata. Asset deletion and content download are currently unsupported for this purpose.",
        "operationId": "getIndexTTS25Reference",
        "parameters": [
          {
            "in": "path",
            "name": "file_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/File"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Authentication failed"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The operation is denied by account status, IP policy, or model access permissions."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Resource not found"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limited"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Service error"
          }
        },
        "summary": "Get IndexTTS 2.5 Reference",
        "tags": [
          "IndexTTS 2.5"
        ]
      }
    },
    "/v1/tasks/cancel": {
      "get": {
        "description": "Uses the existing ModelVerse cancellation interface. Only tasks that have not started generating can be cancelled; repeating cancellation for an already cancelled task succeeds. If generation has started or ended, the current endpoint returns HTTP 500 for cancellation rejection. Continue querying the task; successful generation is billed normally. A Pending query result does not guarantee cancellation because the task state is checked when the cancellation request is processed. In a successful response, deleted=true indicates cancellation, and object=video.deleted is a legacy compatibility value; it does not mean the task or source asset was deleted.",
        "operationId": "cancelIndexTTS25Task",
        "parameters": [
          {
            "in": "query",
            "name": "task_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "id": "<TASK_ID>",
                  "deleted": true,
                  "object": "video.deleted"
                },
                "schema": {
                  "$ref": "#/components/schemas/TaskCancelled"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Authentication failed"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The operation is denied by account status, IP policy, or model access permissions."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limited"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Service error"
          }
        },
        "summary": "Cancel IndexTTS 2.5 Task",
        "tags": [
          "IndexTTS 2.5"
        ]
      }
    },
    "/v1/tasks/status": {
      "get": {
        "description": "Poll about every 3 seconds. After success, output.urls contains ordinary URL strings that can be used directly to download WAV audio. Tasks are scoped to company and project. Background processing and billing do not depend on continued client polling. The successful response example below corresponds to input text “你好，测试123。”, which contains 9 Unicode characters including punctuation. The current endpoint returns HTTP 400 if the task ID does not exist or belongs to another company or project.",
        "operationId": "getIndexTTS25TaskStatus",
        "parameters": [
          {
            "in": "query",
            "name": "task_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "output": {
                    "task_id": "<TASK_ID>",
                    "task_status": "Success",
                    "urls": [
                      "https://example.com/audio/result.wav"
                    ],
                    "submit_time": 1700000000,
                    "finish_time": 1700000003
                  },
                  "usage": {
                    "prompt_tokens": 9,
                    "completion_tokens": 0,
                    "total_tokens": 9
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/TaskStatus"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Authentication failed"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The operation is denied by account status, IP policy, or model access permissions."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limited"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Service error"
          }
        },
        "summary": "Get IndexTTS 2.5 Task Status",
        "tags": [
          "IndexTTS 2.5"
        ]
      }
    },
    "/v1/tasks/submit": {
      "post": {
        "description": "Submit asynchronous speech using the ModelVerse task envelope. Only the documented parameters are supported. Undocumented fields may be ignored and must not be relied on; legacy emo_*, gain, and sample_rate settings have no effect, and save_voice=true is rejected. Use source=asset for temporary references, custom for saved voices, or preset for presets. Assets and custom voices must belong to the public model name in the request; when using a model alias, reference resources registered under that model name.",
        "operationId": "submitIndexTTS25Task",
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "input": {
                  "text": "Hello, welcome to speech synthesis."
                },
                "model": "IndexTTS-2.5",
                "parameters": {
                  "auto_emotion": true,
                  "language": "EN",
                  "speed": 1,
                  "voice": {
                    "source": "custom",
                    "voice_id": "<VOICE_ID>"
                  }
                }
              },
              "schema": {
                "$ref": "#/components/schemas/TaskRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaskSubmitted"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid request"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Authentication failed"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The operation is denied by account status, IP policy, or model access permissions."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Resource not found"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limited"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Service error"
          }
        },
        "summary": "Create IndexTTS 2.5 Speech Task",
        "tags": [
          "IndexTTS 2.5"
        ]
      }
    }
  },
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "servers": [
    {
      "url": "https://api.modelverse.cn"
    }
  ],
  "tags": [
    {
      "name": "IndexTTS 2.5"
    }
  ],
  "x-language": "en-US"
}
```
