FigVote

API docs

A read-only REST API for your projects, boards and feedback posts with their votes and status. It can’t create, edit or delete anything. Included in the Solo and Pro plans. Base URL: https://figvote.app/api/v1

Authentication

Create a key in Dashboard → Account → API keys. The key is shown once: we only keep a hash of it, so copy it somewhere safe. Send it in the X-API-KEY header (Authorization: Bearer <key> works too). A key reads only the projects of the account that created it. Revoke a key on the same page: requests with it stop working right away.

curl https://figvote.app/api/v1/posts -H "X-API-KEY: fv_your_key"
  • 401 missing, unknown or revoked key.
  • 402 the account has no Solo or Pro plan.
  • 429 more than 60 requests in a minute with one key (retry after the Retry-After seconds).
  • 400 a bad query parameter (the error field says which), 404 a project or board that isn’t yours.

GET/api/v1/projects

Your projects, oldest first, each with its boards (id, slug, name, visibility).

{ "data": [{ "id": "0b9e…", "slug": "acme", "name": "Acme", "url": "https://figvote.app/acme",
            "created_at": "…", "boards": [{ "id": "51aa…", "slug": "features", "name": "Feature requests", "visibility": "public" }] }] }

GET/api/v1/posts

Posts of your projects, newest first. Query parameters, all optional:

  • project: a project id or slug (default: all your projects).
  • board: a board id or slug.
  • status: open, planned, in_progress, shipped, closed or all (default).
  • include_merged: true to also list duplicates merged into another post (left out by default: their votes moved to that post).
  • since: an ISO 8601 date, only posts created after it.
  • limit: 1 to 100 (default 25). When a page is full, pass its next_before value as before to get the next one.
{
  "data": [
    {
      "id": "6f1c…",
      "number": 42,
      "url": "https://figvote.app/acme/p/42",
      "project": { "id": "0b9e…", "slug": "acme", "name": "Acme" },
      "board": { "id": "51aa…", "slug": "features", "name": "Feature requests", "visibility": "public" },
      "title": "Dark mode",
      "body": "Please add a dark theme.",
      "status": "planned",
      "votes": 37,
      "legacy_votes": 12,
      "approved": true,
      "pinned": false,
      "merged_into": null,
      "status_changed_at": "2026-10-12T10:02:11.000Z",
      "created_at": "2026-10-01T09:30:00.000Z",
      "updated_at": "2026-10-12T10:02:11.000Z"
    }
  ],
  "next_before": null
}

votes is the count shown on the board, including legacy_votes imported from another tool. Posts waiting for your approval are listed with approved: false. Never in a response: who wrote a post, who voted, or an email.