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

# Quickstart

> Five minutes to captured, gradeable traffic — through whichever integration path fits your stack.

This page gets you from an account to the state where **your real traffic is
flowing into Omnia and you can grade it**, because captured traffic is what
every measurement downstream (judges, comparisons, training) runs on. There
are four integration paths; you need exactly one.

<Steps>
  <Step title="Create an account and workspace">
    Sign up at [platform.omnia-voice.com](https://platform.omnia-voice.com/sign-up).
    Your first workspace is created during onboarding; everything (keys, billing,
    usage) is scoped to it.
  </Step>

  <Step title="Create an API key">
    In the dashboard, go to **API keys → Create key**. Copy it immediately; it's
    shown once and starts with `sk_sovereign_`. See
    [Authentication](/authentication) for details.
  </Step>

  <Step title="Choose an integration path">
    Choose by what your codebase already does; full detail in
    [Integration paths](/capture/overview):

    **Gateway** (your app calls an OpenAI-compatible API and can use
    Omnia's catalog): point your existing client at Omnia's base URL.

    <CodeGroup>
      ```python Python theme={null}
      from openai import OpenAI

      client = OpenAI(
          base_url="https://gateway.omnia-voice.com/v1",
          api_key="OMNIA_API_KEY",
      )

      resp = client.chat.completions.create(
          model="Qwen/Qwen3-32B",
          messages=[{"role": "user", "content": "Say hello in one line."}],
      )

      print(resp.choices[0].message.content)
      ```

      ```javascript JavaScript theme={null}
      import OpenAI from "openai";

      const client = new OpenAI({
        baseURL: "https://gateway.omnia-voice.com/v1",
        apiKey: process.env.OMNIA_API_KEY,
      });

      const resp = await client.chat.completions.create({
        model: "Qwen/Qwen3-32B",
        messages: [{ role: "user", content: "Say hello in one line." }],
      });

      console.log(resp.choices[0].message.content);
      ```

      ```bash cURL theme={null}
      curl https://gateway.omnia-voice.com/v1/chat/completions \
        -H "Authorization: Bearer $OMNIA_API_KEY" \
        -H "Content-Type: application/json" \
        -d '{
          "model": "Qwen/Qwen3-32B",
          "messages": [
            { "role": "user", "content": "Say hello in one line." }
          ]
        }'
      ```
    </CodeGroup>

    Gateway inference is prepaid: top up your wallet under **Usage** in the
    dashboard (or enable [auto-reload](/billing/auto-reload)) before routing
    traffic. Every request is metered per token and deducted from the balance.

    **Your provider key (BYOK)** (you run GPT, Claude, or Gemini and intend to
    keep it): same base-URL swap, but you paste your provider's key into
    **Settings → Workspace → Provider keys** and prefix the model
    (`anthropic/claude-sonnet-4-5`). Your provider keeps billing you; Omnia
    bills nothing for those tokens. See
    [Bring your own key](/reference/bring-your-own-key).

    **OpenTelemetry** (your app already emits OTel traces): no packages,
    no code, just three environment variables.

    ```bash theme={null}
    OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://gateway.omnia-voice.com/v1/traces
    OTEL_EXPORTER_OTLP_TRACES_HEADERS="Authorization=Bearer ${OMNIA_API_KEY}"
    OTEL_RESOURCE_ATTRIBUTES=omnia.tag=my-agent
    ```

    See [OTLP trace ingest](/reference/otlp-ingest).

    **Tracing SDK** (no OTel yet, and your inference stays where it
    is): one package, one line, standard OpenTelemetry underneath.

    ```bash theme={null}
    npm install @omnia-voice/tracing        # Node
    pip install omnia-tracing         # Python
    ```

    See the [SDKs](/sdks/overview) for setup per language.

    Faster still: paste one canonical prompt into Claude Code, Cursor, or any
    coding agent with repo access, and it picks the integration path, wires
    it, and verifies itself; see
    [Set up with your coding agent](/guides/setup-with-your-coding-agent).
  </Step>

  <Step title="Turn on request logging">
    Grading needs content. In **Settings → Workspace → Request logging**
    (owner/admin), turn on the toggle and pick a retention window. It's
    [off by default](/reference/request-logging) because Omnia's standing
    posture is content-free; capturing prompts and responses is your explicit
    choice.
  </Step>

  <Step title="Verify your setup">
    ```bash theme={null}
    OMNIA_API_KEY=sk_... sh -c "$(curl -fsSL https://platform.omnia-voice.com/setup.sh)"
    ```

    The check proves the key works, confirms traffic is landing, and names
    your one next step. It installs nothing and never stores your key.
  </Step>
</Steps>

<Check>
  Your traffic is now captured and gradeable. Open **Review** in the dashboard
  and grade a few real exchanges: `P` pass, `F` fail with a critique. Those
  grades are the ground truth every judge is measured against.
</Check>

## What to explore next

<CardGroup cols={2}>
  <Card title="How Omnia works" icon="arrows-rotate" href="/concepts/how-omnia-works">
    Why capture is step one: measurement, improvement, and ownership all
    build on it.
  </Card>

  <Card title="Grade your traffic" icon="scale-balanced" href="/judges/grading">
    \~100 grades define your quality bar and calibrate your first judge.
  </Card>

  <Card title="Run a comparison" icon="flask" href="/reference/evals">
    Test whether a cheaper model holds up on your own traffic.
  </Card>

  <Card title="Browse models" icon="cubes" href="/concepts/models">
    See every available model and its pricing.
  </Card>
</CardGroup>
