---
title: 'SDK (TypeScript)'
description: 'Use the bknd SDK in TypeScript'
---

To start using the bknd API, start by creating a new API instance:
```ts
import { Api } from "bknd";

const api = new Api({
   host: "..." // point to your bknd instance
});
```

The `Api` class is the main entry point for interacting with the bknd API. It provides methods
for all available modules described below.

## Data (`api.data`)
Access the `Data` specific API methods at `api.data`.

### `data.readMany([entity], [query])`
To retrieve a list of records from an entity, use the `readMany` method:
```ts
const { data } = await api.data.readMany("posts");
```

You can also add additional query instructions:
```ts
const { data } = await api.data.readMany("posts", {
   limit: 10,
   offset: 0,
   select: ["id", "title", "views"],
   with: ["comments"],
   where: {
      title: "Hello, World!",
      views: {
         $gt: 100
      }
   },
   sort: { by: "views", order: "desc" }
});
```
The `with` property automatically adds the related entries to the response.

### `data.readOne([entity], [id])`
To retrieve a single record from an entity, use the `readOne` method:
```ts
const { data } = await api.data.readOne("posts", 1);
```

### `data.createOne([entity], [data])`
To create a single record of an entity, use the `createOne` method:
```ts
const { data } = await api.data.createOne("posts", {
   title: "Hello, World!",
   content: "This is a test post.",
   views: 0
});
```

### `data.updateOne([entity], [id], [data])`
To update a single record of an entity, use the `updateOne` method:
```ts
const { data } = await api.data.updateOne("posts", 1, {
   views: 1
});
```

### `data.deleteOne([entity], [id])`
To delete a single record of an entity, use the `deleteOne` method:
```ts
const { data } = await api.data.deleteOne("posts", 1);
```

## Auth (`api.auth`)
Access the `Auth` specific API methods at `api.auth`. If there is successful authentication, the
API will automatically save the token and use it for subsequent requests.

### `auth.loginWithPassword([input])`
To log in with a password, use the `loginWithPassword` method:
```ts
const { data } = await api.auth.loginWithPassword({
   email: "...",
   password: "..."
});
```

### `auth.registerWithPassword([input])`
To register with a password, use the `registerWithPassword` method:
```ts
const { data } = await api.auth.registerWithPassword({
   email: "...",
   password: "..."
});
```

### `auth.me()`
To retrieve the current user, use the `me` method:
```ts
const { data } = await api.auth.me();
```

### `auth.strategies()`
To retrieve the available authentication strategies, use the `strategies` method:
```ts
const { data } = await api.auth.strategies();
```