> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vmeg.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Products overview

> Tasks, sync vs async, and unified task APIs

Every Open API **product** creates a **task** with a `taskId`. You can list, inspect, and delete tasks through shared task endpoints regardless of product type.

## Separate from website tasks

Open API tasks are not the same as jobs you start on [vmeg.ai](https://www.vmeg.ai/home) — same rule as [API assets](/guides/assets/overview).

* Use `/openapi/v1/tasks/**` and webhooks to track API work only.
* Website task history does not list API jobs, and website jobs cannot be queried through the Open API.

<Info>
  Your API Key scopes **Open API tasks and assets** only. Work done on the website uses a separate store.
</Info>

## Task APIs

| Action | Endpoint                        |
| ------ | ------------------------------- |
| List   | `GET /openapi/v1/tasks/list`    |
| Detail | `GET /openapi/v1/tasks/detail`  |
| Delete | `POST /openapi/v1/tasks/delete` |

Request and response fields: [List tasks](/api-reference/tasks/list-tasks), [Get task detail](/api-reference/tasks/get-task-detail), and [Delete task](/api-reference/tasks/delete-task).

Task list, detail, and delete, plus asset list and cloned-voice queries, are scoped to your **API Key**. Open API requests do not include a separate project identifier.

## Sync vs async

| Product                                                 | Sync create                   | Async create                              | How you get results                                                       |
| ------------------------------------------------------- | ----------------------------- | ----------------------------------------- | ------------------------------------------------------------------------- |
| [Media translation](/guides/products/media-translation) | —                             | `POST .../media-translation/create-async` | Async only: Webhook                                                       |
| [Text to speech](/guides/products/text-to-speech)       | `POST .../tts/create`         | `POST .../tts/create-async`               | Sync: `data.results` in HTTP response. Async: [Webhook](/guides/webhooks) |
| [Voice clone](/guides/products/voice-clone)             | `POST .../clone-voice/create` | `POST .../clone-voice/create-async`       | Sync: `voiceId` in response. Async: Webhook                               |
| [Text translation](/guides/products/text-translation)   | `POST .../translate/create`   | `POST .../translate/create-async`         | Sync: `data.items` in response. Async: Webhook                            |

### Async integration checklist

1. [API Key](/guides/authentication)
2. [Idempotency](/guides/idempotency) — `X-Idempotency-Key` on every `POST`
3. [Webhooks](/guides/webhooks) — webhook URL on API Configuration; copy the generated secret; return 2xx quickly
4. Submit `create-async` → save `taskId`
5. Handle the [Webhook request body](/guides/webhook-request) — check `event` (`openapi-tts`, `openapi-translate`, etc.) then parse `data`

### Sync integration

Call `create` (non-async) with `X-Idempotency-Key` and read results from the HTTP `data` payload.

## Task types

`taskType` uses short codes:

| `taskType`        | Product           |
| ----------------- | ----------------- |
| `vt` / `at`       | Media translation |
| `tts`             | Text to speech    |
| `cloneVoice`      | Voice clone       |
| `textTranslation` | Text translation  |

## Product guides

<CardGroup cols={2}>
  <Card title="Media translation" icon="film" href="/guides/products/media-translation">
    Video/audio localization
  </Card>

  <Card title="Text to speech" icon="volume-high" href="/guides/products/text-to-speech">
    Speech synthesis
  </Card>

  <Card title="Voice clone" icon="microphone" href="/guides/products/voice-clone">
    Clone from sample audio
  </Card>

  <Card title="Text translation" icon="language" href="/guides/products/text-translation">
    Segment translation
  </Card>
</CardGroup>
