List channel posts
List a community channel's posts — same filters, sorting, and pagination as the dashboard, minus a "my posts" filter (there's no default viewer to filter by).
userId does not filter which posts come back — see its description below for what it does do: gate access, and add that member's own isLiked/votedOption to every post.
Fails with a 400 if the Community feature is not enabled for this creator.
Authorization
bearer In: header
Path Parameters
Id of the community channel to list posts from
Query Parameters
Number of posts per page. Each post triggers several lookups (author, channels, poll, repost, shoutout) to assemble its full details, so this is capped well below the generic default.
1 <= value <= 100Page number of the results
1 <= valueId of a specific community member (fan). It does not filter which posts come back — every post in the channel is still returned (subject to the other filters below) — it only gates access and adds personalization. Omit it to get every post in the channel (the full creator/admin view), regardless of that channel's visibility, with no isLiked/votedOption on any post. Pass it to require that this member actually has access to the channel (an active subscription to a mango in the channel's mangoArr, or a badge in badgeArr) before returning anything — a member without access gets a 403, and a hidden channel is always treated as inaccessible for a given member — and each returned post then also carries that member's own isLiked/votedOption.
Predefined post filter. posts_from_creator: only posts authored by the channel's creator. posts_from_subscribers: every post EXCEPT those authored by the creator (i.e. posts from members). Combines with postedBy/excludePostedBy if both are given. Omit for no predefined filter.
"posts_from_subscribers" | "posts_from_creator"User ids to filter by author — only posts authored by one of these users are returned. Pass as repeated query params (postedBy=a&postedBy=b) or a single comma-separated value (postedBy=a,b) — both work.
User ids to exclude by author — posts authored by any of these users are dropped from the result. Pass as repeated query params (excludePostedBy=a&excludePostedBy=b) or a single comma-separated value (excludePostedBy=a,b) — both work.
Filter to only pinned (true) or only unpinned (false) posts. Omit to get every post, pinned ones first.
How to sort the results. latest (default): most recently scheduled first. oldest: least recently scheduled first. most_popular: ranked by an all-time engagement score (3x likes + 3x comments + 2x views + reposts). trending_now: the same engagement score, but computed only from activity in the last 24 hours. In every case, pinned posts are always listed before unpinned ones.
"latest""latest" | "oldest" | "trending_now" | "most_popular"Header Parameters
Host name of the dashboard, ex: mydomain.tagmango.com
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://api-prod-new.tagmango.com/api/v1/external/community/channels/61e97c146cf2b4d8c68f3a40/posts" \ -H "x-whitelabel-host: string"{
"posts": [
{
"_id": "string",
"postedBy": "string",
"channel": "string",
"isPinned": false,
"isHidden": false,
"pinnedNumber": 0,
"pinnedAt": "2019-08-24T14:15:22Z",
"totalViews": 0,
"totalLikes": 0,
"totalComments": 0,
"totalParentComments": 0,
"totalRepost": 0,
"totalPollVotes": 0,
"pollVotesPerOption": {
"1": 12,
"2": 8
},
"scheduleAt": "2019-08-24T14:15:22Z",
"updatedAt": "2019-08-24T14:15:22Z",
"createdAt": "2019-08-24T14:15:22Z",
"post": {
"_id": "string",
"creator": "string",
"caption": "string",
"layoutType": "string",
"mediaContent": [
{
"_id": "string",
"contentType": "string",
"contentUrl": "string",
"asset": "string",
"thumbnail": "string",
"compressedVideoUrl": "string",
"compressedVideoUrlDash": "string",
"compressedVideoUrlHls": "string",
"isCompressDone": true,
"isCompressError": true,
"compressErrorDescription": "string",
"compressErrorDescriptionWarnings": "string",
"transcodingJob": "string",
"fileKey": "string",
"fileSize": 0,
"fileName": "string"
}
],
"postRefContentTypes": [
"string"
],
"postSettings": {
"disableComment": false,
"hideComment": false,
"hideLikes": false
},
"isDeleted": true,
"scheduleAt": "2019-08-24T14:15:22Z",
"updatedAt": "2019-08-24T14:15:22Z",
"createdAt": "2019-08-24T14:15:22Z",
"channels": [
{
"_id": "61e97c146cf2b4d8c68f3a40",
"name": "My Awesome Channel",
"description": "This channel is about...",
"communityProfilePicture": "https://example.com/image.jpg",
"communityProfilePictureType": "image"
}
],
"postedBy": {
"_id": "6659ca9e5f2acb7abfdcd8fd",
"name": "John Doe",
"profilePicUrl": "https://linktoprofilepic.com/pic.jpg",
"isBlockedFromCommunityEngagement": false,
"isModerator": true
},
"poll": {
"_id": "string",
"creator": "string",
"question": "string",
"description": "string",
"pollOptions": [
{
"optionContent": "string",
"optionNumber": 0,
"optionId": "string"
}
],
"pollStartAt": "2019-08-24T14:15:22Z",
"pollEndAt": "2019-08-24T14:15:22Z",
"isResultVisibleToMembers": true,
"allowVoteChange": true,
"createdAt": "2019-08-24T14:15:22Z",
"updatedAt": "2019-08-24T14:15:22Z"
},
"postRef": {
"_id": "string",
"creator": "string",
"caption": "string",
"layoutType": "string",
"mediaContent": [
{
"_id": "string",
"contentType": "string",
"contentUrl": "string",
"asset": "string",
"thumbnail": "string",
"compressedVideoUrl": "string",
"compressedVideoUrlDash": "string",
"compressedVideoUrlHls": "string",
"isCompressDone": true,
"isCompressError": true,
"compressErrorDescription": "string",
"compressErrorDescriptionWarnings": "string",
"transcodingJob": "string",
"fileKey": "string",
"fileSize": 0,
"fileName": "string"
}
],
"postRefContentTypes": [
"string"
],
"postSettings": {
"disableComment": false,
"hideComment": false,
"hideLikes": false
},
"isDeleted": true,
"scheduleAt": "2019-08-24T14:15:22Z",
"updatedAt": "2019-08-24T14:15:22Z",
"createdAt": "2019-08-24T14:15:22Z",
"channels": [
{
"_id": "61e97c146cf2b4d8c68f3a40",
"name": "My Awesome Channel",
"description": "This channel is about...",
"communityProfilePicture": "https://example.com/image.jpg",
"communityProfilePictureType": "image"
}
],
"postedBy": {
"_id": "6659ca9e5f2acb7abfdcd8fd",
"name": "John Doe",
"profilePicUrl": "https://linktoprofilepic.com/pic.jpg",
"isBlockedFromCommunityEngagement": false,
"isModerator": true
},
"tqConnectShoutout": {
"createdAt": "2024-11-04T13:05:43.799Z",
"updatedAt": "2024-11-04T13:05:43.799Z",
"_id": "507f1f77bcf86cd799439011",
"creator": "507f1f77bcf86cd799439012",
"description": "Outstanding performance on the Q3 project! Your innovative approach to solving the technical challenges and your dedication to helping the team meet deadlines was truly exceptional. Thank you for being such an inspiring colleague.",
"category": {
"id": "professional",
"name": "Professional Excellence",
"logo": "💼"
},
"coverImage": "https://s3.amazonaws.com/bucket/shoutouts/cover-image-123.jpg",
"visibility": "profile-only",
"from": {
"_id": "6659ca9e5f2acb7abfdcd8fd",
"name": "John Doe",
"profilePicUrl": "https://linktoprofilepic.com/pic.jpg"
},
"to": {
"_id": "6659ca9e5f2acb7abfdcd8fd",
"name": "John Doe",
"profilePicUrl": "https://linktoprofilepic.com/pic.jpg"
},
"channels": [
{
"_id": "61e97c146cf2b4d8c68f3a40",
"name": "My Awesome Channel"
}
]
}
},
"tqConnectShoutout": {
"createdAt": "2024-11-04T13:05:43.799Z",
"updatedAt": "2024-11-04T13:05:43.799Z",
"_id": "507f1f77bcf86cd799439011",
"creator": "507f1f77bcf86cd799439012",
"description": "Outstanding performance on the Q3 project! Your innovative approach to solving the technical challenges and your dedication to helping the team meet deadlines was truly exceptional. Thank you for being such an inspiring colleague.",
"category": {
"id": "professional",
"name": "Professional Excellence",
"logo": "💼"
},
"coverImage": "https://s3.amazonaws.com/bucket/shoutouts/cover-image-123.jpg",
"visibility": "profile-only",
"from": {
"_id": "6659ca9e5f2acb7abfdcd8fd",
"name": "John Doe",
"profilePicUrl": "https://linktoprofilepic.com/pic.jpg"
},
"to": {
"_id": "6659ca9e5f2acb7abfdcd8fd",
"name": "John Doe",
"profilePicUrl": "https://linktoprofilepic.com/pic.jpg"
},
"channels": [
{
"_id": "61e97c146cf2b4d8c68f3a40",
"name": "My Awesome Channel"
}
]
}
},
"isLiked": true,
"votedOption": "string"
}
],
"totalPosts": 0,
"lastPostId": "string"
}{
"code": 400,
"type": "Bad Request",
"statusMessage": "BAD_REQUEST",
"success": false,
"message": "Invalid request",
"result": "Invalid request"
}{
"code": 401,
"type": "Unauthorized",
"statusMessage": "UNAUTHORIZED",
"message": "Invalid token",
"result": "Invalid token",
"success": false
}{
"code": 403,
"type": "Forbidden",
"statusMessage": "FORBIDDEN",
"errorCode": "CHANNEL_POST_ACCESS_FORBIDDEN",
"message": "A `userId` was provided, but that member has no active subscription or badge granting access to this channel (or the channel is hidden). Distinct from the 401 returned for an invalid/missing API key.",
"result": "A `userId` was provided, but that member has no active subscription or badge granting access to this channel (or the channel is hidden). Distinct from the 401 returned for an invalid/missing API key.",
"success": false
}{
"code": 404,
"type": "Not Found",
"statusMessage": "NOT_FOUND",
"errorCode": "CHANNEL_POST_CHANNEL_NOT_FOUND",
"message": "The channel does not exist, is archived, or the community feature is not active for this creator.",
"result": "The channel does not exist, is archived, or the community feature is not active for this creator.",
"success": false
}{
"code": 429,
"type": "Too Many Requests",
"statusMessage": "TOO_MANY_REQUESTS",
"message": "Request limit exceeded. try after 10 seconds",
"result": "Request limit exceeded. try after 10 seconds",
"success": false
}