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

# Quickstart

> Create a call agent, deploy it, and place a live test conversation.

This quickstart walks through the smallest useful Feather flow:

1. Create an agent
2. Deploy its first version
3. Dispatch a live outbound call

## Prerequisites

* A Feather account and API key
* At least one configured STT config, TTS config, LLM config, and voice
* An outbound phone number configured in your Feather organization

## Step 1: Create an Agent

This example creates a voice agent with a prompt, default model selections, and no knowledge base yet.

<CodeGroup>
  ```bash cURL theme={"system"}
  curl -X POST "https://prod.featherhq.com/api/v1/agents" \
    -H "X-API-Key: $FEATHER_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "name": "Demo Calling Agent",
      "description": "Qualifies and routes inbound or outbound conversations",
      "agentType": "CALL",
      "useKnowledgeBase": false,
      "prompt": {
        "system": "You are a concise and helpful assistant for Feather Labs. Introduce yourself clearly, answer questions directly, and capture the next step.",
        "variables": [
          {
            "name": "company",
            "required": false,
            "defaultValue": "Feather Labs"
          }
        ],
        "tools": [],
        "preBuiltTools": []
      },
      "voicemailMessage": null,
      "overrideSTTConfig": null,
      "sttConfigId": "YOUR_STT_CONFIG_ID",
      "ttsConfigId": "YOUR_TTS_CONFIG_ID",
      "llmConfigId": "YOUR_LLM_CONFIG_ID",
      "voiceId": "YOUR_VOICE_ID"
    }'
  ```

  ```javascript JavaScript theme={"system"}
  const response = await fetch("https://prod.featherhq.com/api/v1/agents", {
    method: "POST",
    headers: {
      "X-API-Key": process.env.FEATHER_API_KEY,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      name: "Demo Calling Agent",
      description: "Qualifies and routes inbound or outbound conversations",
      agentType: "CALL",
      useKnowledgeBase: false,
      prompt: {
        system:
          "You are a concise and helpful assistant for Feather Labs. Introduce yourself clearly, answer questions directly, and capture the next step.",
        variables: [
          {
            name: "company",
            required: false,
            defaultValue: "Feather Labs",
          },
        ],
        tools: [],
        preBuiltTools: [],
      },
      voicemailMessage: null,
      overrideSTTConfig: null,
      sttConfigId: "YOUR_STT_CONFIG_ID",
      ttsConfigId: "YOUR_TTS_CONFIG_ID",
      llmConfigId: "YOUR_LLM_CONFIG_ID",
      voiceId: "YOUR_VOICE_ID",
    }),
  });

  const { agent } = await response.json();

  console.log("Agent ID:", agent.id);
  console.log("Version ID:", agent.version.id);
  ```
</CodeGroup>

Save the returned `agent.id` and `agent.version.id`.

## Step 2: Deploy the Version

Only deployed versions handle live traffic.

```bash theme={"system"}
curl -X PATCH "https://prod.featherhq.com/api/v1/agents/AGENT_ID/versions/VERSION_ID/deploy" \
  -H "X-API-Key: $FEATHER_API_KEY"
```

## Step 3: Dispatch a Test Call

Use direct dispatch to place a single outbound call without creating a workflow.

```bash theme={"system"}
curl -X POST "https://prod.featherhq.com/api/v1/agent/AGENT_ID/dispatch" \
  -H "X-API-Key: $FEATHER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "versionId": "VERSION_ID",
    "outboundPhoneNumberId": "OUTBOUND_PHONE_NUMBER_ID",
    "leadId": "contact-123",
    "firstName": "Taylor",
    "toPhoneNumber": "+14155550123",
    "metadata": {
      "source": "quickstart"
    },
    "variables": {
      "company": "Feather Labs"
    }
  }'
```

## Step 4: Inspect the Conversation

After the call completes, you can review:

* [Call records](/api-reference/calls/list-all-calls)
* [Agent deployments](/api-reference/agents/list-agent-deployments)
* [Configuration options](/documentation/core-concepts/configurations)

## Next Steps

Once the basic call flow works, expand into one of these:

<CardGroup cols={2}>
  <Card title="SMS Threads" icon="messages" href="/api-reference/sms-threads/create-a-new-sms-thread">
    Start text conversations from deployed text agents.
  </Card>

  <Card title="Workflows" icon="timeline" href="/documentation/core-concepts/workflows">
    Automate call and text sequences over time.
  </Card>

  <Card title="Knowledge Base" icon="database" href="/documentation/core-concepts/knowledge-base">
    Ground answers in your own documents.
  </Card>

  <Card title="Calendars" icon="calendar" href="/documentation/core-concepts/calendars">
    Let agents find availability and book meetings.
  </Card>
</CardGroup>
