Research Runs

Research runs are NoodleSpy's core feature. You submit a topic, NoodleSpy discovers sources, reads and analyzes them, and returns structured findings with themes, quotes, and source attribution.

Research runs are async. You create a run, then poll for results.

Create a run

POST /runs

Costs 1–3 research credits depending on depth (quick = 1, standard = 2, deep = 3). Credits are only consumed when the run completes successfully — failed runs are refunded.

Request

{
  "topic": "user onboarding pain points in B2B SaaS",
  "research_type": "topic_research",
  "sources": ["reddit"],
  "options": {
    "depth": "standard",
    "time_range": "recent",
    "focus": "pain_points",
    "raw": false
  }
}
FieldTypeRequiredDescription
topicstringyesThe research topic
research_typestringnotopic_research (default)
sourcesstring[]noSource platforms: reddit
options.depthstringnoquick (1 credit), standard (2), deep (3). Default: standard
options.time_rangestringnorecent, year, any. Default: recent
options.focusstringnogeneral, pain_points, solutions, opinions. Default: general
options.rawbooleannoSkip synthesis, return raw source content. Default: false

Response (201 Created)

{
  "data": {
    "id": "run_abc123",
    "topic": "user onboarding pain points in B2B SaaS",
    "research_type": "topic_research",
    "sources": ["reddit"],
    "options": {
      "depth": "standard",
      "time_range": "recent",
      "focus": "pain_points"
    },
    "status": "queued",
    "created_at": "2026-03-18T10:30:00Z",
    "updated_at": "2026-03-18T10:30:00Z"
  }
}

Get a run

GET /runs/{id}

Poll this endpoint to check status and retrieve findings when complete.

Response (completed)

{
  "data": {
    "id": "run_abc123",
    "topic": "user onboarding pain points in B2B SaaS",
    "status": "completed",
    "findings": {
      "summary": "Users consistently report frustration with lengthy onboarding...",
      "themes": [
        {
          "name": "Too many onboarding steps",
          "description": "Users abandon flows with more than 5 steps",
          "sentiment": "negative",
          "frequency": 12,
          "quote_ids": ["q_1", "q_2"]
        }
      ],
      "quotes": [
        {
          "id": "q_1",
          "text": "The onboarding wizard has 14 steps and I gave up on step 3",
          "author": "frustrated_user",
          "source_url": "https://reddit.com/r/SaaS/...",
          "platform": "reddit",
          "community": "r/SaaS",
          "date": "2026-02-10",
          "themes": ["Too many onboarding steps"]
        }
      ],
      "sources": [
        {
          "url": "https://reddit.com/r/SaaS/...",
          "title": "Why do SaaS onboarding flows suck?",
          "platform": "reddit",
          "community": "r/SaaS",
          "relevance": 0.92
        }
      ],
      "metadata": {
        "mode": "synthesized",
        "sources_discovered": 24,
        "sources_analyzed": 8,
        "generated_at": "2026-03-18T10:38:00Z"
      }
    },
    "started_at": "2026-03-18T10:30:05Z",
    "completed_at": "2026-03-18T10:38:00Z"
  }
}

Run statuses

StatusMeaning
queuedRun is waiting to start
runningResearch is in progress
completedFindings are ready
failedSomething went wrong (check error field)

List runs

GET /runs

Returns a paginated list of your research runs.

ParameterTypeDescription
statusstringFilter by status: queued, running, completed, failed
limitintegerResults per page (default 20)
cursorstringPagination cursor from previous response

Response

{
  "data": [
    {
      "id": "run_abc123",
      "topic": "user onboarding pain points in B2B SaaS",
      "status": "completed",
      "created_at": "2026-03-18T10:30:00Z",
      "updated_at": "2026-03-18T10:38:00Z"
    }
  ],
  "next_cursor": "eyJ0..."
}

Findings structure

Themes

Themes are recurring patterns discovered across sources.

FieldTypeDescription
namestringShort theme name
descriptionstringExplanation of the theme
sentimentstringOverall sentiment (positive, negative, neutral, mixed)
frequencyintegerHow many sources mention this theme
quote_idsstring[]IDs of quotes supporting this theme

Quotes

Direct quotes from source material with full attribution.

FieldTypeDescription
idstringUnique quote ID
textstringThe quoted text
authorstringAuthor username
source_urlstringURL of the source
platformstringPlatform (e.g., reddit)
communitystringCommunity (e.g., r/SaaS)
datestringDate of the post
contextstringSurrounding context
themesstring[]Themes this quote relates to

Sources

Pages that were discovered and analyzed.

FieldTypeDescription
urlstringSource URL
titlestringPage title
platformstringPlatform
communitystringCommunity
relevancenumberRelevance score (0–1)

Raw content (when raw: true)

When you set options.raw to true, findings include raw_content instead of synthesized themes:

{
  "raw_content": [
    {
      "source_url": "https://reddit.com/r/SaaS/...",
      "title": "Why do SaaS onboarding flows suck?",
      "platform": "reddit",
      "community": "r/SaaS",
      "author": "startup_founder",
      "date": "2026-02-10",
      "body": "I've been evaluating 20 different SaaS products...",
      "comments": [
        {
          "author": "frustrated_user",
          "text": "The onboarding wizard has 14 steps...",
          "score": 142,
          "date": "2026-02-10"
        }
      ]
    }
  ]
}