Back to the notebook

Market Sentiment Index API: One Integration for Fear and Greed, Fed, and AI Sentiment

A market sentiment index API returns a composite score, the date it covers, the scale it sits on, and the history behind it. One integration then renders every index a provider publishes, including the ones that ship later.

SentiSense Team
SentiSense Team
August 9, 2026 · 4 min read

Every sentiment index tends to arrive in its own shape. A fear and greed gauge returns one payload, a rate-policy index another, a sector composite a third. Each one costs a bespoke parser, a bespoke chart, and a bespoke set of edge cases, and the work repeats the next time an index launches.

A market sentiment index API solves that by making the index itself the variable. It returns a composite score, the date that score covers, the scale it sits on, and the historical series behind it, in one envelope shared by every index. Write the renderer once and every current and future index works with it.

SentiSense publishes its indexes this way at /api/v1/indexes.

What is a sentiment index?

An index is a single number that means something, tracked over time. That is the distinction that matters when you are choosing what to integrate. The S&P 500, the VIX, and a fear and greed gauge are all indexes because you can quote one figure and it carries meaning on its own. Constituent charts and breakdowns exist to explain the number, not to replace it.

Indexes on SentiSense today cover market mood as a fear and greed composite, Federal Reserve sentiment across central bank leadership, and AI sentiment across AI-exposed names. The discovery endpoint is the source of truth for what is live, so a client that iterates it picks up new indexes without a code change.

How do you query a market sentiment index?

Start with discovery, then read whichever index you want:

curl -H "X-SentiSense-API-Key: $SENTISENSE_API_KEY" \
  https://app.sentisense.ai/api/v1/indexes

Each entry carries the slug, the scale, an access tier, and a pointer to the richest available view. Reading one index looks the same regardless of which you pick:

from sentisense import SentiSenseClient

client = SentiSenseClient(api_key)

for listed in client.list_indexes().indexes:
    snap = client.get_index(listed.indexId)
    print(listed.displayName, snap.value, snap.asOf, snap.scale)

The same loop in Node:

import SentiSense from "sentisense";

const client = new SentiSense({ apiKey });

const { indexes } = await client.indexes.list();
for (const listed of indexes) {
  const snap = await client.indexes.get(listed.indexId);
  console.log(listed.displayName, snap.value, snap.asOf, snap.scale);
}

Neither loop names a single index. That is the point: the catalog grows and the code does not change.

Basket indexes and composite indexes

Two archetypes share the envelope, and knowing the difference saves an afternoon of debugging.

A basket index weight-averages a curated set of tracked entities. It fills in the breakdown fields, so you can see which entities contributed, how heavily each was weighted, how fresh each reading was, and how many constituents actually reported that day. That last figure is worth checking before you quote a number, because a day where most constituents are carrying forward a stale reading is a thin day.

A composite index is built from signals rather than entities. Market mood blends social sentiment, market direction, risk appetite, momentum, and a broad-market trend. It has no constituent list, so those breakdown fields come back null. The null is the answer, not a gap, and it means "this index has no constituents by construction". Branch on it rather than treating it as missing data, and read the methodologyNote field, which states how each value was computed.

How do you chart an index over time?

One call per index, with a window you choose:

curl -H "X-SentiSense-API-Key: $SENTISENSE_API_KEY" \
  "https://app.sentisense.ai/api/v1/indexes/fed-sentiment/history?days=90"

Points come back oldest first as date and value pairs. Two behaviors to code against: spacing follows the index rather than the calendar, since a weekly index emits one point per week and a daily one emits one per day, and thin buckets are withheld rather than published. Plot against each point's date, and treat a missing date as absent rather than zero.

What can you build with it?

  • A fear and greed gauge on your own dashboard, with a regime label derived from the score
  • Rate-policy monitoring that tracks tone across central bank leadership week over week
  • A sector or theme overlay that puts an index line behind a price chart
  • Agent tooling that answers "how is the market feeling" with a sourced number and a date

The full field contract is in the Indexes API docs, and the Python and Node SDKs both ship the methods above. Every index is available on any tier: get an API key and the calls work as written.

Related reading