---
title: "Async TTS"
method: POST
path: "/api/v1/tts"
tags: ["Text-to-Speech"]
---

# Async TTS

`POST /api/v1/tts`

Returns a TTS job. Check the job status with [Async Retrieve Job](async-retrieve-job) `/api/v1/tts/{jobId}` API using the returned id.<br /><br />Use callbackUrls get a callback when a TTS job completed.

## Request body

- TextToSpeechRequest
  - `text` string, required — Text to be converted to audio
  - `speaker` string, required — Speaker ID. You can retrieve speaker ID with [Retrieve Speakers](retrieve-speakers) `/api/v1/speakers` API.
  - `speakerStyle` string — Speaker style id for the chosen speaker. You can retrieve speaker styles with /api/v1/speakers API. Only some of our speakers have multiple speaker styles.
  - `speed` number — Speed of the audio to be generated
  - `callbackUrls` string[] — Callback urls for any async job. Max size of callback urls is 4. <br /><br />The callback will be sent only once. It will be a POST request with the same data format as Async Retrieve Job `/api/v1/tts/{jobId}` API.<br /> Your endpoints should return 2xx status code and should not take more than 10 seconds to respond. Otherwise, the callback will be considered as failed.

## Response `201`

Job entity that can be later used to fetch the status of the TTS job.

- GetJobResponse
  - `id` string, mongoid, required — Id of the job returned. This id will be later used to check the progress of the TTS job.
  - `type` 'tts' | 'simple_tts' | 'dubbing' | 'localization' | 'subtitles', required — Type of the current job. Currently only TTS is supported.
  - `status` 'in_progress' | 'done', required
  - `progress` number, required
  - `team` string, required
  - `workspace` string
  - `project` string
  - `error` JobErrorResponse
    - `code` string, required
    - `message` string, required
  - `createdAt` string, date-time, required — TTS requested time.
  - `estimatedTimeAt` string, date-time — Job estimated timestamp in milliseconds
  - `estimatedTimeMs` number — Job estimated time in milliseconds
  - `callbackUrls` string[], required — Callback urls for any async job. This can be empty array.

## Other responses

- `400` — API key expired
- `401` — API key invalid
- `402` — No active subscription
- `422` — API key not found

---

[API](https://skmtc.net/lovo/apis/genny-api.md) · [All operations](https://skmtc.net/lovo/apis/genny-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/lovo/genny-api/versions/5b03ec09cf3e/schema)
