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

# Quickstart

> Authenticate, list your agents, and place your first call.

## 1. Get credentials

API access is issued per firm. Ask for a key at
[contact@lawtte.ai](mailto:contact@lawtte.ai), then keep it server-side — a Lawtte
key can start real phone calls, so it must never ship in browser or mobile code.

<Steps>
  <Step title="Store the key">
    ```bash theme={null}
    export LAWTTE_API_KEY="sk_live_..."
    ```
  </Step>

  <Step title="Confirm it works">
    ```bash theme={null}
    curl https://www.lawtte.ai/api/v2/list-agents \
      -H "Authorization: Bearer $LAWTTE_API_KEY"
    ```

    You get back every agent configured for your firm, each with an `agent_id`.
  </Step>
</Steps>

## 2. Start a web call

A web call runs in the browser: the API returns a short-lived access token that
the client SDK uses to open the audio stream.

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://www.lawtte.ai/api/v2/create-web-call \
    -H "Authorization: Bearer $LAWTTE_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "agentId": "agent_123",
      "metadata": { "name": "Jane Doe", "source": "website" }
    }'
  ```

  ```ts TypeScript theme={null}
  const res = await fetch("https://www.lawtte.ai/api/v2/create-web-call", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.LAWTTE_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      agentId: "agent_123",
      metadata: { name: "Jane Doe", source: "website" },
    }),
  });
  const { call_id, access_token } = await res.json();
  ```

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

  res = requests.post(
      "https://www.lawtte.ai/api/v2/create-web-call",
      headers={"Authorization": f"Bearer {os.environ['LAWTTE_API_KEY']}"},
      json={"agentId": "agent_123", "metadata": {"name": "Jane Doe"}},
  )
  call = res.json()
  ```
</CodeGroup>

## 3. Place an outbound call

<Warning>
  This dials a real person. Test with your own number first, and read
  [limits and safety](/mcp/limits-and-safety) before calling lists.
</Warning>

```bash theme={null}
curl -X POST https://www.lawtte.ai/api/v2/create-outbound-call \
  -H "Authorization: Bearer $LAWTTE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "toNumber": "+12125550100",
    "agentId": "agent_123",
    "firmSlug": "your-firm",
    "dynamicVariables": { "first_name": "Jane", "case_type": "personal injury" }
  }'
```

## 4. Receive the result

When the call ends and analysis finishes, Lawtte posts a `call_analyzed` event to
your firm's webhook with the transcript, summary, and extracted intake fields. See
[call webhooks](/guides/call-webhooks).

## Next steps

<CardGroup cols={2}>
  <Card title="Browse every endpoint" icon="list" href="/api-reference/introduction">
    Request bodies, query parameters, and live examples.
  </Card>

  <Card title="Drive calls from Claude" icon="sparkles" href="/mcp/overview">
    No code: ask Claude to call a client with an objective.
  </Card>
</CardGroup>


## Related topics

- [Lawtte documentation](/index.md)
