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

# Quickstart

> Make your first API call and create your first agent in under 5 minutes.

## Before you start

You need a developer API key. Create one from your [Indigenius dashboard](https://app.indigenius.ai) under **Settings → Developer Keys**, or use an existing key from `GET /v1/auth/keys`.

Set your key as an environment variable so you don't paste it into every command:

```bash theme={null}
export INDIGENIUS_API_KEY="YOUR_API_KEY"
```

***

## Step 1 — Verify your key

Confirm your key is valid and check which scopes it has:

<CodeGroup>
  ```bash Bash theme={null}
  curl https://api.indigenius.ai/v1/auth/keys \
    -H "X-API-Key: $INDIGENIUS_API_KEY"
  ```

  ```javascript Node theme={null}
  const response = await fetch('https://api.indigenius.ai/v1/auth/keys', {
    headers: { 'X-API-Key': process.env.INDIGENIUS_API_KEY },
  });
  console.log(await response.json());
  ```

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

  response = requests.get(
      "https://api.indigenius.ai/v1/auth/keys",
      headers={"X-API-Key": os.environ["INDIGENIUS_API_KEY"]},
      timeout=30,
  )
  print(response.json())
  ```
</CodeGroup>

**Expected response:**

```json theme={null}
{
  "status": true,
  "message": "API keys fetched",
  "data": [
    {
      "id": "665e4a34c65bb95f2f2d72e1",
      "name": "My key",
      "publicKey": "pk_live_7ecf0af44e8f4e48",
      "scopes": ["agents:read", "agents:write", "calls:read", "calls:write"],
      "status": "active"
    }
  ]
}
```

<Note>
  If you get a `401` or `404`, the key value is wrong or the key has been
  revoked. If you get a `403` on a later step, your key is missing the required
  scope — add it via `PATCH /v1/auth/keys/{id}/scopes`.
</Note>

***

## Step 2 — Create an agent

An agent is the AI persona that handles calls. Create one with a name, language, and task type:

<CodeGroup>
  ```bash Bash theme={null}
  curl -X POST https://api.indigenius.ai/v1/agents \
    -H "X-API-Key: $INDIGENIUS_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "name": "Support Agent",
      "company_name": "Acme Inc",
      "industry": "ecommerce",
      "language": "English",
      "voice": "female",
      "task_type": "customer_support"
    }'
  ```

  ```javascript Node theme={null}
  const response = await fetch('https://api.indigenius.ai/v1/agents', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'X-API-Key': process.env.INDIGENIUS_API_KEY,
    },
    body: JSON.stringify({
      name: 'Support Agent',
      company_name: 'Acme Inc',
      industry: 'ecommerce',
      language: 'English',
      voice: 'female',
      task_type: 'customer_support',
    }),
  });
  console.log(await response.json());
  ```

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

  response = requests.post(
      "https://api.indigenius.ai/v1/agents",
      headers={
          "X-API-Key": os.environ["INDIGENIUS_API_KEY"],
          "Content-Type": "application/json",
      },
      json={
          "name": "Support Agent",
          "company_name": "Acme Inc",
          "industry": "ecommerce",
          "language": "English",
          "voice": "female",
          "task_type": "customer_support",
      },
      timeout=30,
  )
  print(response.json())
  ```
</CodeGroup>

Save the `id` from the response — you'll use it in the next step.

***

## Step 3 — Initiate a call

Use the agent ID to start a web call session. The response gives you a WebSocket URL to connect your audio client:

<CodeGroup>
  ```bash Bash theme={null}
  curl -X POST https://api.indigenius.ai/v1/calls/initiate \
    -H "X-API-Key: $INDIGENIUS_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{"assistantId": "YOUR_AGENT_ID", "type": "web"}'
  ```

  ```javascript Node theme={null}
  const response = await fetch('https://api.indigenius.ai/v1/calls/initiate', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'X-API-Key': process.env.INDIGENIUS_API_KEY,
    },
    body: JSON.stringify({ assistantId: 'YOUR_AGENT_ID', type: 'web' }),
  });
  console.log(await response.json());
  ```

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

  response = requests.post(
      "https://api.indigenius.ai/v1/calls/initiate",
      headers={"X-API-Key": os.environ["INDIGENIUS_API_KEY"], "Content-Type": "application/json"},
      json={"assistantId": "YOUR_AGENT_ID", "type": "web"},
      timeout=30,
  )
  print(response.json())
  ```
</CodeGroup>

**Expected response:**

```json theme={null}
{
  "status": true,
  "message": "Call initiated with location data",
  "callId": "665e4a34c65bb95f2f2d72e1",
  "gateway": {
    "transport": "websocket",
    "path": "/new-web-call/connection",
    "url": "wss://api.indigenius.ai/new-web-call/connection?assistant_id=...&call_id=..."
  }
}
```

Connect your client to `gateway.url` to start the real-time audio session.

***

## Next steps

<CardGroup cols={2}>
  <Card title="Agents" href="/agents">
    Configure personas, prompts, models, and voice settings.
  </Card>

  <Card title="Calls" href="/calls">
    Retrieve transcripts and post-call analysis.
  </Card>

  <Card title="Widgets" href="/widgets">
    Embed a call button on any webpage.
  </Card>

  <Card title="Create Studio" href="/create-studio">
    Generate TTS audio and dub videos into other languages.
  </Card>
</CardGroup>
