Product workflows2026-11-093 min read

Create Canny Feedback with the API

From your server, POST the required apiKey, authorID, boardID, title and details to Canny’s posts/create endpoint. Store the returned post ID for reconciliation.

Before you start: Have a private API key and the existing Canny author and board IDs. Use a controlled test board and inspect any required custom fields before writing.

Worked example: A support workflow creates one Scheduled CSV export request for a known customer. Its external ticket ID should be retained by your system so a retry does not accidentally create another post.

Step-by-step guide

01

Resolve the identities

Create or update the customer through the user endpoint if necessary and retain Canny’s returned ID. authorID is the Canny identifier, not an arbitrary application user ID.

02

Choose the destination

Fetch or inspect the board ID and verify the test board. Check its required custom fields and plan access.

03

Submit the native request

Save this example as create-feedback.mjs and run it with Node 18+ on your server after setting the three environment values. The .mjs extension enables its top-level await. Adapt the content to the actual customer request.

// Run on Node 18+ on your server. Use an existing Canny author and test board.
const response = await fetch('https://canny.io/api/v1/posts/create', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    apiKey: process.env.CANNY_API_KEY,
    authorID: process.env.CANNY_AUTHOR_ID,
    boardID: process.env.CANNY_BOARD_ID,
    title: 'Scheduled CSV export',
    details: 'Send the weekly report without a manual export.'
  })
});
const result = await response.json();
if (!response.ok || result.error) throw new Error(result.error || response.statusText);
if (!result.id) throw new Error('No post ID returned');
console.log(result.id);
04

Check the created post

Record the returned id, open that post and verify author, board, title and details. A successful HTTP response alone is not an attribution check.

05

Make retries explicit

Persist the source-to-post mapping and reconcile an uncertain response before submitting again. This example does not claim endpoint-level idempotency.

Common mistakes

Leaking the API key to a browser

The API key belongs on the server. A public frontend bundle must not contain it.

Using the application’s ID as authorID

Use the Canny user object’s ID. Keep that distinct from the userID value used to identify your own account.

Sources and verification

Based on product documentation checked on 2026-11-04. This is a documentation-based guide, not a hands-on benchmark. Features and availability can change.

Frequently asked questions

Spend less time on setup, more on decisions

Vantage connects your tools and generates specs grounded in real data. Free to start.

Try it free, no sign-up

Before you set this up, check what customers are actually asking for.

Paste call notes, support tickets or feedback. Vantage pulls out the signals and themes in about 30 seconds.

Free to start. No credit card required.

Related reading