---
title: "Create Speech Task"
method: POST
path: "/v1/tts/vega"
tags: ["Voice AI Beta — Vega"]
---

# Create Speech Task

`POST /v1/tts/vega`

Create a Text-to-Speech task with Vega — the cheapest provider (`⌈characters / 10⌉` credits, refunded automatically on failure). `voice` must come from the static catalog (`GET /v1/tts/vega/voices`); Vega has no cloning. Request body is capped at 32 MiB.

### Example
```bash
curl -X POST https://genaipro.io/api/v1/tts/vega \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"content": "Hello from GenAIPro", "voice": "aurora"}'
```
> **Rate limit:** 30 requests/minute

## Request body

- object
  - `title` string — Optional title (derived from content when empty)
  - `content` string, required — Text to convert to speech
  - `voice` string, required — Voice id from the static catalog (`GET /v1/tts/vega/voices`)
  - `callback_url` string — Optional webhook — receives the task object when the task completes or fails

## Response `201`

Task created — credits already deducted (`cost`)

- TtsTaskCreatedWithCost — Create-task acknowledgement
  - `id` string — Task ID (poll via the provider's `GET /{id}`)
  - `status` 'pending' | 'cloning' | 'queued' | 'processing' | 'merging' | 'process_merging' | 'completed' | 'failed' — Voice AI Beta task lifecycle: `pending` → `cloning` (clone flow only) → `queued` → `processing` → `merging` → `process_merging` → `completed` | `failed`.
  - `provider` string
  - `total_length` integer — Billable characters (encoder units ≈ UTF-8 bytes)
  - `cost` integer — Credits deducted for this task

## Other responses

- `400` — Invalid request (voice, credit, callback)
- `429` — Rate limit exceeded

---

[API](https://skmtc.dev/genaipro/apis/genaipro-api.md) · [All operations](https://skmtc.dev/genaipro/apis/genaipro-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/genaipro/genaipro-api/revisions/91f814eaecbd/schema)
