Skip to main content
GET
/
api
/
v2
/
mentions
/
{sourceId}
Get a mention
curl --request GET \
  --url https://app.octolens.com/api/v2/mentions/{sourceId} \
  --header 'Authorization: Bearer <token>'
{
  "id": 0,
  "sourceId": "reddit_t3_1abc234",
  "url": "https://reddit.com/r/example/comments/abc123/...",
  "title": "<string>",
  "body": "<string>",
  "source": "reddit",
  "timestamp": "2026-05-06 13:35:37.000",
  "author": "jane.doe",
  "authorName": "<string>",
  "authorAvatar": "<string>",
  "authorUrl": "<string>",
  "authorFollowers": 0,
  "relevance": "relevant",
  "relevanceComment": "<string>",
  "sentiment": "Neutral",
  "language": "en",
  "tags": [
    "competitor_mention",
    "pricing"
  ],
  "keywords": [
    {
      "id": 42,
      "keyword": "social listening"
    }
  ],
  "engaged": true,
  "relevanceScore": 123,
  "feedbackRelevant": 123,
  "imageUrl": "<string>",
  "keywordId": 123
}

Authorizations

Authorization
string
header
required

Clerk API key. Create one in Settings → API Keys. Pass as Authorization: Bearer <key>.

Path Parameters

sourceId
string
required

Response

200 response

A single mention collected from a social platform. Canonical shape shared by list_mentions (MCP), GET /api/v2/mentions (REST), and the tRPC feed.

id
integer
required

Internal post id (numeric). Pass as postId to PATCH /api/v2/mentions/{sourceId}.

Required range: -9007199254740991 <= x <= 9007199254740991
sourceId
string
required

Stable composite key for the mention across the collection pipeline (e.g. reddit_t3_1abc234). Use this as the path parameter for PATCH /api/v2/mentions/{sourceId} and as the sourceId field on POST /api/v2/feedback.

Example:

"reddit_t3_1abc234"

url
string
required

Canonical URL to the original post.

Example:

"https://reddit.com/r/example/comments/abc123/..."

title
string | null
required

Post title. null for platforms that don't have titles (tweets, etc.).

body
string | null
required

Post body / content. May be empty or null for posts with no text.

source
string
required

Platform the mention was collected from. Lowercase values like reddit, twitter, linkedin. Historical rows may be uppercase.

Example:

"reddit"

timestamp
string
required

When the mention was posted. Tinybird-style datetime string (YYYY-MM-DD HH:mm:ss.SSS, UTC, no Z suffix).

Example:

"2026-05-06 13:35:37.000"

author
string | null
required

Handle/username of the mention's author. null if not captured.

Example:

"jane.doe"

authorName
string | null
required

Display name of the author, when distinct from the handle.

authorAvatar
string | null
required

URL to the author's avatar image. null if not captured.

authorUrl
string | null
required

URL to the author's profile page. null if not captured.

authorFollowers
integer | null
required

Author's follower count at collection time. null if not available.

Required range: -9007199254740991 <= x <= 9007199254740991
relevance
enum<string>
required

Relevance classification. Always one of relevant / not_relevant (unscored posts collapse to not_relevant).

Available options:
relevant,
not_relevant
Example:

"relevant"

relevanceComment
string | null
required

Free-text justification the AI produced for its relevance verdict, when available.

sentiment
enum<string> | null
required

Sentiment classification. null until the AI has scored this mention.

Available options:
Positive,
Neutral,
Negative
Example:

"Neutral"

language
string | null
required

ISO 639-1 language code detected by the pipeline.

Example:

"en"

tags
enum<string>[]
required

AI-assigned topic tags applied to the mention.

AI-assigned topic tag. Applied by the relevance worker during scoring. A post can carry multiple tags.

Available options:
buy_intent,
competitor_mention,
customer_testimonial,
promotional_post,
own_brand_mention,
industry_insights,
hiring,
event,
product_question,
pricing,
churn_intent,
launch_announcement,
bug_report,
user_feedback,
ai_generated
Example:
["competitor_mention", "pricing"]
keywords
object[]
required

Monitored keywords this mention matched, with id + display text.

Example:
[{ "id": 42, "keyword": "social listening" }]
engaged
boolean
required

Whether a workspace member has marked this mention as engaged-with (replied, liked on-platform, etc.).

relevanceScore
number | null

Raw internal relevance score (0 = high, 1 = medium, 2 = low). The public relevance field is derived from this. Optional; not all consumers populate it.

feedbackRelevant
number

User feedback on this mention's relevance: 1 for thumbs up, -1 for thumbs down, 0 for no feedback. Optional.

imageUrl
string | null

URL to a preview image attached to the post, when present.

keywordId
number

Denormalized first-matched keyword id. Convenience for callers that need a single keyword reference without scanning keywords[].