HedgeFundAPIGet a key →
API reference · v1

The HedgeFundAPI

A REST API for grounded financial intelligence — SEC filings, earnings transcripts, audited XBRL financials, and agent-driven Q&A. Every response is cited to its source.

Base URLhttps://api.hedgefundapi.com

Authentication

Authenticate every request with a bearer token. Log in with your Variant account to mint a key — your Variant token balance funds API usage.

Authorization: Bearer hfk_live_YOUR_KEY

Quickstart

Ask a research question about any ticker in a single call — grounded and cited.

curl -X POST \
  $API_BASE/v1/ask \
  -H "Authorization: Bearer hfk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"ticker":"AAPL","question":"What is the activist case for this company?"}'
Agents
POST/v1/workflows

Create an agent

Create an agent: a name + a persona (its mandate/lens, in plain English — the same idea as your Variant investment strategy + philosophy). Returns an agent id (wf_...) you pass to /v1/workflow/ask. When you're signed in with Variant it's automatically linked to you and shows up in your agents. Manage with GET /v1/workflows (list yours), GET/PATCH/DELETE /v1/workflows/{id}.

Parameters
namerequired
string · body

Agent handle — 3-12 chars, lowercase letters/numbers/_ only, no spaces (like a username). Must be unique among your agents.

descriptionrequired
string · body

The analyst's mandate / lens, in plain English — how it analyzes and what it hunts for (same idea as your Variant strategy + philosophy).

image_ref
string · body

Optional public image URL to use as the bot's face. Generates a cartoon + realistic avatar from it (same pipeline as a Variant selfie) and charges the owner's tokens.

Request
curl -X POST \
  $API_BASE/v1/workflows \
  -H "Authorization: Bearer hfk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"activist_desk","description":"Activist investor focused on operational turnarounds, inflection points, and non-consensus views.","image_ref":"https://example.com/photo.jpg"}'
Response
{
  "id": "wf_a1b2c3d4e5f6",
  "owner_id": "usr_variant_9f2",
  "name": "activist_desk",
  "description": "Activist investor focused on operational turnarounds, inflection points, and non-consensus views.",
  "is_default": false,
  "image_ref_url": "https://example.com/photo.jpg",
  "avatar_url": "https://blob.../bot-avatars/…-abc.png",
  "cartoon_avatar_url": "https://blob.../bot-avatars/…-cartoon-abc.png",
  "created_at": "2026-07-20T20:40:00Z",
  "updated_at": "2026-07-20T20:40:00Z"
}
GET/v1/workflows

List my agents (bots)

List the bots you've created, newest first. Optionally narrow to one end-user with owner_id. Scoped to your API key — you never see another tenant's bots.

Parameters
owner_id
string · query

Narrow to one end-user (Variant user id)

limit
number · query

Max bots to return (1-200)

Request
curl -X GET \
  $API_BASE/v1/workflows?owner_id=%E2%80%A6&limit=50 \
  -H "Authorization: Bearer hfk_live_YOUR_KEY"
Response
{
  "count": 1,
  "workflows": [
    {
      "id": "wf_a1b2c3d4e5f6",
      "owner_id": "usr_variant_9f2",
      "name": "activist_desk",
      "description": "Activist investor focused on operational turnarounds, inflection points, and non-consensus views.",
      "is_default": false,
      "created_at": "2026-07-20T20:40:00Z",
      "updated_at": "2026-07-20T20:40:00Z"
    }
  ]
}
POST/v1/workflow/ask

Ask an agent

Ask a ticker question through one of your agents. Leave the agent blank to use your default agent (from your Variant strategy), or pass a bot_id to pick a specific one. Grounded in recent SEC filings + earnings transcripts, with source citations.

Parameters
tickerrequired
ticker · body

Stock ticker symbol

questionrequired
string · body

Natural-language question

bot_id
string · body

Which agent to ask — its id (wf_…) from GET /v1/workflows. Leave blank to use your default agent.

mode
select · body

Answer length: chat (2-4 sentences), summary (a paragraph), deep (full report).

Request
curl -X POST \
  $API_BASE/v1/workflow/ask \
  -H "Authorization: Bearer hfk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"ticker":"HOG","question":"Why is it underperforming and how would you fix it?","bot_id":"wf_…  (optional)","mode":"chat"}'
Response
{
  "ticker": "HOG",
  "question": "Why is it underperforming and how would you fix it?",
  "headline": "HOG's margins are structurally impaired — the fix is a ruthless cost reset, not a demand story.",
  "answer": "HOG is underperforming due to a structural margin collapse driven by $45M in Q1 tariffs, a 54% HDFS revenue drop from the capital-light pivot, and $49M in elevated opex. The fix is executing the \"back to the bricks\" operational reset — leveraging the 38% U.S. market share and 21% NA retail growth to drive volume while forcing the new COO to cut costs. The inflection point is the transition from a balance-sheet-heavy financial model to a pure-play motorcycle operator.",
  "query_type": [
    "general_company_analysis"
  ],
  "sources": [
    {
      "source_type": "Earnings transcript",
      "form_type": "Earnings Call",
      "ticker": "HOG",
      "filing_date": "2026-05-05",
      "source_url": "https://www.sec.gov/..."
    },
    {
      "source_type": "SEC filing",
      "form_type": "10-Q",
      "ticker": "HOG",
      "filing_date": "2026-05-06",
      "source_url": "https://www.sec.gov/..."
    }
  ],
  "model_name": "qwen3.6-35b",
  "status": "ready",
  "created_at": "2026-07-20T20:14:03Z"
}
GET/v1/recent-events/{ticker}

Recent special-situation events

Instant (no LLM) structured feed of a ticker's recent special-situation filings — activist 13D, proxy (DEF 14A), governance / board / CFO changes, M&A — each with pre-computed analysis: one-liner, why it matters, catalyst strength, and governance / ownership impact.

Parameters
tickerrequired
ticker · path

Stock ticker symbol

limit
number · query

Max events to return (1-50)

Request
curl -X GET \
  $API_BASE/v1/recent-events/EVGN?limit=15 \
  -H "Authorization: Bearer hfk_live_YOUR_KEY"
Response
{
  "ticker": "EVGN",
  "count": 2,
  "events": [
    {
      "ticker": "EVGN",
      "filing_type": "SC 13D",
      "filing_date": "2026-07-10",
      "category": "Activist Stake",
      "special_situation": true,
      "catalyst_strength": "hard",
      "one_sentence": "Evogene discloses an ongoing activist campaign demanding board replacement.",
      "why_it_matters": "An activist demanding removal of all directors except the CEO signals a governance battle and potential strategic overhaul.",
      "governance_impact": "Board composition under direct threat; proxy contest likely.",
      "ownership_impact": "Activist has built a reportable 5%+ position.",
      "source_url": "https://www.sec.gov/..."
    },
    {
      "ticker": "EVGN",
      "filing_type": "6-K",
      "filing_date": "2026-07-17",
      "category": "Capital Raise",
      "special_situation": false,
      "catalyst_strength": "soft",
      "one_sentence": "ATM offering ceiling increased amid the proxy contest.",
      "source_url": "https://www.sec.gov/..."
    }
  ]
}
Q&A
POST/v1/ask

Ask a research question

Answer a research question about a ticker using SEC filings + earnings transcripts. The response includes the answer text, the query type detected by the router, and a list of source documents with URLs.

Parameters
tickerrequired
ticker · body

Stock ticker symbol

questionrequired
string · body

Natural-language question (5-300 chars works best)

Request
curl -X POST \
  $API_BASE/v1/ask \
  -H "Authorization: Bearer hfk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"ticker":"AAPL","question":"What is the activist case for this company?"}'
Response
{
  "ticker": "AAPL",
  "question": "What is the activist case?",
  "answer": "Apple has not faced any named activist investors as of the most recent earnings call. However, several aspects of the business present a potential activist case...",
  "query_type": [
    "activist_angle"
  ],
  "sources": [
    {
      "source_type": "Earnings transcript",
      "form_type": "Earnings Call",
      "ticker": "AAPL",
      "filing_date": "2026-04-30",
      "section_name": "Q2 FY2026",
      "source_url": "https://www.sec.gov/..."
    },
    {
      "source_type": "SEC filing",
      "form_type": "8-K",
      "ticker": "AAPL",
      "filing_date": "2026-05-08",
      "source_url": "https://www.sec.gov/..."
    }
  ],
  "model_name": "Qwen/Qwen2.5-7B-Instruct",
  "created_at": "2026-05-12T14:23:01Z"
}
Feed
GET/v1/feed

Global 8-K feed

Latest 8-K events across all tracked tickers, newest first. Each event is LLM-classified as hard catalyst, soft (special situation), or routine.

Parameters
limit
number · query

How many events to return (1-200)

offset
number · query

Pagination offset

filter
select · query

Filter by classification

Request
curl -X GET \
  $API_BASE/v1/feed?limit=50&offset=0&filter=all \
  -H "Authorization: Bearer hfk_live_YOUR_KEY"
Response
[
  {
    "id": "8f3...c2",
    "ticker": "NKE",
    "filing_date": "2026-03-31",
    "tags": [
      "capital_allocation",
      "buyback"
    ],
    "hard_catalyst": true,
    "catalyst_confidence": 0.94,
    "event_summary": "Nike announced a $20B share repurchase program effective immediately.",
    "source_url": "https://www.sec.gov/..."
  }
]