List posts
One state’s posts, public by default, in the board’s own order unless sort says otherwise. search matches titles and bodies.
GET
/board/postsAuthorization
AuthorizationBearer token · headerrequired`MEDIAN_KEY` from Settings under API, or an MCP OAuth access token. A key acts as the organization; a token acts as the person who approved it.
Query parameters
statestringAllowed:
pendingpublicsortstringAllowed:
trendingtopnewboardIdstringstatusIdstringsearchstringResponses
200The posts.
postsobject[]Show propertiesHide properties
Array of
objectidstringnumberintegerpathstringtitlestringexcerptstringboardIdstringstatusIdstringtagIdsstring[]statestringAllowed:
pendingpublicisSpambooleanpinnedbooleanvotesintegercommentsintegercreatedAtintegerauthorobjectShow propertiesHide properties
namestringisTeambooleanemailstring | nullhasSignalboolean401The bearer token is missing, revoked, or expired.
errorobjectShow propertiesHide properties
codestringmessagestring404Not one of yours, or not there at all.
errorobjectShow propertiesHide properties
codestringmessagestring429Too many requests. Wait the seconds in `Retry-After`. Limits depend on the plan. See [rate limits](/api/errors-and-limits#rate-limits).
errorobjectShow propertiesHide properties
codestringmessagestringRequest
curl -X GET "https://api.median.sh/v1/board/posts" \
-H "Authorization: Bearer YOUR_TOKEN"const response = await fetch("https://api.median.sh/v1/board/posts", {
method: "GET",
headers: {
"Authorization": "Bearer YOUR_TOKEN"
}
});Response
{
"posts": [
{
"id": "string",
"number": 0,
"path": "string",
"title": "string",
"excerpt": "string",
"boardId": "string",
"statusId": "string",
"tagIds": [
"string"
],
"state": "pending",
"isSpam": true,
"pinned": true,
"votes": 0,
"comments": 0,
"createdAt": 0,
"author": {
"name": "string",
"isTeam": true,
"email": "string"
},
"hasSignal": true
}
]
}{
"error": {
"code": "string",
"message": "string"
}
}{
"error": {
"code": "string",
"message": "string"
}
}{
"error": {
"code": "string",
"message": "string"
}
}