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/discussionsAuthorization
| Header | Type | Required |
|---|---|---|
Authorization | Bearer asky_sk_… | required |
Path parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
brand_id | uuid | required | From List brands |
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | integer | optional | Rows per page, 1 to 100. Defaults to 20. |
cursor | string | optional | Opaque cursor from the previous response. Treat it as a token, never construct one. |
channel | string | optional | Filter to one channel. One of: reddit, linkedin. |
community | string | optional | Filter to one community or creator, without the r/ prefix. |
Request
cURL
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
200
{
"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
| Field | Type | Description |
|---|---|---|
data[].id | uuid | required |
data[].channel | string | required. One of reddit, linkedin |
data[].community | string | null | Subreddit name on Reddit, without the r/ prefix; the creator or company slug on LinkedIn |
data[].author | string | null | |
data[].title | string | null | |
data[].body | string | null | Full text, truncated at 10,000 characters |
data[].url | string | null | |
data[].score | integer | required. Upvotes on Reddit, reactions on LinkedIn — what “score” means depends on the channel |
data[].num_comments | integer | required |
data[].posted_at | timestamptz | null | When the post was made |
data[].last_checked_at | timestamptz | null | When Asky last re-read this thread’s live state. Not the same as posted_at |
data[].matched_competitors | string[] | required. Competitor names mentioned in this thread |
data[].media | object | null | null when the post has no attached media. { video_url, video_duration, video_thumbnail, image_urls, article } otherwise |
data[].media.video_url | string | null | |
data[].media.video_duration | number | null | Seconds |
data[].media.video_thumbnail | string | null | |
data[].media.image_urls | string[] | required |
data[].media.article | object | null | LinkedIn article-card preview: { url, title, domain, image } |
request_id | string | required. Also returned as the x-request-id header. Quote it when contacting support |
Errors
| Status | Code | When |
|---|---|---|
| 400 | invalid_request | A parameter is unknown or malformed. The message names it |
| 401 | invalid_token | The key is missing, malformed, or does not exist |
| 401 | token_expired | The key passed its expiry date |
| 401 | token_revoked | The key was revoked |
| 404 | not_found | The brand does not exist, or this key is not allowed to reach it. The two are deliberately indistinguishable |
| 429 | rate_limited | Over 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.