CitationBenchTalk to Sales
API referenceResearch

Research · Discuss API — Mine Reddit & Forums for Buyer Pain Points and Verbatim Quotes

Crawl Reddit and discussion forums to surface ranked pain points, verbatim buyer quotes, and source-cited insights — structured outputs your content tools can reference for authenticity.

Mine Reddit and other discussion forums for the pain points your buyers are actually voicing. The agent crawls threads, scores them for signal quality, and surfaces structured pain points + verbatim quotes that downstream content tools can cite.

Conceptual overview

A discussion-research run takes a topic, subreddit list, or seed URL and returns:

  • Ranked pain points (scored by signal quality, recency, repetition)
  • Verbatim quotes (preserved phrasing — useful for content authenticity)
  • Source URLs (every claim cites back to the thread it came from)
  • Perspective tags (asker, expert, vendor, complainer)

Findings persist as RedditThreadCache records and can be queried later. The bootstrap_brand skill runs this automatically; you can also fire it standalone.

Endpoints

MethodPathPurpose
POST/v1/research/discussRun a discussion-research job
GET/v1/research/discussList discussions
GET/v1/research/discuss/{id}Get one thread
GET/v1/research/discuss/pain-pointsQuery the pain-point library

POST /v1/research/discuss

POST /v1/research/discuss HTTP/1.1
Authorization: Bearer sk_live_***
X-Workspace-Id: ws_acme

{
  "topic":        "engineering team capacity tracking",
  "subreddits":   ["r/projectmanagement", "r/engineeringmanagers", "r/cscareerquestions"],
  "dateRange":    { "from": "2025-11-01", "to": "2026-05-24" },
  "signalThreshold": 0.6,
  "maxThreads":   30,
  "perspectives": ["asker", "complainer"]
}
FieldTypeRequiredDefaultNotes
topicstringyes (one of)Free-form topic
seedUrlsstring[]yes (one of)Specific URLs to dig into
subredditsstring[]noworkspace ICPs' channelsIf absent, inferred from ICPs
dateRange.from / dateRange.toISO datenolast 180 days
signalThresholdnumberno0.5Drop low-signal threads
maxThreadsnumberno20Cap total threads ingested
perspectivesenum[]noallFilter by speaker role

Response (final result)

{
  "invocationId": "inv_***",
  "agentId": "agt_***",
  "skill": "research.discuss",
  "status": "SUCCEEDED",
  "creditsUsed": 9,
  "result": {
    "threadsConsidered": 184,
    "threadsIngested": 24,
    "painPoints": [
      {
        "id": "pain_***",
        "topic": "Cross-team capacity tracking is invisible until it's too late",
        "signalScore": 0.91,
        "verbatimQuotes": [
          "We didn't know we were 30% over until the sprint review",
          "I've started keeping my own spreadsheet because the tool doesn't show capacity"
        ],
        "sources": [
          "https://reddit.com/r/projectmanagement/comments/abc123/...",
          "https://reddit.com/r/engineeringmanagers/comments/xyz789/..."
        ],
        "perspective": "complainer"
      },
      {
        "id": "pain_***",
        "topic": "Estimating velocity for distributed teams across time zones",
        "signalScore": 0.84,
        "verbatimQuotes": ["..."],
        "sources": ["..."],
        "perspective": "asker"
      }
    ],
    "threads": [
      {
        "id": "thd_***",
        "url": "https://reddit.com/r/projectmanagement/comments/abc",
        "subreddit": "r/projectmanagement",
        "title": "Best way to track capacity in a 12-person engineering team?",
        "score": 127,
        "comments": 48,
        "createdAt": "2026-04-12T...",
        "perspective": "asker",
        "summary": "Eng manager asking for tooling recommendations ..."
      }
    ]
  },
  "raw": "Crawled 3 subreddits over 6 months, 184 threads. Filtered to 24 high-signal. Dominant theme: capacity invisibility ...",
  "files": ["agent-workspace/threads.md", "agent-output/pain-points.json"]
}

GET /v1/research/discuss

curl -G .../v1/research/discuss \
  --data-urlencode "topic=capacity tracking" \
  --data-urlencode "perspective=complainer" \
  --data-urlencode "since=2026-04-01T00:00:00Z"
ParamNotes
topicSubstring match
subredditFilter
perspectiveenum
minSignalScore floor
since / untilISO dates

GET /v1/research/discuss/{id}

curl https://api.citationbench.com/v1/research/discuss/thd_***

Returns the full thread + extracted quotes + parent invocation metadata.


GET /v1/research/discuss/pain-points

A first-class query over the pain-point library across all your discussion research.

curl -G .../v1/research/discuss/pain-points \
  --data-urlencode "minSignal=0.7" \
  --data-urlencode "topicContains=capacity"
{
  "data": [
    {
      "id": "pain_***",
      "topic": "...",
      "signalScore": 0.91,
      "lastSeenAt": "..."
    }
  ],
  "total": 47
}

Useful for content planning: "give me the top 20 pain points this quarter, sort by signal."


MCP

> Research discussions about engineering team capacity tracking on Reddit.

Claude calls research.discuss.research.

> Top pain points this month — signal above 0.7.

Claude calls research.discuss.pain_points.list.


Errors

StatusCodeCause
400validation_errorNeed either topic or seedUrls
503reddit_unavailableReddit rate limited or down

Cost

ActionCredits
POST /v1/research/discuss~10 per topic (varies by maxThreads)
GETsfree

Use cases (string things together)

A. Drive content briefs from pain points

# 1. Research discussions
INV=$(curl -sf -X POST .../v1/research/discuss -d '{
  "topic": "engineering team capacity tracking"
}' | jq -r '.invocationId')

# 2. Once complete, pull top pain points
# 3. Create blog post briefs from them
PAIN_TOPICS=$(curl -sf .../v1/research/discuss/pain-points --data-urlencode "minSignal=0.7" \
  | jq -r '.data[].topic' | head -5)

# 4. One blog post per top pain
echo "$PAIN_TOPICS" | while read TOPIC; do
  curl -X POST .../v1/produce/blog-post -d "{
    \"topic\": \"$TOPIC\",
    \"mode\":  \"with-research\"
  }"
done

B. Authentic content with citations

The produce.blog_post and produce.refine skills can read research.discuss.pain_points and weave verbatim quotes into the content (with citations back to the original thread).

C. Cron daily pain-point monitoring

curl -X POST .../v1/agent/invoke -d '{
  "skill": "agent.scheduled",
  "input": {
    "action":   "research.discuss.research",
    "schedule": "daily:07:00",
    "config": {
      "topic": "{{ workspace.brand.primaryKeyword }}",
      "dateRange": { "from": "{{ today-1 }}", "to": "{{ today }}" }
    }
  }
}'

Surfaces new pain points each morning.

On this page