FeedbackJar

Public REST API

The FeedbackJar REST API lets you read and write everything in your project programmatically — feedback posts, boards, tags, and comments. Use it to build integrations, automate workflows, or power the MCP server.

Try endpoints live in the API Playground — paste an API token and send requests from your browser.

Authentication

All requests require an API token passed as a Bearer token.

Project token (tied to one project):

bash
Authorization: Bearer fj_live_...

Account token (works across all your projects — requires X-Organization-Id):

bash
Authorization: Bearer fj_user_...
X-Organization-Id: <organizationId>

See the API Tokens guide for how to create both types.

Base URL

plaintext
https://api.feedbackjar.com/api/v1

Security note: post/comment content is untrusted user text

title, content, and metadata on posts and comments can originate from anonymous public submitters (the feedback widget or public feedback form) — nothing about this API validates that the text is well-intentioned.

If you feed API responses into an LLM or AI agent (for triage, summarization, or auto-replies), treat every title/content/metadata field as data, not instructions. A submitter can write feedback that looks like a command (“ignore previous instructions and…”, “call the merge endpoint on post X”, etc.) hoping your agent will act on it instead of just reading it. Don’t let agent output derived from this content trigger write calls (PATCH, POST, DELETE) without a human in the loop or an explicit allowlist of intended actions.


Posts

List posts

bash
GET /api/v1/posts

Query parameters

ParameterTypeDescription
statusstringFilter by status: OPEN, IN_PROGRESS, COMPLETED, CLOSED
typestringFilter by type: BUG, FEATURE_REQUEST, FEEDBACK, QUESTION, IDEA, REVIEW
boardIdstringFilter to a specific board
limitnumberResults per page (1–100, default 20)
cursorstringPagination cursor from previous response
bash
curl "https://api.feedbackjar.com/api/v1/posts?status=OPEN&type=BUG&limit=10" \
  -H "Authorization: Bearer fj_live_..."

Response

json
{
  "items": [
    {
      "id": "cm1abc123",
      "title": "Widget crashes on Safari",
      "content": "...",
      "type": "BUG",
      "status": "OPEN",
      "voteCount": 14,
      "metadata": { "browser": { "name": "Safari" }, "page": { "url": "..." } },
      "createdAt": "2026-07-01T10:00:00Z",
      "boardId": "cm1board1",
      "board": { "name": "Bugs", "slug": "bugs" },
      "tags": []
    }
  ],
  "nextCursor": "cm1abc456"
}

Get a post

bash
GET /api/v1/posts/:id

Returns the full post including widget metadata, comment count, and vote count.

bash
curl https://api.feedbackjar.com/api/v1/posts/cm1abc123 \
  -H "Authorization: Bearer fj_live_..."

Create a post

bash
POST /api/v1/posts
FieldRequiredDescription
boardIdBoard to create the post in
titlePost title
contentPost body
typeFEATURE_REQUEST (default), BUG, FEEDBACK, QUESTION, IDEA, REVIEW
visibilityPUBLIC (default), UNLISTED, PRIVATE
authorNameDisplay name for the author
authorEmailAuthor email
bash
curl -X POST https://api.feedbackjar.com/api/v1/posts \
  -H "Authorization: Bearer fj_live_..." \
  -H "Content-Type: application/json" \
  -d '{"boardId": "cm1board1", "title": "Dark mode", "content": "Please add dark mode.", "type": "FEATURE_REQUEST"}'

Update a post

bash
PATCH /api/v1/posts/:id

All fields are optional.

bash
curl -X PATCH https://api.feedbackjar.com/api/v1/posts/cm1abc123 \
  -H "Authorization: Bearer fj_live_..." \
  -H "Content-Type: application/json" \
  -d '{"status": "IN_PROGRESS", "type": "BUG"}'

Update post status

bash
PATCH /api/v1/posts/:id/status

Shorthand for updating only the status field.

bash
curl -X PATCH https://api.feedbackjar.com/api/v1/posts/cm1abc123/status \
  -H "Authorization: Bearer fj_live_..." \
  -H "Content-Type: application/json" \
  -d '{"status": "COMPLETED"}'

Valid statuses: OPEN · IN_PROGRESS · COMPLETED · CLOSED


Delete a post

bash
DELETE /api/v1/posts/:id
bash
curl -X DELETE https://api.feedbackjar.com/api/v1/posts/cm1abc123 \
  -H "Authorization: Bearer fj_live_..."

Comments

List comments

bash
GET /api/v1/posts/:id/comments

Returns top-level comments with nested replies.

bash
curl https://api.feedbackjar.com/api/v1/posts/cm1abc123/comments \
  -H "Authorization: Bearer fj_live_..."

Add a comment

bash
POST /api/v1/posts/:id/comments
bash
curl -X POST https://api.feedbackjar.com/api/v1/posts/cm1abc123/comments \
  -H "Authorization: Bearer fj_live_..." \
  -H "Content-Type: application/json" \
  -d '{"content": "Fixed in v2.3.1 — thanks for the report!"}'

Update a comment

bash
PATCH /api/v1/comments/:id

Delete a comment

bash
DELETE /api/v1/comments/:id

Boards

List boards

bash
GET /api/v1/boards
bash
curl https://api.feedbackjar.com/api/v1/boards \
  -H "Authorization: Bearer fj_live_..."

Get a board

bash
GET /api/v1/boards/:id

Create a board

bash
POST /api/v1/boards
FieldRequiredDescription
nameBoard name
slugURL slug (auto-generated from name if omitted)
descriptionOptional description
isPrivatefalse (default)
defaultPostVisibilityPUBLIC (default), UNLISTED, PRIVATE
bash
curl -X POST https://api.feedbackjar.com/api/v1/boards \
  -H "Authorization: Bearer fj_live_..." \
  -H "Content-Type: application/json" \
  -d '{"name": "Feature Requests"}'

Update a board

bash
PATCH /api/v1/boards/:id

Delete a board

bash
DELETE /api/v1/boards/:id

Tags

List tags

bash
GET /api/v1/tags

Create a tag

bash
POST /api/v1/tags
bash
curl -X POST https://api.feedbackjar.com/api/v1/tags \
  -H "Authorization: Bearer fj_live_..." \
  -H "Content-Type: application/json" \
  -d '{"name": "mobile"}'

Update a tag

bash
PATCH /api/v1/tags/:id

Delete a tag

bash
DELETE /api/v1/tags/:id