Running Strategy Lab Research Presets Programmatically

8 Multi-Agent Analyst Chains, One API Call to Start — Async Polling, Cancellation, and a Response-Shape Quirk Worth Knowing

COMPLETE GUIDE

Building with the API? Open the developer docs

Finmagine API & MCP — free tier to test • Pro/Max for full access • REST + MCP

Open the Docs →
← API & Agent Integration Hub ← All Feature Guides
Published: July 29, 2026  |  9 min read  |  Developer Guide  |  API & Agent Integration Series

Multimedia Learning Hub

Master Research Presets through a complete learning overview and interactive flashcards

What You Will Master

Strategy Lab's Research Presets are Finmagine's other major LLM-powered system — genuinely separate from the Investment Committee, built for a different job: one preset, one goal, one consolidated report from a sequential multi-agent analyst chain, rather than a multi-lens verdict on a shortlist of nominated stocks. This guide covers running them entirely through the API, with the real request/response shapes from the actual handler code, not simplified pseudocode.

What This Guide Covers:

  1. What a Research Preset Actually Is — and how it differs from the Investment Committee
  2. The 5 Operations — catalog, start, poll, list, cancel
  3. The 8 Real Presets — 4 India + 4 US mirror pairs, with real runtime and agent counts
  4. Starting a Run — required params, and why provider is never auto-resolved
  5. Polling: DB Cache vs. Live Swarm Call
  6. A Response-Shape Quirk Worth Knowing — how errors surface differently here than elsewhere in the API
  7. Cancelling a Run and Reviewing History

Who This Is For:

  • Developers who've already saved a BYO LLM key — this is the first thing that key is actually for, alongside the Investment Committee
  • Agent builders wanting deep, sequential multi-agent analysis rather than a fast multi-lens verdict on named stocks
  • Anyone who tried the Research Preset Deep Dive recipe in the Workflow Explorer and wants the full API-level detail behind it

Test Your Knowledge

Click any card to reveal the answer. Use the search box to find a specific topic.

What a Research Preset Actually Is

A Research Preset runs one of Strategy Lab's pre-built multi-agent analyst chains against a goal you give it — a sequential pipeline where each agent's output feeds the next, consolidating into one final report. It's genuinely a separate system from the Investment Committee, not a smaller version of it.

Research PresetInvestment Committee
StructureOne preset, one goal, one reportMulti-lens analysis across a shortlist of nominated stocks
Agent flowSequential chain (e.g. macro → sector → stock → report)Parallel multi-lens scan, then chairman synthesis, risk audit, position sizing
InputA free-text goal (what you want investigated)A shortlist of stock symbols
TierAPI ProAPI Max (for the flagship screen-based recipe)
Quota10 runs / 24h, shared with web usage5 runs / 24h, shared with web usage
Both require the same prerequisite: a saved BYO LLM provider key. See BYO LLM Key Management via API if you haven't saved one yet — neither system auto-resolves a provider from nothing.

The 5 Operations

OperationRESTMCP toolTier
CatalogGET /presets/cataloglist_preset_catalogFree
StartPOST /presets/startstart_presetAPI Pro
PollGET /presets/pollcheck_preset_statusAPI Pro
List historyGET /presets/listlist_preset_runsAPI Pro
CancelPOST /presets/cancelcancel_presetAPI Pro
Catalog is deliberately free-tier accessible. You can discover all 8 presets, their descriptions, runtimes, and agent counts before ever needing API Pro — useful for deciding which preset fits your use case, or building a picker UI, without spending anything.
THE CATALOG

The 8 Real Presets

Exactly 4 India presets and 4 mirrored US presets — same analytical structure, different market context.

🇮🇳 India

Preset IDLabelDescriptionRuntimeAgents
equity_research_teamEquity Research TeamMacro → sector → stock selection three-tier analysis, consolidated into a full research report~35 min4
fundamental_research_teamFundamental ResearchDeep fundamental analysis: business quality, financials, valuation assessment~20 min3
quant_strategy_deskQuant Strategy DeskFactor design → strategy validation → risk audit; produces a factor blueprint with historical expectations to verify~40 min4
technical_analysis_panelTechnical Analysis PanelTrend, momentum, and support/resistance analysis in a three-agent sequence~15 min3

🇺🇸 US

Preset IDLabelDescriptionRuntimeAgents
us_equity_research_teamUS Equity Research TeamFed + macro → S&P 500 sectors → stock selection → research brief~35 min4
us_fundamental_research_teamUS Fundamental ResearchBusiness moats, GAAP financials, FCF quality, and valuation framework for US stocks~20 min3
us_quant_strategy_deskUS Quant Strategy DeskFactor design (momentum/value/quality/growth) → historical expectations → risk audit for US equity strategies~40 min4
us_technical_analysis_panelUS Technical Analysis PanelS&P 500/Nasdaq structure, VIX, breadth, sector ETF signals, and momentum analysis~15 min3
The market field you pass to start_preset does NOT determine India vs. US. It's a free-text display label only (defaulting to "NSE India") and has no effect on behavior. The actual differentiator is the preset id itself — the us_ prefix is what determines which data context gets injected. Passing us_quant_strategy_desk with market: "NSE India" would still run the US analysis; the market field wouldn't override it.
STEP 1

Starting a Run

POST /api/v1/presets/start { "preset": "fundamental_research_team", "goal": "Assess whether HDFC Bank's asset quality trend supports" "a fresh long position at current valuations", "provider": "anthropic" }
FieldRequired?Notes
presetYesMust be one of the 8 valid ids — checked locally against a whitelist before the request ever reaches the analyst swarm, so an invalid id returns a clear 400 instead of failing silently deep inside a swarm call
goalNo, but strongly recommendedWhat you want this run to investigate — max 500 characters
providerYes — no auto-resolveMust be an already-saved BYO provider. Call list_byo_keys first if you're not sure which one you have
marketNoFree-text display label only — does not affect behavior (see warning above)
There is no fallback provider. Unlike some LLM-powered platforms that quietly fall back to a house default, start_preset hard-requires an explicit provider you've already saved a key for. Omitting it, or naming a provider you haven't saved a key for, fails the call rather than silently picking one for you.

A successful start returns immediately with a run identifier and status: "running" — the actual multi-agent chain runs asynchronously on Finmagine's Strategy Lab swarm, not inline within this HTTP request.

Quota: 10 runs per 24 hours per account, shared with web usage. A run you start via the API counts the same as one started from the Strategy Lab page itself — they draw from one shared daily allowance, not two separate pools.
STEP 2

Polling: DB Cache vs. Live Swarm Call

GET /api/v1/presets/poll?vibe_run_id=abc123...

This one endpoint behaves in two genuinely different ways depending on the run's current state:

Run stateWhere the response comes from
Terminal — completed, failed, cancelledA DB cache — fast, no live call to the swarm
Non-terminal — runningA live call to the Strategy Lab swarm VPS, ~10 second timeout
This is why polling a finished run stays cheap even if you check it many times. Once a run reaches a terminal state, every subsequent poll is served from the cached DB row — you can safely poll a completed run's final report repeatedly (e.g. to re-display it in different parts of your app) without triggering a fresh live call each time.

While running, the response includes task_count and done_count from the live swarm call — genuine progress, not a synthetic estimate — letting you show something more useful than a generic spinner. Once terminal, the full final_report field is present.

A Response-Shape Quirk Worth Knowing

Most of Finmagine's API returns errors with a top-level error: true boolean. The Research Preset endpoints (start and poll) don't follow that exact pattern — they wrap the underlying Strategy Lab proxy's own error shape instead:

// A Research Preset error — note there's no top-level "error" key { "data": { "error": "vibe_run_id not found" }, "meta": { "tier": "api_pro", "requests_remaining_today": 847 } }
Check the HTTP status code, not a top-level "error" boolean, when calling these two endpoints. The correct HTTP status (400/422/429/503) is still set correctly on the response — that's the reliable signal to branch your error handling on. This shape exists because these two handlers reuse the underlying Strategy Lab web proxy's logic verbatim (rather than duplicating actively-evolving business logic in a second copy that could drift), and that proxy's own error shape is what surfaces through, unmodified.

This is a genuinely useful implementation detail to know before you write error-handling code for these two specific endpoints — it will save you a confused debugging session if your code assumes every Finmagine endpoint's errors look identical.

Cancelling a Run and Reviewing History

Cancel

POST /api/v1/presets/cancel { "vibe_run_id": "abc123..." }

Sets the run's status to cancelled — or, if the run had already reached a terminal state before your cancel request arrived, returns that existing status instead rather than pretending to cancel something already finished.

List your run history

GET /api/v1/presets/list

list_preset_runs returns your account's most recent 20 runs, any status, newest first — useful for building a dashboard of past research without needing to track every vibe_run_id yourself client-side.

What's Next

With Research Presets covered, the next guide covers the other major LLM-powered system built on the same BYO-key foundation:

See the API & Agent Integration hub for the full 12-guide roadmap.

Ready to Analyse Indian Stocks Like a Pro?

Finmagine gives you 30+ computed financial ratios, sector benchmarks, FII/DII flows, the Finmagine Score, and AI-powered analysis — all in one place.

Analyse a Stock → Create Free Account
← API & Agent Integration Hub ← All Feature Guides