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

# Create an agent

Each agent lives in a
[project](/guides/get-started/create-a-project/whats-a-project). In the
dashboard, the **New project** wizard creates the project and its first agent
in three steps. The API creates the agent and its project in one request.

## Prerequisites

Before you begin:

* Optional background: [Agent overview](/concepts/agents/overview).
* For the API path, have an API key. See [Create your API key](/guides/get-started/quickstart#create-your-api-key).

## Create the agent

<Steps>
  <Step title="Start building an agent">
    This guide builds an agent that runs on the SLNG orchestrator. To run the
    agent in your own code on LiveKit, Pipecat, or a custom client instead, see
    [Improve an agent](/guides/get-started/create-a-project/improve-agent#in-your-own-code).

    <Tabs>
      <Tab title="Dashboard" icon="monitor">
        On the **Projects** page, click **New project**, then click **Start
        building** on the **Build an agent** card.

        <Frame caption="The first step of New project. Choose Build an agent.">
          <img src="https://mintcdn.com/slng-new-docs/_MURdOw87SJsfVag/heroshots/new-project-path.png?fit=max&auto=format&n=_MURdOw87SJsfVag&q=85&s=fa3dc4f34dd9fff452d32c692c577142" alt="New project step 1 with the Build an agent card" width="2560" height="1600" data-path="heroshots/new-project-path.png" />
        </Frame>
      </Tab>

      <Tab title="API" icon="code">
        One request to the Managed Agents API creates the agent and its
        project. The body carries the agent's identity and its model config.

        ```bash Request theme={null}
        curl -X POST https://api.agents.slng.ai/v1/agents \
          -H "Authorization: Bearer $SLNG_API_KEY" \
          -H "Content-Type: application/json" \
          -d @agent.json
        ```

        This is the complete body. The next steps show where each value comes
        from.

        ```json agent.json theme={null}
        {
          "name": "Support agent",
          "region": "eu-central",
          "language": "en",
          "system_prompt": "You are a support agent for Wayne Enterprises.",
          "greeting": "Hi, how can I help you today?",
          "models": {
            "stt": "deepgram/nova:3",
            "llm": "bedrock-mantle/nvidia.nemotron-super-3-120b:latest",
            "tts": "slng/fish/tts:s2.1-pro",
            "tts_voice": "16cabdb7f8d240569aff36c9e480d783"
          }
        }
        ```
      </Tab>
    </Tabs>
  </Step>

  <Step title="Pick a template">
    Templates prefill the pipeline, prompt, and voice for an industry. You can
    change any of it later.

    <Tabs>
      <Tab title="Dashboard" icon="monitor">
        Keep **From scratch** to choose every piece yourself, or select a
        template such as **Healthcare** or **Insurance**. Click **Continue**.

        <Frame caption="Start from scratch or from an industry template.">
          <img src="https://mintcdn.com/slng-new-docs/_MURdOw87SJsfVag/heroshots/new-project-template.png?fit=max&auto=format&n=_MURdOw87SJsfVag&q=85&s=3bbb3ed97d409af4c7ac7c50a584e51f" alt="New project step 2 with From scratch selected and four industry templates" width="2560" height="1600" data-path="heroshots/new-project-template.png" />
        </Frame>
      </Tab>

      <Tab title="API" icon="code">
        There is no template field. Set the prompt, greeting, and models a
        template would prefill directly in the body. The speech model needs a
        voice ID as well.

        Prefer models under the `slng/` prefix where one exists. They run on
        SLNG infrastructure in the region you pick, so each turn skips the hop
        to an outside provider. Fish Audio S2.1 Pro is SLNG hosted in every
        region. The models allowed depend on region and language. See the
        [model availability guide](/guides/models/which-models-are-available).

        ```json agent.json highlight={5-12} theme={null}
        {
          "name": "Support agent",
          "region": "eu-central",
          "language": "en",
          "system_prompt": "You are a support agent for Wayne Enterprises.",
          "greeting": "Hi, how can I help you today?",
          "models": {
            "stt": "deepgram/nova:3",
            "llm": "bedrock-mantle/nvidia.nemotron-super-3-120b:latest",
            "tts": "slng/fish/tts:s2.1-pro",
            "tts_voice": "16cabdb7f8d240569aff36c9e480d783"
          }
        }
        ```
      </Tab>
    </Tabs>
  </Step>

  <Step title="Name the project and choose a region">
    Pick the region closest to your callers. Region sets the latency floor for
    every turn of the conversation and filters which models you can use. See
    the [regions map](/guides/regions/regions-map) for the full list.

    <Tabs>
      <Tab title="Dashboard" icon="monitor">
        On the **Configure your project** step, enter a **Project name**, then
        open the **Region** dropdown and pick a region.

        <Frame caption="The region selector on the Configure your project step.">
          <img src="https://mintcdn.com/slng-new-docs/_MURdOw87SJsfVag/heroshots/new-project-region.png?fit=max&auto=format&n=_MURdOw87SJsfVag&q=85&s=479129dc9a72fe51226c5d9a9df6a9ed" alt="Configure your project step with the Region dropdown open" width="2560" height="1600" data-path="heroshots/new-project-region.png" />
        </Frame>
      </Tab>

      <Tab title="API" icon="code">
        The name and region are the first two fields of the body. The agent's
        name becomes the project's name.

        ```json agent.json highlight={2-3} theme={null}
        {
          "name": "Support agent",
          "region": "eu-central",
          "language": "en",
          "system_prompt": "You are a support agent for Wayne Enterprises.",
          "greeting": "Hi, how can I help you today?",
          "models": {
            "stt": "deepgram/nova:3",
            "llm": "bedrock-mantle/nvidia.nemotron-super-3-120b:latest",
            "tts": "slng/fish/tts:s2.1-pro",
            "tts_voice": "16cabdb7f8d240569aff36c9e480d783"
          }
        }
        ```
      </Tab>
    </Tabs>
  </Step>

  <Step title="Choose a language and create">
    The primary language filters models to the ones that support it and sets
    the default speech to text and text to speech choices.

    <Tabs>
      <Tab title="Dashboard" icon="monitor">
        Open the **Primary language** dropdown, pick the language your callers
        speak, then click **Create project**.

        <Frame caption="Primary language selector and the Create project button.">
          <img src="https://mintcdn.com/slng-new-docs/_MURdOw87SJsfVag/heroshots/new-project-language.png?fit=max&auto=format&n=_MURdOw87SJsfVag&q=85&s=e6ad2db3f6713ba508cb8d28a2bd3d1e" alt="Configure your project step with the Primary language dropdown open" width="2560" height="1600" data-path="heroshots/new-project-language.png" />
        </Frame>

        The wizard closes and opens the new project on its **Listen** section.
      </Tab>

      <Tab title="API" icon="code">
        The language is the last field.

        ```json agent.json highlight={4} theme={null}
        {
          "name": "Support agent",
          "region": "eu-central",
          "language": "en",
          "system_prompt": "You are a support agent for Wayne Enterprises.",
          "greeting": "Hi, how can I help you today?",
          "models": {
            "stt": "deepgram/nova:3",
            "llm": "bedrock-mantle/nvidia.nemotron-super-3-120b:latest",
            "tts": "slng/fish/tts:s2.1-pro",
            "tts_voice": "16cabdb7f8d240569aff36c9e480d783"
          }
        }
        ```

        Save the file and send it.

        ```bash Request theme={null}
        curl -X POST https://api.agents.slng.ai/v1/agents \
          -H "Authorization: Bearer $SLNG_API_KEY" \
          -H "Content-Type: application/json" \
          -d @agent.json
        ```

        The response is the full agent object, most of it defaults you did
        not set. Keep the `id`. Every later call that changes the agent uses
        it. The project appears on the **Projects** page under the agent's
        name. The highlighted lines are the ones you sent. Expand the block to
        see the rest.

        ```json Response expandable highlight={2,4,9-15} theme={null}
        {
          "id": "1c5639ea-98f2-48bc-80c0-f8e41b2c3fca",
          "organisation_id": "18205771-aea9-4730-977d-cd05f807b0e8",
          "name": "Support agent",
          "system_prompt": "You are a support agent for Wayne Enterprises.",
          "greeting": "Hi, how can I help you today?",
          "inbound_greeting": null,
          "outbound_greeting": null,
          "language": "en",
          "region": "eu-central",
          "models": {
            "stt": "deepgram/nova:3",
            "llm": "bedrock-mantle/nvidia.nemotron-super-3-120b:latest",
            "tts": "slng/fish/tts:s2.1-pro",
            "tts_voice": "16cabdb7f8d240569aff36c9e480d783",
            "stt_kwargs": {},
            "llm_kwargs": {
              "top_p": 0.95,
              "timeout": 30,
              "extra_body": {
                "chat_template_kwargs": {
                  "enable_thinking": false
                }
              },
              "temperature": 1,
              "tool_choice": "auto",
              "parallel_tool_calls": false,
              "max_completion_tokens": 6144
            },
            "tts_kwargs": {
              "latency": "balanced"
            },
            "fallbacks": {
              "stt": [],
              "llm": [],
              "tts": []
            },
            "stt_final_timeout_s": null,
            "llm_first_token_timeout_s": null,
            "tts_first_audio_timeout_s": null,
            "failure_audio_enabled": true
          },
          "models_validation_error": null,
          "idle_nudges": {
            "enabled": true,
            "first_nudge_delay_seconds": 15,
            "second_nudge_delay_seconds": 30,
            "hangup_delay_seconds": 15,
            "first_nudge_text": "Are you still there?",
            "second_nudge_text": "I'm still here. If you need a moment, just let me know. Otherwise, I'll have to end the call soon.",
            "final_hangup_text": "I'll end the call now. Feel free to call back when you're ready."
          },
          "enable_interruptions": true,
          "noise_cancellation_enabled": true,
          "tts_cache_enabled": true,
          "tool_mode": "shared",
          "tools": [],
          "tool_refs": [],
          "mcp_refs": [],
          "runtime_variables": [],
          "livekit_deployment": "default-eu",
          "sip_inbound_trunk_id": null,
          "sip_outbound_trunk_id": null,
          "template_variables": {},
          "created_at": "2026-09-09T15:25:34.707309Z",
          "updated_at": "2026-09-09T15:25:34.707309Z",
          "deleted_at": null
        }
        ```
      </Tab>
    </Tabs>
  </Step>
</Steps>

## What you have now

A project with a linked agent that has a name, a region, a language, and
default models. It cannot take a call yet. The agent still needs its three
sections configured, and the project page opens on the first one.

## Next steps

Configure the agent's three sections, in this order:

1. [Listen](/guides/agents/configure/listen): the speech to text model and how
   the agent hears callers.
2. [Think](/guides/agents/configure/think): the system prompt, greeting, and
   language model.
3. [Speak](/guides/agents/configure/speak): the text to speech model and voice.

Once Speak is done, the project page offers a test session.
