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

# SDKs overview

> Install a Dial SDK and construct a client; the common method set across languages.

Dial ships SDKs so you can call the API in-process instead of shelling out. All of them wrap the same [REST API](/documentation/get-started/authentication) and authenticate with your `sk_live_` key.

Every SDK has a full, auto-generated **API reference** at [sdk.getdial.ai](https://sdk.getdial.ai) — each class and method, generated from the package source with worked examples.

| SDK                                                             | Package               | Use it for                                          | API reference                                                          |
| --------------------------------------------------------------- | --------------------- | --------------------------------------------------- | ---------------------------------------------------------------------- |
| [Node](/documentation/sdks/node)                                | `@getdial/sdk`        | TypeScript / JavaScript apps and agents             | [sdk.getdial.ai/ts](https://sdk.getdial.ai/ts)                         |
| [Python](/documentation/sdks/python)                            | `dial-sdk`            | Async Python apps and agents                        | [sdk.getdial.ai/python](https://sdk.getdial.ai/python)                 |
| [LangChain](/documentation/sdks/langchain)                      | `dial-langchain`      | Giving a LangChain agent Dial tools                 | [sdk.getdial.ai/langchain](https://sdk.getdial.ai/langchain)           |
| [Vercel AI SDK](/documentation/sdks/ai-sdk)                     | `@getdial/ai-sdk`     | Giving any AI SDK model Dial tools                  | [sdk.getdial.ai/ai-sdk](https://sdk.getdial.ai/ai-sdk)                 |
| [CrewAI](/documentation/sdks/crewai)                            | `dial-crewai`         | Giving a CrewAI crew Dial tools (SMS/OTP/voice)     | [sdk.getdial.ai/crewai](https://sdk.getdial.ai/crewai)                 |
| [AutoGen](/documentation/sdks/autogen)                          | `dial-autogen`        | Giving a Microsoft AutoGen agent Dial tools         | [sdk.getdial.ai/autogen](https://sdk.getdial.ai/autogen)               |
| [Microsoft Agent Framework](/documentation/sdks/agentframework) | `dial-agentframework` | Giving a Microsoft Agent Framework agent Dial tools | [sdk.getdial.ai/agentframework](https://sdk.getdial.ai/agentframework) |

## The common method set

The Node and Python clients expose the same operations:

| Method                                          | Does                                                                      |
| ----------------------------------------------- | ------------------------------------------------------------------------- |
| `listNumbers` / `list_numbers`                  | List your phone numbers                                                   |
| `sendMessage` / `send_message`                  | Send an SMS                                                               |
| `makeCall` / `make_call`                        | Place an AI voice call                                                    |
| `listMessages` / `list_messages`                | List recent messages                                                      |
| `listCalls` / `list_calls`                      | List recent calls                                                         |
| `newEventsConnection` / `new_events_connection` | Open a live [event stream](/documentation/platform/stream-account-events) |

## Construct a client

```typescript title="Node"
import { DialClient } from "@getdial/sdk";
const dial = new DialClient({ apiKey: process.env.DIAL_API_KEY! });
```

```python title="Python"
from dial_sdk import DialClient, DialConfig
dial = DialClient(DialConfig(api_key="sk_live_..."))
```

Both accept an optional base URL (`baseUrl` / `base_url`) to target a non-default deployment. Pick your language to continue.

### Identifying your application

Both clients accept an optional `userAgent` / `user_agent` string. It's **prepended** to the SDK's own `User-Agent`, which is always still sent, so traffic from your product or agent runtime is identifiable in the conventional `name/version` form:

```
User-Agent: my-app/1.1.1 @getdial/sdk/0.21.0
```

The framework packages — [LangChain](/documentation/sdks/langchain), [CrewAI](/documentation/sdks/crewai), [AutoGen](/documentation/sdks/autogen), [Agent Framework](/documentation/sdks/agentframework), and the [Vercel AI SDK](/documentation/sdks/ai-sdk) — each take a client you construct, so setting it there covers every tool they expose.