# useAskAI



# Overview

Accesses the AskAI context for state, messages, and actions. Use it inside [AskAI](/docs/api-reference/client/ask-ai) or [AskAIProvider](/docs/api-reference/client/ask-ai-provider).

## Type Definition

```ts
import type { ChatStatus, UIMessage } from 'ai';

export type AskAIActionOptions = {
  open?: boolean;
};

export interface AskAIContextValue {
  open: boolean;
  setOpen: (open: boolean) => void;
  toggleOpen: () => void;
  input: string;
  setInput: (value: string, options?: AskAIActionOptions) => void;
  messages: UIMessage[];
  status: ChatStatus;
  error: Error | undefined;
  isLoading: boolean;
  sendMessage: (message: { text: string }, options?: AskAIActionOptions) => void;
  handleSubmit: (message: { text?: string }) => void;
  regenerate: (options?: { messageId?: string }) => void;
  clearMessages: () => void | Promise<void>;
}

export declare function useAskAI(): AskAIContextValue;
```

## Usage

```tsx
import { useAskAI } from 'peam/client';

export function AskButton() {
  const { sendMessage, setOpen } = useAskAI();

  return (
    <button
      onClick={() => {
        setOpen(true);
        sendMessage({ text: 'What does this page cover?' });
      }}
    >
      Ask AI
    </button>
  );
}
```

## Notes

* `setInput` and `sendMessage` accept `options.open` (default `true`) to control whether the UI opens.
* The hook must be used inside [AskAI](/docs/api-reference/client/ask-ai) or [AskAIProvider](/docs/api-reference/client/ask-ai-provider).


## Sitemap
[Overview of all docs pages](/sitemap.md)
