`GET /v1/orgs/{org}/proposals/{proposal_id}/comments`.
GET
/v1/orgs/{org}/proposals/{proposal_id}/comments
const url = 'https://api.updawg.net/v1/orgs/example/proposals/example/comments';const options = {method: 'GET'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.updawg.net/v1/orgs/example/proposals/example/commentsOldest first. The most recent [db::comments::PAGE] of them, with total
saying how many there are — see that constant for why it is the recent end
rather than the first page.
Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”org
required
string
Organization slug.
proposal_id
required
string
The prp_… id.
Responses
Section titled “Responses”The thread, oldest first — the most recent page of it, with total saying how many there are.
Media typeapplication/json
object
comments
required
Array<object>
object
author
required
object
email
required
string
id
required
string
name
string | null
body
required
string
id
required
string
mentions
required
Who this comment addressed, as resolved when it was written.
Always present, empty when there were none, because a portal that has to
tell null from [] will get it wrong once.
Array<object>
object
email
required
string
id
required
string
name
string | null
written_at
required
string format: date-time
total
required
Every comment on the proposal, including any outside this page.
integer format: int64
Examplegenerated
{ "comments": [ { "author": { "email": "example", "id": "example", "name": "example" }, "body": "example", "id": "example", "mentions": [ { "email": "example", "id": "example", "name": "example" } ], "written_at": "2026-04-15T12:00:00Z" } ], "total": 1}No session.
Media typeapplication/json
object
detail
string | null
status
required
integer format: int32
title
required
string
type
required
string
Examplegenerated
{ "detail": "example", "status": 1, "title": "example", "type": "example"}Not permitted for this role.
Media typeapplication/json
object
detail
string | null
status
required
integer format: int32
title
required
string
type
required
string
Examplegenerated
{ "detail": "example", "status": 1, "title": "example", "type": "example"}No such proposal here.
Media typeapplication/json
object
detail
string | null
status
required
integer format: int32
title
required
string
type
required
string
Examplegenerated
{ "detail": "example", "status": 1, "title": "example", "type": "example"}Over the organization’s request limit. Retry-After says when to try again; RateLimit-Limit is the burst.
Media typeapplication/json
object
detail
string | null
status
required
integer format: int32
title
required
string
type
required
string
Examplegenerated
{ "detail": "example", "status": 1, "title": "example", "type": "example"}