> ## Documentation Index
> Fetch the complete documentation index at: https://botpress.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Canny

> Add a bot to Canny using the official integration.

{/* vale on */}

[Open in Hub](https://studio.botpress.cloud/home?exploreHub=1\&hubItemId=intver_01KMZAE3W37N658H69Y6ZPSREQ)
*v0.2.3*

The official Canny integration allows your bot to manage posts and comments in your Canny feature request boards.

## Setup

> [!NOTE]
>
> You will need:
>
> * A [published bot](https://botpress.com/docs/get-started/quick-start.md)
> * A [Canny account](https://canny.io/register)

**1. Install the integration in Botpress**

First, install the integration to your bot:

1. In Botpress Studio, select **Explore Hub** in the upper-right corner.
2. Search for the **Canny** integration, then select **Install Integration**.

In the **Configuration** menu, you should see one field: **API key**. Leave it empty for now—you'll come back to it after getting your Canny API key.

**2. Get your Canny API key**

Next, get your Canny API key:

1. [Log in to your Canny dashboard](https://canny.io/login).
2. In the top-right corner, select your profile icon and go to **Settings**.
3. From the left sidebar, go to **API**.
4. Copy your API key.

**3. Configure the integration in Botpress**

Now, you can finish setting up the integration in Botpress:

1. In the integration's **API Key** field, paste your Canny API key.
2. Select **Save Configuration**.

> [!TIP]
>
> Your Canny integration is ready. You can use the integration's [Cards](#cards) to interact with your Canny account.

## Cards

{/* vale off */}

Here's a reference for all [Cards](https://botpress.com/docs/studio/concepts/cards/introduction.md) available with the integration:

### Create Comment

Create a new comment on a post

**input** `object`

**authorId** `string`

The author Id (defaults to Botpress user if not provided)

**postId** `string` *required*

The post Id

**value** `string` *required*

Comment text

**parentId** `string`

Parent comment Id for replies

**imageURLs** `array`

Image URLs

**internal** `boolean`

Whether this is an internal comment

**shouldNotifyVoters** `boolean`

Notify voters

**createdAt** `string`

Created timestamp

**output** `object`

**commentId** `string` *required*

The ID of the created comment

### Create or Update User

Create a new user or update an existing one in Canny

**input** `object`

**name** `string` *required*

User display name (required, 1-50 characters)

**userId** `string`

Your internal user Id

**email** `string`

User email address

**avatarURL** `string`

User avatar URL

**alias** `string`

User alias

**created** `string`

User creation timestamp

**customFields** `object`

Custom fields

**output** `object`

**user** `object` *required*

The created or updated user object

**id** `string` *required*

User ID

**name** `string` *required*

User display name

**email** `string` *required*

User email address

**avatarURL** `string`

User avatar URL

**userId** `string` *required*

Your internal user ID

**isAdmin** `boolean` *required*

Whether the user is an admin

**created** `string` *required*

User creation timestamp

### Create Post

Create a new post in Canny

**input** `object`

**authorId** `string`

The author Id (defaults to Botpress user if not provided)

**boardId** `string` *required*

The board Id

**title** `string` *required*

Post title

**details** `string` *required*

Post details

**byId** `string`

Admin Id who created the post

**categoryId** `string`

Category Id

**ownerId** `string`

Owner Id

**imageURLs** `array`

Image URLs

**eta** `string`

ETA (MM/YYYY)

**etaPublic** `boolean`

Make ETA public

**customFields** `object`

Custom fields

**output** `object`

**postId** `string` *required*

The ID of the created post

### Delete Comment

Delete a comment

**input** `object`

**commentId** `string` *required*

The comment Id to delete

**output** `object`

This Card has no output.

### Delete Post

Delete a post

**input** `object`

**postId** `string` *required*

The post Id to delete

**output** `object`

This Card has no output.

### Get Comment

Retrieve a comment by ID

**input** `object`

**commentId** `string` *required*

The comment Id

**output** `object`

**comment** `object` *required*

The retrieved comment object

**id** `string` *required*

Comment ID

**value** `string` *required*

Comment text

**authorName** `string` *required*

Name of the comment author

**authorEmail** `string` *required*

Email of the comment author

**postTitle** `string` *required*

Title of the associated post

**postId** `string` *required*

ID of the associated post

**created** `string` *required*

Creation timestamp

**internal** `boolean` *required*

Whether this is an internal comment

**likeCount** `number` *required*

Number of likes

### Get Post

Retrieve a post by ID

**input** `object`

**postId** `string` *required*

The post Id

**boardId** `string`

The board Id

**output** `object`

**post** `object` *required*

The retrieved post object

**id** `string` *required*

Post ID

**title** `string` *required*

Post title

**details** `string`

Post details

**authorName** `string`

Name of the post author

**authorEmail** `string`

Email of the post author

**boardName** `string` *required*

Name of the board

**status** `string` *required*

Post status

**score** `number` *required*

Post score

**commentCount** `number` *required*

Number of comments

**created** `string` *required*

Creation timestamp

**url** `string` *required*

Post URL

### List Boards

List all boards in your Canny workspace

**input** `object`

**limit** `number`

Number of boards to fetch

**nextToken** `number`

Token for pagination - skip this many boards

**output** `object`

**boards** `array` *required*

Array of boards

**array item properties**

**id** `string` *required*

Board ID

**name** `string` *required*

Board name

**postCount** `number` *required*

Number of posts in the board

**url** `string` *required*

Board URL

**created** `string` *required*

Board creation timestamp

**nextToken** `number`

Token for next page if more boards available

### List Comments

List comments with optional filters

**input** `object`

**postId** `string`

Filter comments by post Id

**authorId** `string`

Filter comments by author Id

**boardId** `string`

Filter comments by board Id

**companyId** `string`

Filter comments by company Id

**limit** `number`

Number of comments to return

**nextToken** `number`

Token for pagination - skip this many comments

**output** `object`

**comments** `array` *required*

Array of comments

**array item properties**

**id** `string` *required*

Comment ID

**value** `string` *required*

Comment text

**authorName** `string` *required*

Name of the comment author

**authorEmail** `string` *required*

Email of the comment author

**postTitle** `string` *required*

Title of the associated post

**postId** `string` *required*

ID of the associated post

**created** `string` *required*

Creation timestamp

**internal** `boolean` *required*

Whether this is an internal comment

**likeCount** `number` *required*

Number of likes

**nextToken** `number`

Token for next page if more comments available

### List Posts

List posts with optional filters

**input** `object`

**boardId** `string`

Filter posts by board Id

**authorId** `string`

Filter posts by author Id

**companyId** `string`

Filter posts by company Id

**tagIds** `array`

Filter posts by tag Ids

**limit** `number`

Number of posts to return

**nextToken** `number`

Token for pagination - skip this many posts

**search** `string`

Search term to filter posts

**sort** `enum\<string\>`

Sort order for posts

Available options: `newest`, `oldest`, `relevance`, `score`, `statusChanged`, `trending`

**status** `string`

Filter posts by status

**output** `object`

**posts** `array` *required*

Array of posts

**array item properties**

**id** `string` *required*

Post ID

**title** `string` *required*

Post title

**details** `string`

Post details

**authorName** `string`

Name of the post author

**authorEmail** `string`

Email of the post author

**boardName** `string` *required*

Name of the board

**status** `string` *required*

Post status

**score** `number` *required*

Post score

**commentCount** `number` *required*

Number of comments

**created** `string` *required*

Creation timestamp

**url** `string` *required*

Post URL

**nextToken** `number`

Token for next page if more posts available

### List Users

List all users in your Canny workspace with pagination

**input** `object`

**limit** `number`

Number of users to fetch (1-100, defaults to 10)

**nextToken** `string`

Token for pagination from previous request

**output** `object`

**users** `array` *required*

Array of users

**array item properties**

**id** `string` *required*

User ID

**name** `string` *required*

User display name

**email** `string` *required*

User email address

**avatarURL** `string`

User avatar URL

**userId** `string` *required*

Your internal user ID

**isAdmin** `boolean` *required*

Whether the user is an admin

**created** `string` *required*

User creation timestamp

**nextToken** `string`

Token for next page if more users available

### Update Post

Update an existing post

**input** `object`

**postId** `string` *required*

The post Id

**title** `string`

Updated post title

**details** `string`

Updated post details

**eta** `string`

Updated ETA (MM/YYYY)

**etaPublic** `boolean`

Make ETA public

**imageURLs** `array`

Updated image URLs

**customFields** `object`

Updated custom fields

**output** `object`

This Card has no output.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.