Developer Portal

Build on the signal layer

Endpoints

GET/v1/sentiment/{ticker}
GET/v1/consensus/{ticker}
GET/v1/themes/{ticker}
GET/v1/universe
WS/v1/stream

Authentication

auth.sh
curl https://api.pulsesignals.ai/v1/sentiment/NVDA \
  -H "Authorization: Bearer rgp_live_..." \
  -H "Accept: application/json"

Jupyter notebook template

backtest.ipynb
# backtest.ipynb — AI sentiment signal vs. forward returns
import pandas as pd
from pulse_signals import Client

client = Client(api_key="rgp_live_...")

# Pull 6 months of sentiment + price
df = client.sentiment("NVDA", period="6m").to_frame()

# Simple signal: long when sentiment > 60, flat otherwise
df["signal"] = (df["sentiment"] > 60).astype(int)
df["fwd_ret"] = df["price"].pct_change().shift(-1)
df["strategy"] = df["signal"] * df["fwd_ret"]

equity = (1 + df["strategy"].fillna(0)).cumprod()
print("Total return:", round((equity.iloc[-1] - 1) * 100, 1), "%")

Try it now

Signal Explorer

AI Sentiment vs. Price
AI Sentiment
61
7d Trend
-2
Price Return
+24.9%
Correlation
0.48
2026-05-262026-06-152026-07-052026-07-262026-08-152026-09-040255075100$200$220$240$260$280
AI Sentiment Score NVDA PriceSimulated · 48h delayed

Usage this month

API calls3,120 / 10,000
Tickers used142 / 500
Trial days left68 / 90

Rate limits

  • Requests / min60
  • Burst120
  • Data delay48h
  • History6 months

Need real-time + full history?

Professional and Enterprise tiers remove the delay and unlock WebSocket streaming.

View pricing →