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

# Quickstart - Arbol API in 5 Minutes

> Get started with Arbol's voice AI API in 5 minutes. Create your first AI agent, make API calls, and handle phone conversations. Includes cURL, Node.js, and Python examples.

## Get Your API Key

First, grab your API key from the dashboard—you'll need it to authenticate every request.

<Steps>
  <Step title="Sign in to your dashboard">
    Open [app.getarbol.com](https://app.getarbol.com) and log in. Don't have an account? [Create one free](https://app.getarbol.com/sign-up).
  </Step>

  <Step title="Generate an API key">
    Go to **Settings → API Keys** and click **Create API Key**. Give it a name and copy the key—you won't see it again.
  </Step>

  <Step title="Keep it secure">
    Store your key somewhere safe. Never commit it to Git or expose it in client-side code.
  </Step>
</Steps>

## Make Your First API Call

All requests require your API key in the `Authorization` header as a Bearer token. Let's list your agents to verify everything works.

### List Your Agents

<CodeGroup>
  ```bash cURL theme={null}
  curl -X GET https://api.getarbol.com/agents \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json"
  ```

  ```javascript Node.js theme={null}
  const response = await fetch('https://api.getarbol.com/agents', {
    method: 'GET',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json',
    },
  });

  const data = await response.json();
  console.log(data);
  ```

  ```python Python theme={null}
  import requests

  response = requests.get(
      'https://api.getarbol.com/agents',
      headers={
          'Authorization': 'Bearer YOUR_API_KEY',
          'Content-Type': 'application/json',
      }
  )

  print(response.json())
  ```
</CodeGroup>

### Create Your First Agent

Now let's create an AI agent that can handle phone calls. This agent will answer questions about your products.

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://api.getarbol.com/agents \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "name": "My First Agent",
      "instructions": "You are a helpful assistant that answers questions about our products.",
      "language": "en"
    }'
  ```

  ```javascript Node.js theme={null}
  const response = await fetch('https://api.getarbol.com/agents', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      name: 'My First Agent',
      instructions: 'You are a helpful assistant that answers questions about our products.',
      language: 'en',
    }),
  });

  const agent = await response.json();
  console.log(agent);
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      'https://api.getarbol.com/agents',
      headers={
          'Authorization': 'Bearer YOUR_API_KEY',
          'Content-Type': 'application/json',
      },
      json={
          'name': 'My First Agent',
          'instructions': 'You are a helpful assistant that answers questions about our products.',
          'language': 'en',
      }
  )

  print(response.json())
  ```
</CodeGroup>

### Make an Outbound Call

Ready to make your agent call someone? Create a conversation to start an outbound call.

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://api.getarbol.com/conversations \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "agentId": "agt_your-agent-id",
      "contactId": "cnt_your-contact-id",
      "direction": "outbound"
    }'
  ```

  ```javascript Node.js theme={null}
  const response = await fetch('https://api.getarbol.com/conversations', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      agentId: 'agt_your-agent-id',
      contactId: 'cnt_your-contact-id',
      direction: 'outbound',
    }),
  });

  const conversation = await response.json();
  console.log(conversation);
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      'https://api.getarbol.com/conversations',
      headers={
          'Authorization': 'Bearer YOUR_API_KEY',
          'Content-Type': 'application/json',
      },
      json={
          'agentId': 'agt_your-agent-id',
          'contactId': 'cnt_your-contact-id',
          'direction': 'outbound',
      }
  )

  print(response.json())
  ```
</CodeGroup>

## Next Steps

<CardGroup cols={2}>
  <Card title="API Reference" icon="code" href="/api-reference/introduction">
    Browse all endpoints and see example requests
  </Card>

  <Card title="Configure Agents" icon="robot" href="/api-reference/agents/list">
    Customize voices, languages, and behaviors
  </Card>

  <Card title="Manage Contacts" icon="address-book" href="/api-reference/contacts/list">
    Store contacts with custom fields
  </Card>

  <Card title="Run Campaigns" icon="bullhorn" href="/api-reference/campaigns/list">
    Call thousands of contacts automatically
  </Card>
</CardGroup>
