Ideas
Ideas are feedback or suggestions submitted by customers to your Frill account. Each idea can be assigned a Status and categorized under multiple Topics.
Idea object
Ideas have the following fields
idx string
A unique identifier for the idea
name string
The name of the idea
slug string
The URL slug of the idea
url string
Direct link to the idea on the public board
excerpt string
A short excerpt or summary of the idea
description string
The text description of the idea (legacy field, use content fields for structured data)
content array
Structured content as a JSON array (similar to Slate.js/ProseMirror format)
content_html string
Content rendered as HTML
content_markdown string
Content rendered as Markdown
cover_image string
Url of the image displayed as the cover on the Roadmap view
vote_count number
Number of votes this idea has received
comment_count number
Number of comments on this idea
note_count number
Number of internal notes on this idea
is_pinned boolean
Has the idea been pinned to the top
is_bug boolean
Denotes if this idea is a bug
is_archived boolean
Denotes if this idea has been archived
is_completed boolean
Denotes if this idea is considered completed / finished
show_in_roadmap boolean
Should the idea be displayed in the Roadmap view
approval_status string
The approval status of the idea: approved|needs-approval|rejected
priority_score number
The computed composite prioritization score (0 when the idea has not been prioritized — see is_prioritized)
priority_score_normalized number
The prioritization score normalized to a 0-100 scale (relative to the company's maximum possible benefit score)
priority_score_benefits number
The benefit component of the prioritization score
priority_score_costs number
The cost component of the prioritization score
is_prioritized boolean
Whether every required prioritization factor has been scored for this idea
priorities object
The idea's raw 0-10 score for each prioritization factor, keyed by the factor's company_priority idx (see Prioritization below)
created_at string
The date & time the idea was created in UTC timezone
updated_at string
The date & time the idea was last updated (UTC timezone)
author object
Author of the idea
status object
Status of the idea
topics array
Topics associated with the idea
attachments array
Files and images attached to this idea
Prioritization
Ideas carry prioritization data so you can pull priority scores into your own tools instead of only sorting by votes.
Each idea returns a composite
priority_score(pluspriority_score_normalized,priority_score_benefitsandpriority_score_costs), and aprioritiesmap of the raw 0-10 score for each factor, keyed by that factor'scompany_priorityidx.The factor definitions (name, benefit/cost, weight) are returned once per response in
meta.company_priorities— use each factor'sidxto interpret the per-ideaprioritiesmap. Thevotesfactor, when configured, is derived from the idea's votes and included in the map.is_prioritizedistrueonly when every required factor has been scored. Unprioritized ideas report apriority_scoreof0.On
GET /ideasyou can sort bypriority_score(sortBy=priority_score) and filter by prioritization state withis_prioritized(truefor fully-prioritized ideas,falsefor those still needing prioritization).
Endpoints
You can use the following endpoints to manage Ideas
Returns a list of ideas
API key in Authorization header with Bearer prefix (recommended)
Limits the number of items on a page
20The after cursor - used for pagination
The field to sort by
created_atPossible values: The sort direction
DESCPossible values: Filter to ideas in any of these statuses (OR semantics across the array). Idxs not belonging to your company are silently dropped.
["status_abcd1234"]Filter to ideas tagged with any of these topics (OR semantics). Idxs not belonging to your company are silently dropped.
Filter to ideas in a single board. An idx not belonging to your company is silently dropped.
Filter by prioritization state. Pass false to return only unprioritized ideas (those still needing prioritization), or true for fully-prioritized ideas.
Successfully returned a list of ideas
Invalid request
GET /v1/ideas HTTP/1.1
Host: api.frill.co
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"data": [
{
"idx": "idea_abcd1234",
"name": "New idea",
"slug": "new-idea",
"url": "https://feedback.example.com/board/new-idea",
"excerpt": "A brief summary of this idea",
"description": "This is a new idea from a customer",
"content": [
{
"type": "paragraph",
"children": [
{
"text": "This is a new idea from a customer"
}
]
}
],
"content_html": "<p>This is a new idea from a customer</p>",
"content_markdown": "This is a new idea from a customer",
"cover_image": "https://example.com/example.jpg",
"vote_count": 1,
"comment_count": 1,
"note_count": 1,
"is_pinned": true,
"is_bug": true,
"is_archived": true,
"is_completed": true,
"show_in_roadmap": true,
"approval_status": "approved",
"priority_score": 4200,
"priority_score_normalized": 72,
"priority_score_benefits": 21,
"priority_score_costs": 0.5,
"is_prioritized": true,
"priorities": {
"comp_priority_a1b2c3": 8,
"comp_priority_d4e5f6": 6,
"comp_priority_g7h8i9": 7,
"comp_priority_j0k1l2": 3
},
"created_at": "text",
"updated_at": "text",
"author": {
"idx": "user_abcd1234",
"name": "John Smith",
"avatar": "https://example.com/example.jpg"
},
"status": {
"idx": "status_abcd1234",
"name": "Completed",
"color": "#6392D9"
},
"topics": [
{
"idx": "topic_abcd1234",
"name": "New feature"
}
],
"attachments": [
{
"idx": "attachment_abcd1234",
"name": "screenshot.png",
"url": "https://cdn.frill.co/files/example.png",
"type": "image/png",
"created_at": "text",
"updated_at": "text"
}
]
}
],
"pagination": {
"total": 10,
"before": "before-cursor",
"after": "after-cursor"
},
"meta": {
"company_priorities": [
{
"idx": "comp_priority_a1b2c3",
"name": "Reach",
"type": "votes",
"factor": "benefit",
"weight": 1
}
]
}
}Full-text search across idea names and descriptions. Uses Elasticsearch when available, otherwise falls back to a database query.
API key in Authorization header with Bearer prefix (recommended)
Free-text search string (preferred). Either query or term is required.
Deprecated alias for query. Use query for new integrations.
Limits the number of items on a page
20The after cursor - used for pagination
Successfully returned a list of ideas
Invalid request
Invalid request
GET /v1/ideas/search HTTP/1.1
Host: api.frill.co
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"data": [
{
"idx": "idea_abcd1234",
"name": "New idea",
"slug": "new-idea",
"url": "https://feedback.example.com/board/new-idea",
"excerpt": "A brief summary of this idea",
"description": "This is a new idea from a customer",
"content": [
{
"type": "paragraph",
"children": [
{
"text": "This is a new idea from a customer"
}
]
}
],
"content_html": "<p>This is a new idea from a customer</p>",
"content_markdown": "This is a new idea from a customer",
"cover_image": "https://example.com/example.jpg",
"vote_count": 1,
"comment_count": 1,
"note_count": 1,
"is_pinned": true,
"is_bug": true,
"is_archived": true,
"is_completed": true,
"show_in_roadmap": true,
"approval_status": "approved",
"priority_score": 4200,
"priority_score_normalized": 72,
"priority_score_benefits": 21,
"priority_score_costs": 0.5,
"is_prioritized": true,
"priorities": {
"comp_priority_a1b2c3": 8,
"comp_priority_d4e5f6": 6,
"comp_priority_g7h8i9": 7,
"comp_priority_j0k1l2": 3
},
"created_at": "text",
"updated_at": "text",
"author": {
"idx": "user_abcd1234",
"name": "John Smith",
"avatar": "https://example.com/example.jpg"
},
"status": {
"idx": "status_abcd1234",
"name": "Completed",
"color": "#6392D9"
},
"topics": [
{
"idx": "topic_abcd1234",
"name": "New feature"
}
],
"attachments": [
{
"idx": "attachment_abcd1234",
"name": "screenshot.png",
"url": "https://cdn.frill.co/files/example.png",
"type": "image/png",
"created_at": "text",
"updated_at": "text"
}
]
}
],
"pagination": {
"total": 10,
"before": "before-cursor",
"after": "after-cursor"
},
"meta": {
"company_priorities": [
{
"idx": "comp_priority_a1b2c3",
"name": "Reach",
"type": "votes",
"factor": "benefit",
"weight": 1
}
]
}
}Create a new idea
API key in Authorization header with Bearer prefix (recommended)
A unique identifier for the idea author
follower_abcd1234The name of the idea
New ideaThe text description of the idea
This is a new idea from a customerA unique identifier for the idea status
status_abcd1234array of unique identifiers for the idea topics
Has the idea been pinned to the top
Denotes if this idea has been archived
Should the idea be displayed in the Roadmap view
The approval status of the idea. When creating an idea via REST API, you can optionally set this value.
needs-approvalPossible values: Return idea
Invalid request
POST /v1/ideas HTTP/1.1
Host: api.frill.co
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 244
{
"author_idx": "follower_abcd1234",
"name": "New idea",
"description": "This is a new idea from a customer",
"status_idx": "status_abcd1234",
"topic_idxs": [],
"is_pinned": true,
"is_archived": true,
"show_in_roadmap": true,
"approval_status": "needs-approval"
}{
"data": {
"idx": "idea_abcd1234",
"name": "New idea",
"slug": "new-idea",
"url": "https://feedback.example.com/board/new-idea",
"excerpt": "A brief summary of this idea",
"description": "This is a new idea from a customer",
"content": [
{
"type": "paragraph",
"children": [
{
"text": "This is a new idea from a customer"
}
]
}
],
"content_html": "<p>This is a new idea from a customer</p>",
"content_markdown": "This is a new idea from a customer",
"cover_image": "https://example.com/example.jpg",
"vote_count": 1,
"comment_count": 1,
"note_count": 1,
"is_pinned": true,
"is_bug": true,
"is_archived": true,
"is_completed": true,
"show_in_roadmap": true,
"approval_status": "approved",
"priority_score": 4200,
"priority_score_normalized": 72,
"priority_score_benefits": 21,
"priority_score_costs": 0.5,
"is_prioritized": true,
"priorities": {
"comp_priority_a1b2c3": 8,
"comp_priority_d4e5f6": 6,
"comp_priority_g7h8i9": 7,
"comp_priority_j0k1l2": 3
},
"created_at": "text",
"updated_at": "text",
"author": {
"idx": "user_abcd1234",
"name": "John Smith",
"avatar": "https://example.com/example.jpg"
},
"status": {
"idx": "status_abcd1234",
"name": "Completed",
"color": "#6392D9"
},
"topics": [
{
"idx": "topic_abcd1234",
"name": "New feature"
}
],
"attachments": [
{
"idx": "attachment_abcd1234",
"name": "screenshot.png",
"url": "https://cdn.frill.co/files/example.png",
"type": "image/png",
"created_at": "text",
"updated_at": "text"
}
]
},
"meta": {
"company_priorities": [
{
"idx": "comp_priority_a1b2c3",
"name": "Reach",
"type": "votes",
"factor": "benefit",
"weight": 1
}
]
}
}Get an Idea
API key in Authorization header with Bearer prefix (recommended)
IDX or Slug of the Idea
Return idea
Invalid request
GET /v1/ideas/{ideaIdxOrSlug} HTTP/1.1
Host: api.frill.co
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"data": {
"idx": "idea_abcd1234",
"name": "New idea",
"slug": "new-idea",
"url": "https://feedback.example.com/board/new-idea",
"excerpt": "A brief summary of this idea",
"description": "This is a new idea from a customer",
"content": [
{
"type": "paragraph",
"children": [
{
"text": "This is a new idea from a customer"
}
]
}
],
"content_html": "<p>This is a new idea from a customer</p>",
"content_markdown": "This is a new idea from a customer",
"cover_image": "https://example.com/example.jpg",
"vote_count": 1,
"comment_count": 1,
"note_count": 1,
"is_pinned": true,
"is_bug": true,
"is_archived": true,
"is_completed": true,
"show_in_roadmap": true,
"approval_status": "approved",
"priority_score": 4200,
"priority_score_normalized": 72,
"priority_score_benefits": 21,
"priority_score_costs": 0.5,
"is_prioritized": true,
"priorities": {
"comp_priority_a1b2c3": 8,
"comp_priority_d4e5f6": 6,
"comp_priority_g7h8i9": 7,
"comp_priority_j0k1l2": 3
},
"created_at": "text",
"updated_at": "text",
"author": {
"idx": "user_abcd1234",
"name": "John Smith",
"avatar": "https://example.com/example.jpg"
},
"status": {
"idx": "status_abcd1234",
"name": "Completed",
"color": "#6392D9"
},
"topics": [
{
"idx": "topic_abcd1234",
"name": "New feature"
}
],
"attachments": [
{
"idx": "attachment_abcd1234",
"name": "screenshot.png",
"url": "https://cdn.frill.co/files/example.png",
"type": "image/png",
"created_at": "text",
"updated_at": "text"
}
]
},
"meta": {
"company_priorities": [
{
"idx": "comp_priority_a1b2c3",
"name": "Reach",
"type": "votes",
"factor": "benefit",
"weight": 1
}
]
}
}Update an Idea
API key in Authorization header with Bearer prefix (recommended)
IDX of the Idea
A unique identifier for the idea author
follower_abcd1234The name of the idea
New ideaThe text description of the idea
This is a new idea from a customerA unique identifier for the idea status
status_abcd1234array of unique identifiers for the idea topics
Has the idea been pinned to the top
Denotes if this idea has been archived
Should the idea be displayed in the Roadmap view
The approval status of the idea. When creating an idea via REST API, you can optionally set this value.
needs-approvalPossible values: Return idea
Invalid request
POST /v1/ideas/{ideaIdx} HTTP/1.1
Host: api.frill.co
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 244
{
"author_idx": "follower_abcd1234",
"name": "New idea",
"description": "This is a new idea from a customer",
"status_idx": "status_abcd1234",
"topic_idxs": [],
"is_pinned": true,
"is_archived": true,
"show_in_roadmap": true,
"approval_status": "needs-approval"
}{
"data": {
"idx": "idea_abcd1234",
"name": "New idea",
"slug": "new-idea",
"url": "https://feedback.example.com/board/new-idea",
"excerpt": "A brief summary of this idea",
"description": "This is a new idea from a customer",
"content": [
{
"type": "paragraph",
"children": [
{
"text": "This is a new idea from a customer"
}
]
}
],
"content_html": "<p>This is a new idea from a customer</p>",
"content_markdown": "This is a new idea from a customer",
"cover_image": "https://example.com/example.jpg",
"vote_count": 1,
"comment_count": 1,
"note_count": 1,
"is_pinned": true,
"is_bug": true,
"is_archived": true,
"is_completed": true,
"show_in_roadmap": true,
"approval_status": "approved",
"priority_score": 4200,
"priority_score_normalized": 72,
"priority_score_benefits": 21,
"priority_score_costs": 0.5,
"is_prioritized": true,
"priorities": {
"comp_priority_a1b2c3": 8,
"comp_priority_d4e5f6": 6,
"comp_priority_g7h8i9": 7,
"comp_priority_j0k1l2": 3
},
"created_at": "text",
"updated_at": "text",
"author": {
"idx": "user_abcd1234",
"name": "John Smith",
"avatar": "https://example.com/example.jpg"
},
"status": {
"idx": "status_abcd1234",
"name": "Completed",
"color": "#6392D9"
},
"topics": [
{
"idx": "topic_abcd1234",
"name": "New feature"
}
],
"attachments": [
{
"idx": "attachment_abcd1234",
"name": "screenshot.png",
"url": "https://cdn.frill.co/files/example.png",
"type": "image/png",
"created_at": "text",
"updated_at": "text"
}
]
},
"meta": {
"company_priorities": [
{
"idx": "comp_priority_a1b2c3",
"name": "Reach",
"type": "votes",
"factor": "benefit",
"weight": 1
}
]
}
}Delete an Idea
API key in Authorization header with Bearer prefix (recommended)
IDX of the Idea
Request was successful
Request was successfulInvalid request
DELETE /v1/ideas/{ideaIdx} HTTP/1.1
Host: api.frill.co
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"success": true,
"message": "Request was successful"
}Last updated