# Events

## on

Subscribes to emitted events, which are described below.\
This function returns a subscription id that can be used to unsubscribe.

```typescript
aiForm.on(eventName, (payload) => void);
```

## off

Unsubscribes from emitted events, which are described below.

```typescript
aiForm.off(subscriptionId);
```

## Events list

<table><thead><tr><th width="232">Event name</th><th>Description</th></tr></thead><tbody><tr><td><code>initialized</code></td><td>AI form has been initialised and is ready to be used</td></tr><tr><td><code>error</code></td><td>Unexpected error has occurred</td></tr><tr><td><code>message.inbound</code></td><td>New message is received.<br><em>Messages are send partially and need to be reconstructed</em></td></tr><tr><td><code>message.outbound</code></td><td>Message is send by the user</td></tr><tr><td><code>session.completed</code></td><td>User has filled in all necessary fields. Form session has been marked as completed</td></tr><tr><td><code>tool.called</code></td><td>Event is emitted when ever a tool is called or ended</td></tr><tr><td><code>tool.custom.event</code></td><td>Event is emitted when ever your custom event emitter tool is called</td></tr><tr><td><code>typing.started</code></td><td>Is typing is triggered by the agent</td></tr><tr><td><code>typing.stopped</code></td><td>Is typing stopped</td></tr></tbody></table>
