npm package: @studio-amk/akarizen-node-sdk
Description: Akarizen Node SDK for the chatbot API
Latest version: 0.1.2

# Akarizen Node SDK

TypeScript SDK for the Akarizen chatbot API. This SDK signs requests with your API key and sends them to the Akarizen callback API.

## 1. Installation

```bash
npm i @studio-amk/akarizen-node-sdk
```

## 2. Configuration

```ts
import { AkarizenClient } from "@studio-amk/akarizen-node-sdk";

const client = new AkarizenClient({
  apiKey: "YOUR_API_KEY",
  businessId: "BUSINESS_ID",
  botId: "BOT_ID"
});
```

### Options

- `timeoutMs`: Request timeout in milliseconds.
- `jwtOptions`: Extra JWT options passed to `jsonwebtoken.sign` (e.g., `expiresIn`).

## 3. Send Message

```ts
const options = {
  userId: "user-123",
  message: "Hello",
  displayName: "Jane"
};

// Promise style
client.sendMessage(options)
  .then((response) => {
    console.log(response);
  })
  .catch((error) => {
    console.log(error);
  });

// Async/Await style
try {
  const response = await client.sendMessage(options);
  console.log(response);
} catch (error) {
  console.log(error);
}
```

### Request Body (payload structure)

| Field | Type | Required | Description | Example |
| --- | --- | --- | --- | --- |
| userId | string | Yes | Platform user identifier. | "user-123" |
| message | string | Yes | User message text. | "Hello" |
| displayName | string | No | User display name. | "Jane" |

### Response Example

```json
{
  "code": "200",
  "data": {
    "botReply": "Hello",
    "conversationId": 123,
    "transferredToHuman": false,
    "isBotWithinWorkingHours": true,
    "blocked": false
  }
}
```

## 4. List Messages

```ts
const options = {
  userId: "user-123",
  current: 1,
  limit: 10
};

// Promise style
client.listMessages(options)
  .then((response) => {
    console.log(response);
  })
  .catch((error) => {
    console.log(error);
  });

// Async/Await style
try {
  const response = await client.listMessages(options);
  console.log(response);
} catch (error) {
  console.log(error);
}
```

### Request Body (payload structure)

| Field | Type | Required | Description | Example |
| --- | --- | --- | --- | --- |
| userId | string | Yes | Platform user identifier. | "user-123" |
| current | number | No | Page number (default 1). | 1 |
| limit | number | No | Page size (default 10). | 10 |

## 5. Refresh Conversation

```ts
const options = {
  userId: "user-123",
  conversationId: 42
};

// Promise style
client.refreshConversation(options)
  .then((response) => {
    console.log(response);
  })
  .catch((error) => {
    console.log(error);
  });

// Async/Await style
try {
  const response = await client.refreshConversation(options);
  console.log(response);
} catch (error) {
  console.log(error);
}
```

### Request Body (payload structure)

| Field | Type | Required | Description | Example |
| --- | --- | --- | --- | --- |
| userId | string | Yes | Platform user identifier. | "user-123" |
| conversationId | number or string | Yes | Conversation ID to refresh. | 42 |

## Response Wrapper

All endpoints return a standard wrapper:

```json
{
  "code": "200",
  "status": "OK",
  "message": "...",
  "data": {}
}
```

## Notes

- Your API key is used as the JWT signing secret.
- The platform uses your dashboard callback URL to send responses.