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

# Choose your path

> Pick the first PyAI surface that matches the job: Agents through UI or API, speech APIs, or a speech layer inside LiveKit or Pipecat.

Start with the job you have today. You can add the other paths later. Every path uses the same key and the same models.

<Tip>
  **90 seconds to a transcript.** Mint a sandbox key, then transcribe a file:

  ```bash theme={null}
  export PYAI_API_KEY="$(
    curl -sS -X POST https://api.pyai.com/v1/sandbox/keys \
      | python -c 'import json,sys; print(json.load(sys.stdin)["api_key"])'
  )"

  curl https://api.pyai.com/v1/audio/transcriptions \
    -H "Authorization: Bearer $PYAI_API_KEY" \
    -F file=@audio.wav -F model=pyai-hear
  ```

  Expected: `{ "text": "..." }`. That path uses scopes the sandbox mint already
  has. Clone does not; check `GET /v1/me` first. Full copy-paste paths:
  [Quickstart](/quickstart).
</Tip>

<CardGroup cols={3}>
  <Card title="Use speech APIs" href="/quickstart">
    Hear, Speak, Clone, Cast or Dub. Mint a sandbox key and make a first call.
  </Card>

  <Card title="Build a voice agent" href="/agents/getting-started">
    Build through the console or API, test with Omni, then connect your website, phone or application.
  </Card>

  <Card title="Keep your framework" href="/guides/livekit-agents">
    LiveKit or Pipecat owns the loop. PyAI is the speech layer: `pyai.STT` and `pyai.TTS`.
  </Card>
</CardGroup>

## API primitives

Use this when you already own transport, the LLM, or turn policy.

1. [Mint a sandbox key](/quickstart) (`POST /v1/sandbox/keys`).
2. Choose [Speech To Text (Hear)](/guides/hear-overview) for transcription,
   [Text To Speech (Speak)](/guides/speak-overview) for synthesis, or
   [Clone](/guides/voice-cloning) for a custom voice.
3. Open Omni yourself with the [browser voice agent](/guides/browser-voice-agent) guide when you want the full loop in code.

[Authentication](/authentication) covers bearer keys, scopes, and the sandbox
mint. [SDKs](/guides/sdks) covers `pip install pyai-sdk` and
`npm install @pyai/sdk`. [Pricing](https://pyai.com/pricing) lists current
rates and included usage.
Before launch, complete the [production-readiness checklist](/production-readiness).

## Dub an existing recording

Use [Dub](/guides/dub-overview) to turn an English recording into Hindi audio.
Submit the source, poll the job, then download its WAV output. Hindi is the
currently enabled target; this is an asynchronous workflow.

## Agents through UI or API

Use Agents for a complete voice conversation, powered by the Omni realtime runtime. Choose the builder or API to manage the same saved profile.

1. [Build an Agent](/agents/getting-started) in the console or [create one through the API](/guides/create-agents-api).
2. Add a [hosted knowledge base](/guides/knowledge-bases) so answers come from your pages and files. Paste a site URL and PyAI crawls the public pages.
3. Publish the [website Call Now button](/guides/website-voice-widget), or assign a number.

Creating the same profile from code is [Create agents via API](/guides/create-agents-api).

## Framework adapters

Use this when LiveKit Agents or Pipecat should keep the session, tools, and LLM.

* [LiveKit Agents](/guides/livekit-agents)
* [Pipecat](/guides/pipecat)
* [Use PyAI in Cursor](/guides/use-pyai-in-cursor)

These adapters use Hear and Speak. They do not create or select an Omni agent.

## Next

<CardGroup cols={2}>
  <Card title="Get an instant key" href="/quickstart#step-1-get-a-key">
    Mint a sandbox key without signup, email, card, or billing.
  </Card>

  <Card title="SDKs" href="/guides/sdks">
    pip install pyai-sdk, npm install @pyai/sdk, plus LiveKit and Pipecat.
  </Card>

  <Card title="Omni overview" href="/guides/omni-overview">
    One WebSocket for speech, reasoning, tools, and knowledge.
  </Card>

  <Card title="Errors and limits" href="/errors-and-limits">
    First-call failures, stable codes, and when not to retry.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.