> ## 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: API primitives, a console Agent, 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.

<CardGroup cols={3}>
  <Card title="Build with the API" href="/quickstart">
    Hear, Speak, Cast, or a raw Omni socket. Mint a sandbox key and make a first call.
  </Card>

  <Card title="Launch an Agent" href="/agents/getting-started">
    Console workflow. Describe the job, test a call, put a Call Now button on your site or add a number.
  </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. Transcribe with [Hear](/guides/streaming-stt) or synthesize with Speak.
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. [Pricing](/pricing-and-metering) is the rate card.

## Console Agent

Use this when you want a voice agent on a website or phone number without standing up a token broker.

1. [Launch an Agent](/agents/getting-started) in the console.
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 a key" href="https://console.pyai.com/?signup=1&utm_source=docs.pyai.com&utm_medium=docs">
    Console signup. Sandbox keys never bill.
  </Card>

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