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

# Quickstart: Web

Talk to your own voice agent in the browser, **in about a minute**. You write the prompt. We give you a page to talk to it on.

<Tabs>
  <Tab title="Portal">
    <Steps>
      <Step title="Create an agent">
        Open [upliftai.org/app/calling](https://upliftai.org/app/calling) and click **Create an Agent**.

        <Frame>
          <img src="https://mintcdn.com/upliftai/ui9MmnBHgCyjZxZD/images/voice-agents/quickstart/create-agent.png?fit=max&auto=format&n=ui9MmnBHgCyjZxZD&q=85&s=afcd03a204d42f4be02e183dbb81010b" alt="The calling home page with the Create an Agent button highlighted" width="994" data-path="images/voice-agents/quickstart/create-agent.png" />
        </Frame>
      </Step>

      <Step title="Pick your industry and use case">
        Choose the closest match on both screens. We tailor the agent's setup from here.

        <Columns cols={2}>
          <Frame>
            <img src="https://mintcdn.com/upliftai/ui9MmnBHgCyjZxZD/images/voice-agents/quickstart/pick-industry.png?fit=max&auto=format&n=ui9MmnBHgCyjZxZD&q=85&s=9981d317eb58404fe425fd8296cdfe2f" alt="The industry picker with Retail & E-commerce selected" width="580" data-path="images/voice-agents/quickstart/pick-industry.png" />
          </Frame>

          <Frame>
            <img src="https://mintcdn.com/upliftai/ui9MmnBHgCyjZxZD/images/voice-agents/quickstart/pick-use-case.png?fit=max&auto=format&n=ui9MmnBHgCyjZxZD&q=85&s=69d31e0afcc2842d2db37d4e748fe3ea" alt="The use case picker with Lead Qualification selected" width="580" data-path="images/voice-agents/quickstart/pick-use-case.png" />
          </Frame>
        </Columns>
      </Step>

      <Step title="Describe the call">
        Name the agent and write the **goal**: what the call is for, the facts to pitch, and what the agent must not do. Click **Check Goal Clarity**, then **Create agent**.

        <Frame>
          <img src="https://mintcdn.com/upliftai/ui9MmnBHgCyjZxZD/images/voice-agents/quickstart/describe-agent.png?fit=max&auto=format&n=ui9MmnBHgCyjZxZD&q=85&s=a561b767305195fe3ee92d8040c9aab1" alt="The agent form with a heater lead qualification goal, Check Goal Clarity and Create agent highlighted" width="480" data-path="images/voice-agents/quickstart/describe-agent.png" />
        </Frame>

        We write the Urdu prompt and pick the voice and models for you. It takes a minute or two.
      </Step>

      <Step title="Talk to it">
        Click **Test in Browser**, then **Start Call**, and allow the microphone. The agent opens as if it just called you, so play the customer, in **Urdu**.

        <Frame>
          <img src="https://mintcdn.com/upliftai/ui9MmnBHgCyjZxZD/images/voice-agents/quickstart/test-in-browser.png?fit=max&auto=format&n=ui9MmnBHgCyjZxZD&q=85&s=8cb54a2ba8beda17ce4df8365c963f2a" alt="The Test in Browser button and its Start Call popover" width="360" data-path="images/voice-agents/quickstart/test-in-browser.png" />
        </Frame>
      </Step>

      <Step title="Share it with a link (optional)">
        Open **Access**, turn on **Public access**, click **Done**, then **Save Changes**.

        <Frame>
          <img src="https://mintcdn.com/upliftai/ui9MmnBHgCyjZxZD/images/voice-agents/quickstart/public-access.gif?s=5ffc0a693ffab2e8944bde4a2b847cd0" alt="Opening Access, turning on Public access, clicking Done, then Save Changes" width="852" data-path="images/voice-agents/quickstart/public-access.gif" />
        </Frame>

        From the **⋯** menu, click **Publish Agent** first. Share links always run the published version. Then open the menu again, click **Share Agent**, and **Copy Link**.

        <Frame>
          <img src="https://mintcdn.com/upliftai/ui9MmnBHgCyjZxZD/images/voice-agents/quickstart/share-link.gif?s=f7631d88b6c5be99a55cbcc93bb34766" alt="Opening the more menu, clicking Share Agent, then Copy Link" width="852" data-path="images/voice-agents/quickstart/share-link.gif" />
        </Frame>

        <Warning>
          **Anyone with a public assistant's link can talk to it, and you're billed for every call.** Share it responsibly.
        </Warning>
      </Step>
    </Steps>
  </Tab>

  <Tab title="API">
    You need an API key. Make one on the [API keys page](https://upliftai.org/app/developer/api-keys), then:

    ```bash theme={null}
    export UPLIFT_API_KEY=your-key
    ```

    <Steps>
      <Step title="Create the assistant">
        [Create an assistant](/api-reference/assistants/create-an-assistant) with a prompt, a voice, and `public: true`:

        ```bash highlight={6,10} theme={null}
        curl -X POST https://api.upliftai.org/v1/realtime-assistants \
          -H "Authorization: Bearer $UPLIFT_API_KEY" \
          -H "Content-Type: application/json" \
          -d '{
            "name": "Sukoon Heaters lead qualification",
            "public": true,
            "config": {
              "agent": {
                "instructions": "آپ سکون ہیٹرز کی جانب سے کال کر رہے ہیں۔ ہمارے نئے الیکٹرک ہیٹر کے بارے میں بتائیں: قیمت 10,000 روپے، مکمل بجلی پر چلتا ہے اس لیے سردیوں میں گیس کی کمی سے فرق نہیں پڑتا، اور بیٹری بیک اپ کی وجہ سے لوڈ شیڈنگ میں بھی چلتا رہتا ہے۔ پوچھیں کہ کیا وہ ہمارے ہیٹنگ ایکسپرٹ سے بات کرنا چاہیں گے جو انہیں صحیح سائز بتائیں گے۔ سیل بند کرنے یا پیمنٹ لینے کی کوشش نہ کریں۔ صرف نستعلیق اردو میں جواب دیں۔",
                "initialGreeting": true
              },
              "stt": { "default": { "provider": "soniox", "model": "stt-rt-v4", "language": "ur" } },
              "tts": { "default": { "provider": "upliftai", "voiceId": "helpdesk-agent" } },
              "llm": { "default": { "provider": "google", "model": "gemini-2.5-flash" } }
            }
          }'
        ```

        What's in there:

        * **`instructions`** is the prompt. This one says: *you're calling for Sukoon Heaters about their new electric heater. It costs 10,000 rupees, runs fully on electricity so winter gas shortages don't matter, and a battery backup keeps it on through load shedding. Ask if they'd like to talk to a heating expert who'll work out the right size. Don't try to close the sale or take payment.* The last line asks for Nastaliq Urdu, which is what our voices read best. So speak **Urdu** to it.
        * **`initialGreeting: true`** makes the agent speak first, so you're not left saying hello to silence.
        * **`stt`, `llm` and `tts`** pick the models. Soniox hears Urdu, Gemini 2.5 Flash is the fastest we run, and `helpdesk-agent` is a warm customer-service voice. Swap in any voice from the [voices gallery](/orator_voices).
        * **`public: true`** lets anyone who has the assistant id start a conversation with it. That's what the next step needs.

        Copy `realtimeAssistantId` from the response.
      </Step>

      <Step title="Talk to it">
        Open this link with your id. The `name` is optional. It's the title the page shows:

        ```
        https://upliftai.org/share/<realtimeAssistantId>?name=Sukoon+Heaters
        ```

        Click the **call button**, allow the microphone, and play the customer. The agent opens as if it just called you.

        Change the prompt with an [update](/api-reference/assistants/update-an-assistant) and reload the page. An update replaces the whole config, so send all of it back, with `"public": true` too. Leave that out and the link stops working. Once you [publish](/voice-agents/assistants/versions) the assistant, the link runs the published version, so publish again after each update.

        <Warning>
          **Anyone with a public assistant's link can talk to it, and you're billed for every call.** Share it responsibly.
        </Warning>
      </Step>
    </Steps>
  </Tab>
</Tabs>

## If it doesn't connect

* **"This agent is private"** means `public` is off. Update the assistant with `"public": true`. If you published it before, publish again. Share links read the [published version](/voice-agents/assistants/versions).
* **"This agent can't take calls right now"** is usually out of credits, which stops the call before it starts. Every account starts with 10 free minutes — see [Pricing](/voice-agents/concepts/pricing).
* **"Microphone access is blocked"** means the browser said no. Allow it in the address bar and click **Try again**.

## Putting it on your own site

The hosted page is for trying things out. On your site, **your server mints a token** for each visitor with [Create a web session token](/api-reference/starting-a-conversation/create-a-web-session-token), and the browser joins the call with it. The API key never leaves your server, and the assistant can stay private with `public: false`.

## What next

* **Call a phone.** The same assistant can dial your number — see [Quickstart: Phone](/voice-agents/getting-started/quickstart-phone).
* **Write a better prompt.** [Voice prompting](/voice-agents/assistants/voice-prompting) covers what works on a call.
* **Skip the prompt writing.** [Build an assistant from a brief](/voice-agents/assistants/build-refine-simulate) and we write the Urdu prompt for you.
* **Understand the call.** [How it works](/voice-agents/concepts/how-it-works) follows one call from start to finish.
