Connecting to Canny
Canny uses a secret API key to control access to the API. The API key is sent as a JSON body parameter named 'apiKey' in every HTTP POST request to the Canny API endpoints.
Using API Key Authentication
To authenticate with the Canny API, you need your company-level secret API key. You can find this key in your Canny account under Settings > API.
After setting the following connection properties, you are ready to connect:
- AuthScheme: Set this to APIKey.
- APIKey: Set this to your Canny company-level secret API key from the Settings > API page in your Canny dashboard.
Example connection string
Profile=C:\profiles\Canny.apip;ProfileSettings='APIKey=your-canny-api-key';
API Notes
All Canny API endpoints use HTTP POST with a JSON request body. The API key is passed as the 'apiKey' field in the JSON body of every request. GET requests are not supported by the Canny API.
Error responses from the Canny API return a JSON object with a single 'error' field containing the error message string. Canny returns HTTP 200 with an error field in the JSON body for most API-level errors.
The Canny API uses two pagination styles depending on the endpoint:
- Skip-based pagination: uses 'skip' and 'limit' parameters; a 'hasMore' field in the response indicates additional pages are available.
- Cursor-based pagination: uses 'cursor' and 'limit' parameters; 'hasNextPage' and 'cursor' fields in the response support subsequent page requests.
Available Tables
The Canny API Profile provides access to product feedback data including posts, votes, comments, users, and changelog entries across the following tables:
- Boards – Retrieve all boards in the Canny workspace. Supports retrieving a single board by Id.
- Categories – Retrieve all categories across boards or within a specific board. Supports retrieving a single category by Id and filtering by BoardId.
- ChangelogEntries – Retrieve changelog entries for the workspace. Supports filtering by entry type (fixed, new, or improved) and label IDs.
- Comments – Retrieve comments across posts. Supports retrieving a single comment by Id and filtering by author, board, company, or post.
- Companies – Retrieve companies in the workspace. Supports cursor-based pagination, searching by name, and filtering by segment.
- Groups – Retrieve groups in the workspace. Supports retrieving a single group by Id or UrlName.
- Ideas – Retrieve ideas in the workspace. Supports retrieving a single idea by Id or UrlName, and filtering by parent idea ID.
- Insights – Retrieve insights in the workspace. Supports retrieving a single insight by Id and filtering by idea ID.
- Opportunities – Retrieve opportunities linked to Canny posts and ideas, including Salesforce opportunity data.
- Posts – Retrieve posts across boards. Supports retrieving a single post by Id or UrlName, and filtering by author, board, company, status, or tags.
- StatusChanges – Retrieve status change history records for posts. Supports filtering by board ID.
- Tags – Retrieve tags for boards. Supports retrieving a single tag by Id and filtering by board ID.
- Users – Retrieve users in the workspace. Supports retrieving a single user by Id and cursor-based pagination.
- Votes – Retrieve votes in the workspace. Supports retrieving a single vote by Id and filtering by board, post, company, or user.
Important Notes
- The Canny API key is scoped to your company and is sent as a JSON body parameter named 'apiKey' in every request, not as an HTTP header.
- All Canny API endpoints use HTTP POST for data retrieval; GET requests are not supported.
- Skip-based pagination (using 'skip' and 'limit') is used by Boards, Categories, Posts, Tags, ChangelogEntries, and Opportunities endpoints.
- Cursor-based pagination (using 'cursor' and 'limit') is used by Comments, Companies, Groups, Ideas, Insights, StatusChanges, Users, and Votes endpoints.
- Error responses return HTTP 200 with an 'error' field in the JSON body rather than HTTP error status codes.
- Date fields use ISO 8601 format (yyyy-MM-dd'T'HH:mm:ss.fffZ).
API Documentation
For more information about the Canny API, see the official Canny API documentation.
Usage Examples
Retrieve all boards:
SELECT * FROM Boards;
Retrieve a specific board by Id:
SELECT * FROM Boards WHERE Id = 'board-id';
Retrieve all categories:
SELECT * FROM Categories;
Retrieve categories for a specific board:
SELECT * FROM Categories WHERE BoardId = 'board-id';
Retrieve all changelog entries:
SELECT * FROM ChangelogEntries;
Retrieve changelog entries filtered by type:
SELECT * FROM ChangelogEntries WHERE Type = 'new';
Retrieve all comments:
SELECT * FROM Comments;
Retrieve comments for a specific post:
SELECT * FROM Comments WHERE PostId = 'post-id';
Retrieve all companies:
SELECT * FROM Companies;
Retrieve companies filtered by segment:
SELECT * FROM Companies WHERE Segment = 'enterprise';
Retrieve all groups:
SELECT * FROM Groups;
Retrieve a specific group by Id:
SELECT * FROM Groups WHERE Id = 'group-id';
Retrieve all ideas:
SELECT * FROM Ideas;
Retrieve child ideas for a parent idea:
SELECT * FROM Ideas WHERE ParentId = 'parent-idea-id';
Retrieve all insights:
SELECT * FROM Insights;
Retrieve insights for a specific idea:
SELECT * FROM Insights WHERE IdeaId = 'idea-id';
Retrieve all opportunities:
SELECT * FROM Opportunities;
Retrieve all posts:
SELECT * FROM Posts;
Retrieve posts for a specific board:
SELECT * FROM Posts WHERE BoardId = 'board-id';
Retrieve posts filtered by status:
SELECT * FROM Posts WHERE Status = 'in progress';
Retrieve status change history for a specific board:
SELECT * FROM StatusChanges WHERE BoardId = 'board-id';
Retrieve all tags:
SELECT * FROM Tags;
Retrieve tags for a specific board:
SELECT * FROM Tags WHERE BoardId = 'board-id';
Retrieve all users:
SELECT * FROM Users;
Retrieve a specific user by Id:
SELECT * FROM Users WHERE Id = 'user-id';
Retrieve all votes:
SELECT * FROM Votes;
Retrieve votes for a specific post:
SELECT * FROM Votes WHERE PostId = 'post-id';
Retrieve votes cast by a specific user:
SELECT * FROM Votes WHERE UserId = 'user-id';
Connection Properties
The connection string properties are the various options that can be used to establish a connection. This section provides a complete list of the options you can configure in the connection string for this provider.
| Property | Description |
| APIKey | The secret API key from your Canny company settings dashboard. |
| AuthScheme | The scheme used for authentication. Accepted entries are APIKey or None. Allowed values are: BASIC, NONE, NTLM, OAUTH, APIKEY, OAUTH_CLIENT, OAUTH_PASSWORD |