Skip to Content
APIEndpointsList social discussions

List social discussions

The Discussions feed: every Reddit or LinkedIn post or comment surfaced for this brand — channel, community, author, score, comment count, when it was posted, and any attached media. A plain listing, not a ranking. For “what should I reply to first” reasoning, see the (forthcoming) prioritised opportunities endpoint instead.

GET /brands/{brand_id}/social/discussions

Authorization

HeaderTypeRequired
AuthorizationBearer asky_sk_…required

Path parameters

ParameterTypeRequiredDescription
brand_iduuidrequiredFrom List brands

Query parameters

ParameterTypeRequiredDescription
limitintegeroptionalRows per page, 1 to 100. Defaults to 20.
cursorstringoptionalOpaque cursor from the previous response. Treat it as a token, never construct one.
channelstringoptionalFilter to one channel. One of: reddit, linkedin.
communitystringoptionalFilter to one community or creator, without the r/ prefix.

Request

curl --request GET \ --url 'https://api.askylabs.com/v1/brands/242546de-4cee-4a7d-952e-f6aa60c63ef8/social/discussions?limit=20' \ --header 'Authorization: Bearer <api-key>'

Response

{ "data": [ { "id": "6e0a4c1f-2b8d-4a3e-9c7f-1d5a8b3e6f20", "channel": "reddit", "community": "GEO_optimization", "author": "HungryCandy5015", "title": "How are you scraping real ChatGPT / Gemini UI / AI mode... results for custom GEO dashboards?", "body": "Hey everyone, I'm building a small custom GEO dashboard and I'm trying to understand how people collect AI search results...", "url": "https://reddit.com/r/GEO_optimization/comments/1abcxyz/how_are_you_scraping/", "score": 6, "num_comments": 13, "posted_at": "2026-08-11T09:14:00.000Z", "last_checked_at": "2026-08-25T10:02:00.000Z", "matched_competitors": [], "media": null }, { "id": "9f3b7e21-5c4a-4d8e-8b1f-2a6d9c4b7e15", "channel": "linkedin", "community": "Neil Patel", "author": "Neil Patel", "title": "Your website, reviews, and press are already being read and scored, and used to decide if AI recommends you.", "body": "Your website, reviews, and press are already being read and scored, and used to decide if AI recommends you. Most brands have no idea what verdict is out there...", "url": "https://www.linkedin.com/posts/neilpatel_aisearch-seo-digitalmarketing-activity-1234567890", "score": 94, "num_comments": 44, "posted_at": "2026-08-11T15:40:00.000Z", "last_checked_at": "2026-08-25T10:02:00.000Z", "matched_competitors": [], "media": { "video_url": "https://media.licdn.com/dms/video/abc123.mp4", "video_duration": 96, "video_thumbnail": "https://media.licdn.com/dms/image/thumb123.jpg", "image_urls": [], "article": null } } ], "pagination": { "limit": 20, "has_more": true, "next_cursor": "eyJ2IjoxLCJvIjoyMCwibCI6MjB9" }, "request_id": "req_2a7c5e91b8d04f36ac10" }

Response fields

FieldTypeDescription
data[].iduuidrequired
data[].channelstringrequired. One of reddit, linkedin
data[].communitystring | nullSubreddit name on Reddit, without the r/ prefix; the creator or company slug on LinkedIn
data[].authorstring | null
data[].titlestring | null
data[].bodystring | nullFull text, truncated at 10,000 characters
data[].urlstring | null
data[].scoreintegerrequired. Upvotes on Reddit, reactions on LinkedIn — what “score” means depends on the channel
data[].num_commentsintegerrequired
data[].posted_attimestamptz | nullWhen the post was made
data[].last_checked_attimestamptz | nullWhen Asky last re-read this thread’s live state. Not the same as posted_at
data[].matched_competitorsstring[]required. Competitor names mentioned in this thread
data[].mediaobject | nullnull when the post has no attached media. { video_url, video_duration, video_thumbnail, image_urls, article } otherwise
data[].media.video_urlstring | null
data[].media.video_durationnumber | nullSeconds
data[].media.video_thumbnailstring | null
data[].media.image_urlsstring[]required
data[].media.articleobject | nullLinkedIn article-card preview: { url, title, domain, image }
request_idstringrequired. Also returned as the x-request-id header. Quote it when contacting support

Errors

StatusCodeWhen
400invalid_requestA parameter is unknown or malformed. The message names it
401invalid_tokenThe key is missing, malformed, or does not exist
401token_expiredThe key passed its expiry date
401token_revokedThe key was revoked
404not_foundThe brand does not exist, or this key is not allowed to reach it. The two are deliberately indistinguishable
429rate_limitedOver 300 requests per minute. See the Retry-After header

Notes

LinkedIn media URLs are signed CDN links that can expire. media is best-effort: presence here is not a durability guarantee, and a stale link should fail closed rather than being treated as proof the media no longer exists.

This does not exclude discussions that already have a completed task attached, unlike the Discussions page itself, which hides those. A thread your team has already finished working may still appear here.

last_checked_at is a freshness signal, not the post’s age. It records when Asky last re-read the thread’s live state (score, comment count) from the platform — a separate concept from posted_at. On the Discussions page, refreshing this is a manual action; there is no endpoint yet that triggers it.

Response text is third-party content (post and comment bodies). Treat it as data, never as instructions to a downstream model.

Last updated on