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

# Hello world: managed agent

> Create a Wassist-hosted agent and chat with it on the sandbox number. No code, no server.

With a managed agent, Wassist runs the whole loop for you: it receives the WhatsApp message, runs your agent, and sends the reply. You write a prompt.

By the end of this page you'll send "hi" to the sandbox number and get **"Hello, world! 👋"** back from your own agent.

<Warning>
  Use your **personal organization** while testing on the sandbox (switch in **Settings → Organization**). Sandbox chats are filed under your personal organization, so an agent connected while a team organization is active won't receive your messages.
</Warning>

## 1. Create the agent

<Tabs>
  <Tab title="Dashboard">
    <Steps>
      <Step title="Create a new agent">
        Sign in at [wassist.app](https://wassist.app/agents), open **Agents** and click **New Agent**. You land on the new agent's page.
      </Step>

      <Step title="Give it a hello world prompt">
        Rename it to `Hello World`, then paste this into the **Instructions** box:

        ```text theme={null}
        You are Hello World, a demo agent.
        Whatever the user sends, reply with "Hello, world! 👋" on the first line,
        then answer their message in one short sentence.
        ```
      </Step>

      <Step title="Save">
        Click **Save** in the bar at the bottom of the page.
      </Step>
    </Steps>
  </Tab>

  <Tab title="SDK">
    Create an API key under **Settings → Developers → API keys**, then:

    ```bash theme={null}
    npm install @wassist/sdk
    ```

    ```ts hello-agent.mjs theme={null}
    import { Wassist } from "@wassist/sdk";

    const wassist = new Wassist({ apiKey: process.env.WASSIST_API_KEY });

    const agent = await wassist.agents.create({ name: "Hello World" });

    await wassist.agents.update(agent.id, {
      systemPrompt: [
        "You are Hello World, a demo agent.",
        'Whatever the user sends, reply with "Hello, world! 👋" on the first line,',
        "then answer their message in one short sentence.",
      ].join("\n"),
    });

    console.log(`Created ${agent.name}: https://wassist.app/agents/${agent.id}`);
    ```

    ```bash theme={null}
    WASSIST_API_KEY=your-api-key node hello-agent.mjs
    ```
  </Tab>

  <Tab title="cURL">
    Create an API key under **Settings → Developers → API keys**, then:

    ```bash theme={null}
    AGENT_ID=$(curl -s https://backend.wassist.app/api/v1/agents/ \
      -H "X-API-Key: $WASSIST_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"name": "Hello World"}' | jq -r .id)

    curl -X PATCH https://backend.wassist.app/api/v1/agents/$AGENT_ID/ \
      -H "X-API-Key: $WASSIST_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"systemPrompt": "You are Hello World, a demo agent. Whatever the user sends, reply with \"Hello, world! 👋\" on the first line, then answer their message in one short sentence."}'
    ```
  </Tab>
</Tabs>

## 2. Connect it to the sandbox

<Steps>
  <Step title="Open the sandbox number">
    Go to **Numbers** in the dashboard and click the number under **Sandbox numbers**.
  </Step>

  <Step title="Route your chat to the agent">
    In the **Routing** section, set **Mode** to **Agent: let the connected agent reply**, click **Connect agent**, choose `Hello World`, type its name to confirm, and click **Connect agent**.
  </Step>
</Steps>

This only changes your own chat with the sandbox number. Connecting an agent to the sandbox has to be done while signed in to the dashboard. API keys belong to the organization rather than a person, so they have no WhatsApp chat to route.

## 3. Say hi

From the phone you signed in with, open WhatsApp and send `hi` to the sandbox number:

```text theme={null}
You:         hi
Hello World: Hello, world! 👋
             Hi there, what can I help you with today?
```

That's a working WhatsApp agent. Every conversation shows up under **Conversations** in the dashboard, along with the tools the agent called.

<Tip>
  Send `/reset` in the chat at any time to start a fresh session with the agent.
</Tip>

## Make it yours

<AccordionGroup>
  <Accordion title="Pick a model and thinking effort" icon="brain">
    On the agent's page, choose the **model** and how much **thinking effort** it uses. More effort gives more considered answers but slower replies. Changing either requires a paid plan.

    From the API, set `llmModel` and `reasoningEffort` (`none`, `low`, `medium`, `high` or `xhigh`). Send `null` to go back to the model's default. Not every model supports every level, and unsupported values return `400`.

    ```ts theme={null}
    await wassist.agents.update(agent.id, { reasoningEffort: "low" });
    ```
  </Accordion>

  <Accordion title="Give it tools and knowledge" icon="plug">
    Under **Capabilities** you can add API tools, website lookups, MCP connectors, Shopify stores and installed [Apps](/guides/build-an-app). See [Configure tools](/guides/configure-tools).
  </Accordion>

  <Accordion title="Start from your website or Shopify store" icon="wand-magic-sparkles">
    Instead of starting blank, [generate an agent](/guides/create-agent#generate-a-starting-point) from your files, your website or an idea. Selling on Shopify? [Install the Shopify app](/guides/shopify/install-app) and it builds a sales agent from your store.
  </Accordion>

  <Accordion title="Go live on your own number" icon="whatsapp" iconType="brands">
    [Connect a WhatsApp Business number](/guides/connect-whatsapp), then connect the agent to it the same way: **Numbers → your number → Routing → Agent**. From code:

    ```ts theme={null}
    await wassist.phoneNumbers.connectAgent("447700900100", {
      agentId: agent.id,
      applyToExisting: true,
    });
    ```

    See [Deploy your agent](/guides/deploy-agent).
  </Accordion>
</AccordionGroup>

## Next steps

<CardGroup cols={2}>
  <Card title="Webhook routing" icon="code" href="/quickstart/webhook-routing">
    Handle messages in your own code instead.
  </Card>

  <Card title="Core concepts" icon="lightbulb" href="/concepts">
    Agents, tools, conversations and memory.
  </Card>
</CardGroup>
