# API Reference

### Core Methods

#### `sendMessage(to, message, options?)`
Send a text message.

**Parameters:**
- `to` (string): Recipient phone number
- `message` (string): Message text
- `options` (object, optional):
  - `previewUrl` (boolean): Enable URL preview
  - `replyTo` (string): Message ID to reply to
  - `priority` (number): Message priority
  - `queueIfBusy` (boolean): Queue if busy

**Returns:** `Promise<MessageResponse>`

---

#### `sendVoice(to, audioIdOrUrl, options?)`
Send a voice message.

**Parameters:**
- `to` (string): Recipient phone number
- `audioIdOrUrl` (string): Media ID or URL
- `options` (object, optional):
  - `replyTo` (string): Message ID to reply to
  - `priority` (number): Message priority

**Returns:** `Promise<MessageResponse>`

---

#### `markAsRead(messageId)`
Mark a message as read.

**Parameters:**
- `messageId` (string): WhatsApp message ID

**Returns:** `Promise<{ success: boolean }>`

---

#### `processWebhook(request)`
Process a webhook request (universal handler).

**Parameters:**
- `request` (UniversalRequest): Request object

**Returns:** `Promise<WebhookResult>`

---

#### `setWebhookHandlers(handlers)`
Set webhook event handlers.

**Parameters:**
- `handlers` (WebhookHandlers): Handler functions

**Returns:** `void`

---

#### `getConversationHistory(conversationId, limit?, offset?)`
Get conversation message history.

**Parameters:**
- `conversationId` (string): Phone number
- `limit` (number, optional): Max messages (default: 50)
- `offset` (number, optional): Pagination offset (default: 0)

**Returns:** `Promise<StoredMessage[]>`

---

#### `searchMessages(query, conversationId?)`
Search messages by text.

**Parameters:**
- `query` (string): Search term
- `conversationId` (string, optional): Limit to conversation

**Returns:** `Promise<StoredMessage[]>`

---

#### `getConversationState(conversationId)`
Get conversation state.

**Parameters:**
- `conversationId` (string): Phone number

**Returns:** `ConversationState | undefined`

---

#### `updateConversationContext(conversationId, context)`
Update conversation context data.

**Parameters:**
- `conversationId` (string): Phone number
- `context` (object): Context data to merge

**Returns:** `ConversationState`

---

#### `getStatistics()`
Get message statistics.

**Returns:** Object with sent, received, failed, delivered, read counts

---

#### `getQueueStats()`
Get message queue statistics.

**Returns:** Object with size, maxSize, usagePercentage

---

#### `startWebhookServer(port?, path?, callback?)`
Start standalone HTTP webhook server.

**Parameters:**
- `port` (number, optional): Port (default: 3000)
- `path` (string, optional): Webhook path (default: '/webhook')
- `callback` (function, optional): Success callback

**Returns:** `http.Server`

---

#### `stopWebhookServer()`
Stop webhook server.

**Returns:** `Promise<void>`

---