Research runs are NoodleSpy's core feature. You submit a topic, NoodleSpy discovers sources, reads and analyzes them, and returns structured findings.
Research is async — you create a run, then poll for results.
curl -X POST https://api.noodlespy.com/runs \
-H "Authorization: Bearer nspy_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"topic": "user onboarding pain points in B2B SaaS"
}'
Response:
{
"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": "general"
},
"status": "queued",
"created_at": "2026-03-18T10:30:00Z",
"updated_at": "2026-03-18T10:30:00Z"
}
}
Save the id — you'll need it to check on your run.
Research typically takes 1–15 minutes depending on depth. Poll with GET /runs/{id}:
curl https://api.noodlespy.com/runs/run_abc123 \
-H "Authorization: Bearer nspy_your_key_here"
While running, status will be "queued" or "running". When done, it changes to "completed".
A completed run includes structured findings:
{
"data": {
"id": "run_abc123",
"status": "completed",
"findings": {
"summary": "Users consistently report frustration with...",
"themes": [
{
"name": "Too many onboarding steps",
"description": "Users abandon onboarding flows with more than 5 steps",
"sentiment": "negative",
"frequency": 12
}
],
"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"
}
],
"sources": [
{
"url": "https://reddit.com/r/SaaS/...",
"title": "Why do SaaS onboarding flows suck?",
"platform": "reddit",
"community": "r/SaaS",
"relevance": 0.92
}
],
"metadata": {
"sources_discovered": 24,
"sources_analyzed": 8,
"mode": "synthesized"
}
}
}
}
Use options to control depth, time range, and focus:
{
"topic": "user onboarding pain points in B2B SaaS",
"options": {
"depth": "deep",
"time_range": "year",
"focus": "pain_points"
}
}
| Option | Values | Default |
|---|---|---|
depth | quick (1 credit), standard (2), deep (3) | standard |
time_range | recent, year, any | recent |
focus | general, pain_points, solutions, opinions | general |
raw | true / false — skip synthesis, return raw content | false |