---
sidebar_position: 3
title: "🎬 Action Function"
---

Action functions allow you to write custom buttons to the message toolbar for end users to interact
with. This feature enables more interactive messaging, enabling users to grant permission before a
task is performed, generate visualizations of structured data, download an audio snippet of chats,
and many other use cases.

A scaffold of Action code can be found [in the community section](https://openwebui.com/f/hub/custom_action/).

An example of a graph visualization Action can be seen in the video below.

<p align="center">
	<a href="#">
		<img
			src="/images/pipelines/graph-viz-action.gif"
			alt="Graph Visualization Action"
		/>
	</a>
</p>

### Action

Actions are used to create a button in the Message UI (the small buttons found directly underneath individual chat messages).

Actions have a single main component called an action function. This component takes an object defining the type of action and the data being processed.

<details>
<summary>Example</summary>

```python
async def action(
        self,
        body: dict,
        __user__=None,
        __event_emitter__=None,
        __event_call__=None,
    ) -> Optional[dict]:
        print(f"action:{__name__}")

        response = await __event_call__(
            {
                "type": "input",
                "data": {
                    "title": "write a message",
                    "message": "here write a message to append",
                    "placeholder": "enter your message",
                },
            }
        )
        print(response)
```

</details>

### Example - Specifying Action Frontmatter

Each Action function can include a docstring at the top to define metadata for the button. This helps customize the display and behavior of your Action in Open WebUI.

Example of supported frontmatter fields:

- `title`: Display name of the Action.
- `author`: Name of the creator.
- `version`: Version number of the Action.
- `required_open_webui_version`: Minimum compatible version of Open WebUI.
- `icon_url (optional)`: URL or Base64 string for a custom icon.

**Base64-Encoded Example:**

```python
"""
title: Summarize Text
author: @you
version: 1.0.0
required_open_webui_version: 0.5.0
icon_url: data:image/svg+xml;base64,<IMAGE STRING>...
"""

```
