> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.vapi.ai/llms.txt.
> For full documentation content, see https://docs.vapi.ai/llms-full.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.vapi.ai/_mcp/server.

# Inbound customer support

> Build a voice AI banking support agent with tools for account lookup, balance and transaction retrieval.

## Overview

Build a banking support agent with function tools and CSV knowledge bases. The agent handles account verification, balance inquiries, and transaction history via phone calls.

**Agent Capabilities:**

* Account lookup and verification via phone number
* Balance and transaction history retrieval

**What You'll Build:**

* Retrieval tools and CSV knowledge bases for account/transaction data
* Inbound phone number configuration for 24/7 availability

## Prerequisites

* A [Vapi account](https://dashboard.vapi.ai/).

## Scenario

We will be creating a customer support agent for VapiBank, a bank that wants to provide 24/7 support to consumers.

***

## 1. Create a Knowledge Base

Download accounts.csv

Download transactions.csv

1. Navigate to **Files** in your [Vapi Dashboard](https://dashboard.vapi.ai/)
2. Click **Choose file** and upload both `accounts.csv` and `transactions.csv`
3. Note the file IDs for use in creating tools

```typescript
import { VapiClient } from "@vapi-ai/server-sdk";
import fs from 'fs';

const vapi = new VapiClient({ token: "YOUR_VAPI_API_KEY" });

async function uploadFile(filePath: string) {
  try {
    const file = await vapi.files.create({
      file: fs.createReadStream(filePath)
    });

    console.log(`File ${filePath} uploaded with ID: ${file.id}`);
    return file;
  } catch (error) {
    console.error(`Error uploading file ${filePath}:`, error);
    throw error;
  }
}

// Upload both files
const accountsFile = await uploadFile("accounts.csv");
const transactionsFile = await uploadFile("transactions.csv");

console.log(`Accounts file ID: ${accountsFile.id}`);
console.log(`Transactions file ID: ${transactionsFile.id}`);
```

```python
import requests

def upload_file(file_path):
    url = "https://api.vapi.ai/file"
    headers = {"Authorization": f"Bearer {YOUR_VAPI_API_KEY}"}
    
    with open(file_path, 'rb') as file:
        files = {'file': file}
        response = requests.post(url, headers=headers, files=files)
        return response.json()

# Upload both files
accounts_file = upload_file("accounts.csv")
transactions_file = upload_file("transactions.csv")

print(f"Accounts file ID: {accounts_file['id']}")
print(f"Transactions file ID: {transactions_file['id']}")
```

```bash
# Upload accounts.csv
curl -X POST https://api.vapi.ai/file \
     -H "Authorization: Bearer YOUR_VAPI_API_KEY" \
     -F "file=@accounts.csv"

# Upload transactions.csv  
curl -X POST https://api.vapi.ai/file \
     -H "Authorization: Bearer YOUR_VAPI_API_KEY" \
     -F "file=@transactions.csv"
```

***

## 2. Create an Assistant

Go to [dashboard.vapi.ai](https://dashboard.vapi.ai) and click `Assistants` in the left sidebar.

* Click `Create Assistant`.
* Select `Blank Template` as your starting point.
* Change assistant name to `Tom`.

```typescript
import { VapiClient } from "@vapi-ai/server-sdk";

const vapi = new VapiClient({ token: "YOUR_VAPI_API_KEY" });

const systemPrompt = `You are Tom, a friendly VapiBank customer support assistant. Help customers check balances and view recent transactions. Always verify identity with phone number first.`;

const assistant = await vapi.assistants.create({
  name: "Tom",
  firstMessage: "Hello, you've reached VapiBank customer support! My name is Tom, how may I assist you today?",
  model: {
    provider: "openai",
    model: "gpt-4o",
    messages: [
      {
        role: "system",
        content: systemPrompt
      }
    ]
  },
  voice: {
    provider: "11labs",
    voiceId: "burt"
  }
});

console.log(`Assistant created with ID: ${assistant.id}`);
```

```python
import requests

url = "https://api.vapi.ai/assistant"
headers = {
    "Authorization": f"Bearer {YOUR_VAPI_API_KEY}",
    "Content-Type": "application/json"
}

system_prompt = "You are Tom, a friendly VapiBank customer support assistant. Help customers check balances and view recent transactions. Always verify identity with phone number first."

data = {
    "name": "Tom",
    "firstMessage": "Hello, you've reached VapiBank customer support! My name is Tom, how may I assist you today?",
    "model": {
        "provider": "openai",
        "model": "gpt-4o",
        "messages": [
            {
                "role": "system",
                "content": system_prompt
            }
        ]
    },
    "voice": {
        "provider": "11labs",
        "voiceId": "burt"
    }
}

response = requests.post(url, headers=headers, json=data)
assistant = response.json()
print(f"Assistant created with ID: {assistant['id']}")
```

```bash
curl -X POST https://api.vapi.ai/assistant \
     -H "Authorization: Bearer YOUR_VAPI_API_KEY" \
     -H "Content-Type: application/json" \
     -d '{
       "name": "Tom",
       "firstMessage": "Hello, you'\''ve reached VapiBank customer support! My name is Tom, how may I assist you today?",
       "model": {
         "provider": "openai",
         "model": "gpt-4o",
         "messages": [
           {
             "role": "system",
             "content": "You are Tom, a friendly VapiBank customer support assistant. Help customers check balances and view recent transactions. Always verify identity with phone number first."
           }
         ]
       },
       "voice": {
         "provider": "11labs",
         "voiceId": "burt"
       }
     }'
```

***

## 3. Configure an Assistant

Update `First Message` to:

```txt title="First Message" wordWrap
Hello, you've reached VapiBank customer support! My name is Tom, how may I assist you today?
```

```typescript
import { VapiClient } from "@vapi-ai/server-sdk";

const vapi = new VapiClient({ token: "YOUR_VAPI_API_KEY" });

const updatedAssistant = await vapi.assistants.update("YOUR_ASSISTANT_ID", {
  firstMessage: "Hello, you've reached VapiBank customer support! My name is Tom, how may I assist you today?"
});

console.log("First message updated successfully");
```

```python
import requests

url = f"https://api.vapi.ai/assistant/{YOUR_ASSISTANT_ID}"
headers = {
    "Authorization": f"Bearer {YOUR_VAPI_API_KEY}",
    "Content-Type": "application/json"
}

data = {
    "firstMessage": "Hello, you've reached VapiBank customer support! My name is Tom, how may I assist you today?"
}

response = requests.patch(url, headers=headers, json=data)
assistant = response.json()
print("First message updated successfully")
```

```bash
curl -X PATCH https://api.vapi.ai/assistant/YOUR_ASSISTANT_ID \
     -H "Authorization: Bearer YOUR_VAPI_API_KEY" \
     -H "Content-Type: application/json" \
     -d '{
       "firstMessage": "Hello, you'\''ve reached VapiBank customer support! My name is Tom, how may I assist you today?"
     }'
```

First, create this system prompt:

```txt title="System Prompt" maxLines=10
# VapiBank - Phone Support Agent Prompt

## Identity & Purpose
You are **Tom**, VapiBank's friendly, 24x7 phone-support voice assistant. Do not introduce yourself after the first message.
You help customers with account inquiries:

1. **Check balance**  
2. **View recent transactions**  

## Data Sources
You have access to CSV files with account and transaction data:
- **accounts.csv**: `account_id, name, phone_last4, balance, card_status, email`
- **transactions.csv**: transaction history for all accounts

## Available Tools
1. **lookup_account** → verify customer identity using phone number
2. **get_balance** → returns current balance for verified account
3. **get_recent_transactions** → returns recent transaction history

## Conversation Flow
1. **Greeting**  
> "Hello, you've reached VapiBank customer support! My name is Tom, how may I assist you today?"

2. **Account Verification**  
* After caller provides phone digits → call **lookup_account**
* Read back the returned `name` for confirmation
* If no match after 2 tries → apologize and offer to transfer

3. **Handle Request**  
Ask: "How can I help you today—check your balance or review recent transactions?"

**Balance** → call **get_balance** → read current balance
**Transactions** → call **get_recent_transactions** → summarize recent activity

4. **Close**  
> "Is there anything else I can help you with today?"  
If no → thank the caller and end the call

## Style & Tone
* Warm, concise, ≤ 30 words per reply
* One question at a time
* Repeat important numbers slowly and clearly
* Professional but friendly tone

## Edge Cases
* **No account match** → offer to transfer to human agent
* **Multiple requests** → handle each request, then ask if anything else needed
* **Technical issues** → apologize and offer callback or transfer

(Remember: only share account information with verified account holders.)
```

Then update your assistant:

Copy the system prompt above and paste it into the `System Prompt` field in your assistant configuration.

```typescript
import { VapiClient } from "@vapi-ai/server-sdk";

const vapi = new VapiClient({ token: "YOUR_VAPI_API_KEY" });

// Use the system prompt from above
const systemPrompt = `# VapiBank - Phone Support Agent Prompt...`;

const updatedAssistant = await vapi.assistants.update("YOUR_ASSISTANT_ID", {
  model: {
    messages: [
      {
        role: "system",
        content: systemPrompt
      }
    ]
  }
});

console.log("System prompt updated successfully");
```

```python
import requests

url = f"https://api.vapi.ai/assistant/{YOUR_ASSISTANT_ID}"
headers = {
    "Authorization": f"Bearer {YOUR_VAPI_API_KEY}",
    "Content-Type": "application/json"
}

# Use the system prompt from above
system_prompt = """# VapiBank - Phone Support Agent Prompt..."""

data = {
    "model": {
        "messages": [
            {
                "role": "system",
                "content": system_prompt
            }
        ]
    }
}

response = requests.patch(url, headers=headers, json=data)
assistant = response.json()
print("System prompt updated successfully")
```

```bash
curl -X PATCH https://api.vapi.ai/assistant/YOUR_ASSISTANT_ID \
     -H "Authorization: Bearer YOUR_VAPI_API_KEY" \
     -H "Content-Type: application/json" \
     -d '{
       "model": {
         "messages": [
           {
             "role": "system",
             "content": "# VapiBank - Phone Support Agent Prompt\n\n## Identity & Purpose\nYou are **Tom**, VapiBank'\''s friendly, 24x7 phone-support voice assistant. Do not introduce yourself after the first message.\nYou help customers with account inquiries:\n\n1. **Check balance**\n2. **View recent transactions**\n\n## Data Sources\nYou have access to CSV files with account and transaction data:\n- **accounts.csv**: account_id, name, phone_last4, balance, card_status, email\n- **transactions.csv**: transaction history for all accounts\n\n## Available Tools\n1. **lookup_account** → verify customer identity using phone number\n2. **get_balance** → returns current balance for verified account\n3. **get_recent_transactions** → returns recent transaction history\n\n## Conversation Flow\n1. **Greeting**\n  > \"Hello, you'\''ve reached VapiBank customer support! My name is Tom, how may I assist you today?\"\n\n2. **Account Verification**\n  * After caller provides phone digits → call **lookup_account**\n  * Read back the returned name for confirmation\n  * If no match after 2 tries → apologize and offer to transfer\n\n3. **Handle Request**\n  Ask: \"How can I help you today—check your balance or review recent transactions?\"\n\n  **Balance** → call **get_balance** → read current balance\n  **Transactions** → call **get_recent_transactions** → summarize recent activity\n\n4. **Close**\n  > \"Is there anything else I can help you with today?\"\n  If no → thank the caller and end the call\n\n## Style & Tone\n* Warm, concise, ≤ 30 words per reply\n* One question at a time\n* Repeat important numbers slowly and clearly\n* Professional but friendly tone\n\n## Edge Cases\n* **No account match** → offer to transfer to human agent\n* **Multiple requests** → handle each request, then ask if anything else needed\n* **Technical issues** → apologize and offer callback or transfer\n\n(Remember: only share account information with verified account holders.)"
           }
         ]
       }
     }'
```

Configure the LLM settings to your liking.

* Select any provider and model you like (you will see cost and latency estimates).
* You can configure the files available to the LLM as knowledge base.
* You can specify the temperature and max tokens of the LLM.

```typescript
import { VapiClient } from "@vapi-ai/server-sdk";

const vapi = new VapiClient({ token: "YOUR_VAPI_API_KEY" });

async function updateAssistantLLMSettings(assistantId: string) {
  const updatedAssistant = await vapi.assistants.update(assistantId, {
    model: {
      provider: "openai",
      model: "gpt-4o",
      temperature: 0.7,
      maxTokens: 150,
      messages: [
        {
          role: "system",
          content: "You are Tom, VapiBank's customer support assistant..."
        }
      ]
    }
  });

  return updatedAssistant;
}

// Update LLM settings
const assistant = await updateAssistantLLMSettings('YOUR_ASSISTANT_ID');
console.log('Assistant LLM settings updated');
```

```python
import requests

def update_assistant_llm_settings(assistant_id):
    url = f"https://api.vapi.ai/assistant/{assistant_id}"
    headers = {
        "Authorization": f"Bearer {YOUR_VAPI_API_KEY}",
        "Content-Type": "application/json"
    }
    
    data = {
        "model": {
            "provider": "openai",
            "model": "gpt-4o",
            "temperature": 0.7,
            "maxTokens": 150,
            "messages": [
                {
                    "role": "system",
                    "content": "You are Tom, VapiBank's customer support assistant..."
                }
            ]
        }
    }
    
    response = requests.patch(url, headers=headers, json=data)
    return response.json()

# Update LLM settings
assistant = update_assistant_llm_settings('YOUR_ASSISTANT_ID')
print("Assistant LLM settings updated")
```

```bash
curl -X PATCH https://api.vapi.ai/assistant/YOUR_ASSISTANT_ID \
     -H "Authorization: Bearer YOUR_VAPI_API_KEY" \
     -H "Content-Type: application/json" \
     -d '{
       "model": {
         "provider": "openai",
         "model": "gpt-4o",
         "temperature": 0.7,
         "maxTokens": 150,
         "messages": [
           {
             "role": "system",
             "content": "You are Tom, VapiBank'\''s customer support assistant..."
           }
         ]
       }
     }'
```

**Dashboard only:** Click `Publish` to save your changes.

When using the Server SDKs, changes are applied immediately when you make API calls. There's no separate "publish" step required.

Click `Talk to Assistant` to test it out.

```typescript
import { VapiClient } from "@vapi-ai/server-sdk";

const vapi = new VapiClient({ token: "YOUR_VAPI_API_KEY" });

async function testAssistantWithCall(assistantId: string) {
  const call = await vapi.calls.create({
    assistantId: assistantId,
    customer: {
      number: "+1234567890" // Your test number
    }
  });

  console.log(`Test call created: ${call.id}`);
  return call;
}

// Create a test call
const testCall = await testAssistantWithCall('YOUR_ASSISTANT_ID');
```

```python
import requests

def test_assistant_with_call(assistant_id):
    url = "https://api.vapi.ai/call"
    headers = {
        "Authorization": f"Bearer {YOUR_VAPI_API_KEY}",
        "Content-Type": "application/json"
    }
    
    data = {
        "assistantId": assistant_id,
        "customer": {
            "number": "+1234567890"  # Your test number
        }
    }
    
    response = requests.post(url, headers=headers, json=data)
    call = response.json()
    print(f"Test call created: {call['id']}")
    return call

# Create a test call
test_call = test_assistant_with_call('YOUR_ASSISTANT_ID')
```

```bash
# Create a test call
curl -X POST https://api.vapi.ai/call \
     -H "Authorization: Bearer YOUR_VAPI_API_KEY" \
     -H "Content-Type: application/json" \
     -d '{
       "assistantId": "YOUR_ASSISTANT_ID",
       "customer": {
         "number": "+1234567890"
       }
     }'
```

***

## 4. Add Tools to an Assistant

Open your [dashboard.vapi.ai](https://dashboard.vapi.ai) and click `Tools` in the left sidebar.

* Click `Create Tool`.
* Select `Function` as your tool type.
* Change tool name to `get_balance`.
* Add the following function description:

  ```txt title="Function Description" wordWrap
  Retrieve the balance for an account based on provided account holder name and last 4 digits of the phone number.
  ```
* Scroll down to the `Knowledge Bases` section and add the following knowledge base:

  * Name: `accounts`<br />
    Description: `Use this to retrieve account information`<br />
    File IDs: `<File ID of your accounts.csv file>`

- Click `Create Tool`.
- Select `Function` as your tool type.
- Change tool name to `get_recent_transactions`.
- Add the following function description:

  ```txt title="Function Description" wordWrap
  Return the three most recent transactions for a specific account.
  ```
- Scroll down to the `Knowledge Bases` section and add the following knowledge bases:

  * Name: `accounts`<br />
    Description: `Use this to retrieve account information`<br />
    File IDs: `<File ID of your accounts.csv file>`

  * Name: `transactions`<br />
    Description: `Use this to retrieve transactions`<br />
    File IDs: `<File ID of your transactions.csv file>`

* Click `Create Tool`.
* Select `Function` as your tool type.
* Change tool name to `lookup_account`.
* Add the following function description:

  ```txt title="Function Description" wordWrap
  Look up account based on provided name and last 4 digits of the phone number.
  ```
* Scroll down to the `Knowledge Bases` section and add the following knowledge bases:

  * Name: `accounts`<br />
    Description: `Use this to retrieve account information`<br />
    File IDs: `<File ID of your accounts.csv file>`

- Click `Assistants` in the left sidebar.
- Make sure `Tom` is selected in the list of assistants.
- Scroll down until you see `Tools` accordion. Expand it.
- In the expanded accordion, add `get_balance` and `get_recent_transactions` tools.
- Click `Publish` to save your changes.

```typescript
import { VapiClient } from "@vapi-ai/server-sdk";

const vapi = new VapiClient({ token: "YOUR_VAPI_API_KEY" });

// Step 1: Create the account lookup tool
const lookupAccountTool = await vapi.tools.create({
  type: "function",
  function: {
    name: "lookup_account",
    description: "Look up account based on provided name and last 4 digits of the phone number."
  },
  knowledgeBases: [
    {
      name: "accounts",
      description: "Use this to retrieve account information",
      fileIds: ["YOUR_ACCOUNTS_FILE_ID"]
    }
  ]
});

console.log(`Created lookup_account tool: ${lookupAccountTool.id}`);

// Step 2: Create the balance retrieval tool
const getBalanceTool = await vapi.tools.create({
  type: "function",
  function: {
    name: "get_balance",
    description: "Retrieve the balance for an account based on provided account holder name and last 4 digits of the phone number."
  },
  knowledgeBases: [
    {
      name: "accounts",
      description: "Use this to retrieve account information",
      fileIds: ["YOUR_ACCOUNTS_FILE_ID"]
    }
  ]
});

console.log(`Created get_balance tool: ${getBalanceTool.id}`);

// Step 3: Create the transactions retrieval tool
const getTransactionsTool = await vapi.tools.create({
  type: "function",
  function: {
    name: "get_recent_transactions",
    description: "Return the three most recent transactions for a specific account."
  },
  knowledgeBases: [
    {
      name: "accounts",
      description: "Use this to retrieve account information",
      fileIds: ["YOUR_ACCOUNTS_FILE_ID"]
    },
    {
      name: "transactions",
      description: "Use this to retrieve transactions",
      fileIds: ["YOUR_TRANSACTIONS_FILE_ID"]
    }
  ]
});

console.log(`Created get_recent_transactions tool: ${getTransactionsTool.id}`);

// Step 4: Add all tools to the assistant
const updatedAssistant = await vapi.assistants.update("YOUR_ASSISTANT_ID", {
  model: {
    toolIds: [
      lookupAccountTool.id,
      getBalanceTool.id,
      getTransactionsTool.id
    ]
  }
});

console.log("All tools added to assistant successfully!");
```

```python
import requests

# Helper function to create tools
def create_tool(name, description, knowledge_bases):
    url = "https://api.vapi.ai/tool"
    headers = {
        "Authorization": f"Bearer {YOUR_VAPI_API_KEY}",
        "Content-Type": "application/json"
    }
    
    data = {
        "type": "function",
        "function": {
            "name": name,
            "description": description
        },
        "knowledgeBases": knowledge_bases
    }
    
    response = requests.post(url, headers=headers, json=data)
    return response.json()

# Step 1: Create the account lookup tool
lookup_account_tool = create_tool(
    "lookup_account",
    "Look up account based on provided name and last 4 digits of the phone number.",
    [{"name": "accounts", "description": "Use this to retrieve account information", "fileIds": ["YOUR_ACCOUNTS_FILE_ID"]}]
)
print(f"Created lookup_account tool: {lookup_account_tool['id']}")

# Step 2: Create the balance retrieval tool
get_balance_tool = create_tool(
    "get_balance",
    "Retrieve the balance for an account based on provided account holder name and last 4 digits of the phone number.",
    [{"name": "accounts", "description": "Use this to retrieve account information", "fileIds": ["YOUR_ACCOUNTS_FILE_ID"]}]
)
print(f"Created get_balance tool: {get_balance_tool['id']}")

# Step 3: Create the transactions retrieval tool
get_transactions_tool = create_tool(
    "get_recent_transactions", 
    "Return the three most recent transactions for a specific account.",
    [
        {"name": "accounts", "description": "Use this to retrieve account information", "fileIds": ["YOUR_ACCOUNTS_FILE_ID"]},
        {"name": "transactions", "description": "Use this to retrieve transactions", "fileIds": ["YOUR_TRANSACTIONS_FILE_ID"]}
    ]
)
print(f"Created get_recent_transactions tool: {get_transactions_tool['id']}")

# Step 4: Add all tools to the assistant
def update_assistant_with_tools(assistant_id, tool_ids):
    url = f"https://api.vapi.ai/assistant/{assistant_id}"
    headers = {
        "Authorization": f"Bearer {YOUR_VAPI_API_KEY}",
        "Content-Type": "application/json"
    }
    
    data = {
        "model": {
            "toolIds": tool_ids
        }
    }
    
    response = requests.patch(url, headers=headers, json=data)
    return response.json()

tool_ids = [lookup_account_tool['id'], get_balance_tool['id'], get_transactions_tool['id']]
updated_assistant = update_assistant_with_tools("YOUR_ASSISTANT_ID", tool_ids)
print("All tools added to assistant successfully!")
```

```bash
# Step 1: Create the account lookup tool
curl -X POST https://api.vapi.ai/tool \
     -H "Authorization: Bearer YOUR_VAPI_API_KEY" \
     -H "Content-Type: application/json" \
     -d '{
       "type": "function",
       "function": {
         "name": "lookup_account",
         "description": "Look up account based on provided name and last 4 digits of the phone number."
       },
       "knowledgeBases": [
         {
           "name": "accounts",
           "description": "Use this to retrieve account information",
           "fileIds": ["YOUR_ACCOUNTS_FILE_ID"]
         }
       ]
     }'

# Step 2: Create the balance retrieval tool
curl -X POST https://api.vapi.ai/tool \
     -H "Authorization: Bearer YOUR_VAPI_API_KEY" \
     -H "Content-Type: application/json" \
     -d '{
       "type": "function",
       "function": {
         "name": "get_balance",
         "description": "Retrieve the balance for an account based on provided account holder name and last 4 digits of the phone number."
       },
       "knowledgeBases": [
         {
           "name": "accounts",
           "description": "Use this to retrieve account information",
           "fileIds": ["YOUR_ACCOUNTS_FILE_ID"]
         }
       ]
     }'

# Step 3: Create the transactions retrieval tool
curl -X POST https://api.vapi.ai/tool \
     -H "Authorization: Bearer YOUR_VAPI_API_KEY" \
     -H "Content-Type: application/json" \
     -d '{
       "type": "function",
       "function": {
         "name": "get_recent_transactions",
         "description": "Return the three most recent transactions for a specific account."
       },
       "knowledgeBases": [
         {
           "name": "accounts",
           "description": "Use this to retrieve account information",
           "fileIds": ["YOUR_ACCOUNTS_FILE_ID"]
         },
         {
           "name": "transactions",
           "description": "Use this to retrieve transactions",
           "fileIds": ["YOUR_TRANSACTIONS_FILE_ID"]
         }
       ]
     }'

# Step 4: Add all tools to the assistant
curl -X PATCH https://api.vapi.ai/assistant/YOUR_ASSISTANT_ID \
     -H "Authorization: Bearer YOUR_VAPI_API_KEY" \
     -H "Content-Type: application/json" \
     -d '{
       "model": {
         "toolIds": ["LOOKUP_ACCOUNT_TOOL_ID", "GET_BALANCE_TOOL_ID", "GET_TRANSACTIONS_TOOL_ID"]
       }
     }'
```

***

## 5. Assign a Phone Number to an Assistant

Open your [dashboard.vapi.ai](https://dashboard.vapi.ai) and click `Phone Numbers` in the left sidebar.

* Click `Create Phone Number`.
* Stick with `Free Vapi Number`.
* Enter your preferred area code (e.g. `530`).

- Set the `Phone Number Name` to `Vapi Support Hotline`.
- Under `Inbound Settings` find `Assistant` dropdown and select `Tom` from the list.
- Changes are saved automatically.

```typescript
import { VapiClient } from "@vapi-ai/server-sdk";

const vapi = new VapiClient({ token: "YOUR_VAPI_API_KEY" });

const phoneNumber = await vapi.phoneNumbers.create({
  name: "Vapi Support Hotline",
  assistantId: "YOUR_ASSISTANT_ID"
});

console.log(`Phone number created: ${phoneNumber.number}`);
```

```python
import requests

def create_phone_number(name, assistant_id):
    url = "https://api.vapi.ai/phone-number"
    headers = {
        "Authorization": f"Bearer {YOUR_VAPI_API_KEY}",
        "Content-Type": "application/json"
    }
    
    data = {
        "name": name,
        "assistantId": assistant_id
    }
    
    response = requests.post(url, headers=headers, json=data)
    return response.json()

# Create phone number for Tom
phone_number = create_phone_number("Vapi Support Hotline", assistant_id)
print(f"Phone number created: {phone_number['number']}")
```

```bash
# Create a phone number
curl -X POST https://api.vapi.ai/phone-number \
     -H "Authorization: Bearer YOUR_VAPI_API_KEY" \
     -H "Content-Type: application/json" \
     -d '{
       "name": "Vapi Support Hotline",
       "assistantId": "YOUR_ASSISTANT_ID"
     }'
```

***

## Next Steps

Just like that, you've built a 24/7 customer support hotline that can handle inbound calls and answer balance and transaction questions.

Consider the reading the following guides to further enhance your assistant:

* [**Knowledge Bases**](../knowledge-base/) - Learn more about knowledge bases to build knowledge-based agents.
* [**External Integrations**](../tools/) - Configure integrations with [Google Calendar](../tools/google-calendar), [Google Sheets](../tools/google-sheets), [Slack](../tools/slack), etc.
* [**Squads**](../squads) - Learn how to compose multiple assistants and transfer seamlessly for complex use cases.

Need help? Chat with the team on our [Discord](https://discord.com/invite/pUFNcf2WmH) or mention us on [X/Twitter](https://x.com/Vapi_AI).