Browse the docs

Feature requests

Read the ideas people suggest and vote on, add your own, and move them through your roadmap.

When a project turns on the widget's Ideas tab, visitors can suggest features and vote on each other's ideas. The API gives you the same board. Feature requests are on the Pro plan; on Starter these endpoints return 403 plan_upgrade_required.

Statuses

StatusMeaningOn the public board?
newSuggested by a visitor, waiting for the team to review it.No
openAccepted for voting.Yes
plannedOn the roadmap.Yes
in_progressBeing built.Yes
shippedReleased.Yes
declinedNot going to happen.No

Listing ideas

curl "https://feedbackdots.com/api/v1/feature-requests?status=open&sort=votes" \
  -H "Authorization: Bearer $FEEDBACKDOTS_API_KEY"
{
  "object": "list",
  "data": [
    {
      "object": "feature_request",
      "id": "8b7e…",
      "project_id": "1f0a…",
      "title": "Dark mode",
      "description": "Our team works late",
      "status": "open",
      "votes": 42,
      "source": "widget",
      "author": { "name": "Sam", "email": null },
      "page_url": "https://app.example.com/settings",
      "created_at": "2026-10-12T09:30:00Z",
      "updated_at": "2026-10-15T16:02:11Z"
    }
  ],
  "has_more": false,
  "next_cursor": null
}

Sort by votes (the default) or newest, and filter by project_id and status.

Adding an idea

Ideas added through the API go straight to open unless you pass a status, and are tagged "source": "api".

curl -X POST https://feedbackdots.com/api/v1/feature-requests \
  -H "Authorization: Bearer $FEEDBACKDOTS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"project_id": "PROJECT_ID", "title": "Export reports as CSV", "author_email": "lee@example.com"}'

Moving an idea along

curl -X PATCH https://feedbackdots.com/api/v1/feature-requests/IDEA_ID \
  -H "Authorization: Bearer $FEEDBACKDOTS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"status": "shipped"}'

Creating an idea fires feature_request.created and changing its status fires feature_request.status_changed, whether the change came from the widget, the dashboard or the API. A common setup is a Zap that posts to your changelog or Slack when an idea moves to shipped.