A valid request URL is required to generate request examples{
"posts": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"title": "<string>",
"body": "<string>",
"status": "open",
"votes": 123,
"created_at": "2023-11-07T05:31:56Z"
}
],
"statuses": [
"<string>"
],
"max_age_seconds": 123,
"generated_at": "2023-11-07T05:31:56Z"
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}The public roadmap
What your users asked for, what you answered, and how many people are behind each one. Addressed by publishable key and public, in the same family as GET /v1/changelog/{publishable_key} and the help center: read it, cache it, render it — it is what a /roadmap page on your own site is made of.
It carries a plain vote count and never a weight. The panel ranks the same posts by the revenue of the customers behind their voters; that number is computed on the staff read alone, out of a query that joins to nothing holding money, so the board a visitor sees never says which requests came from your largest accounts.
It does not say who asked, either. That is your data about your own user, and a public board carrying it would publish an address book one feature request at a time.
Merged duplicates are absent — a merged post is a pointer. declined posts are present: a board that hides its refusals is a board where the same idea arrives every month, and the refusal is the thing you already spent the effort of deciding.
body is plain text. It was typed into a textarea by one of your users, so render it as text — treating it as markup means one person’s asterisks becoming somebody else’s emphasis on a page under your name.
Cache-Control: public, max-age=60, stale-while-revalidate=600, stale-if-error=600. When you cannot fetch it, keep the copy you have.
Bounded to 500 posts. Deliberately not paginated: a cursor on a cacheable document multiplies the cache entries by the number of positions a reader can be in.
Rate limited to 240 requests per minute per IP.
A valid request URL is required to generate request examples{
"posts": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"title": "<string>",
"body": "<string>",
"status": "open",
"votes": 123,
"created_at": "2023-11-07T05:31:56Z"
}
],
"statuses": [
"<string>"
],
"max_age_seconds": 123,
"generated_at": "2023-11-07T05:31:56Z"
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}{
"error": {
"code": "forbidden",
"message": "your role does not allow this action"
}
}Path Parameters
uk_pk_live_… or uk_pk_test_…. Posts are per environment, like the key.
Response
The live posts, most-wanted first.
Show child attributes
Show child attributes
The vocabulary, in the order a post travels it — so a board can draw its columns without hard-coding them.
The window this document was built with, stated in the body too: a client that could not refresh has to decide what to do, and that decision needs the number.