ReviewSignal

Developer Portal

JWT-authenticated API access for consumer sentiment, monitored-chain intelligence, signal data, and export delivery. The docs surface is public; Developer Program is the API-first paid plan for teams that need webhook delivery, integration support, and a larger monthly API envelope.

View API Plans Swagger ReDoc OpenAPI JSON Python SDK API Changelog
The console below loads the live docs routes directly under /developers/, so the portal and the machine-readable schema stay aligned.
Live Docs Console
Swagger for request testing, ReDoc for reference reading, and the raw schema for generators and SDK tooling.

Route Family

The public portal points at the canonical live docs aliases exposed by the API runtime.

  • /api/docs for interactive Swagger UI
  • /api/redoc for structured reference docs
  • /api/openapi.json for machine-readable schema output
  • /api/auth/login to mint the JWT used across protected routes
OpenAPI JSON
Base URL
https://reviewsignal.ai/api

Authentication

ReviewSignal exposes two live auth paths depending on the route family you are integrating:

JWT Session Routes
Authorization: Bearer YOUR_JWT_TOKEN

Use JWT for dashboard-session routes such as /api/dashboard/*, /api/billing/*, and account inventory screens. Mint it via POST /api/auth/login and renew with POST /api/auth/refresh.

Machine-to-Machine Routes
X-API-Key: rs_your_live_api_key
# or equivalently
Authorization: Bearer rs_your_live_api_key

Use API keys for direct integration routes under /api/v1/*. Either X-API-Key or Authorization: Bearer <key> is accepted (the Bearer form is convenient for SDKs that only expose an Authorization header). Create and revoke keys from Billing > API Access; the raw key is shown only once. Enterprise keys return rate_limit_remaining: -1 on /api/v1/account, signalling an unmetered quota instead of a finite remaining count.

Quick Start
Use JWT for interactive dashboard data or an API key for direct machine-to-machine calls.
Python
import requests

# 1. Login to get JWT token
auth = requests.post("https://reviewsignal.ai/api/auth/login", json={
    "email": "you@company.com",
    "password": "your_password"
})
token = auth.json()["token"]
headers = {"Authorization": f"Bearer {token}"}

# 2. Get trading signals
signals = requests.get(
    "https://reviewsignal.ai/api/dashboard/signals",
    headers=headers
).json()

for s in signals["signals"][:5]:
    print(f"{s['chain']:20} {s['signal']:6} confidence={s['confidence']:.0%}")

# 3. Get sentiment overview
overview = requests.get(
    "https://reviewsignal.ai/api/dashboard/overview",
    headers=headers
).json()
print(f"Tracking {overview['total_locations']} locations, {overview['total_reviews']} reviews")
Python (API Key)
import requests

headers = {"X-API-Key": "rs_your_live_api_key"}

# Check account scope and remaining quota
account = requests.get(
    "https://reviewsignal.ai/api/v1/account",
    headers=headers
).json()
print(account["tier"], account["rate_limit_remaining"])

# Request one machine-to-machine signal
signal = requests.post(
    "https://reviewsignal.ai/api/v1/signal",
    headers=headers,
    json={"brand": "Starbucks"}
).json()
print(signal["signal"], signal["confidence"])
cURL
# Login
curl -X POST https://reviewsignal.ai/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email":"you@company.com","password":"your_password"}'

# Get trading signals (replace TOKEN)
curl https://reviewsignal.ai/api/dashboard/signals \
  -H "Authorization: Bearer TOKEN"

# Machine-to-machine account check (replace API key)
curl https://reviewsignal.ai/api/v1/account \
  -H "X-API-Key: rs_your_live_api_key"

# Same call, Bearer alias (accepted for /api/v1/*)
curl https://reviewsignal.ai/api/v1/account \
  -H "Authorization: Bearer rs_your_live_api_key"
Python SDK
A minimal source-distributed SDK now lives in sdk/python/ for desks that want one authenticated client instead of hand-rolling request wrappers.
Install From Source
pip install -e ./sdk/python
Python SDK Example
from reviewsignal import ReviewSignalClient

client = ReviewSignalClient()
client.login("you@company.com", "your_password")

overview = client.dashboard_overview(category="Coffee")
signals = client.dashboard_signals(signal_type="BUY", per_page=10)
subscription = client.billing_subscription()

print(overview["total_reviews"], signals["total"], subscription["tier"])

Covered Methods

The first SDK cut intentionally stays narrow and maps directly to live self-serve routes instead of inventing abstractions that the API does not expose.

  • login(), refresh_token(), me()
  • dashboard_overview(), dashboard_signals()
  • billing_subscription()
  • list_api_keys(), create_api_key(), revoke_api_key()
  • v1_account(), v1_signal() for API-key flows
API Endpoints
Key endpoints organized by category. See Swagger docs for the full list.
Authentication
POST/api/auth/login
Authenticate with email/password, returns JWT token.
POST/api/auth/refresh
Refresh an expiring JWT token.
GET/api/auth/me
Get current user profile, tier, and API usage.
Trading Signals
GET/api/dashboard/signals
BUY/HOLD/SELL signals with confidence scores for all tracked chains.
Requires: Signal tier+
GET/api/dashboard/movers
Top sentiment movers — biggest positive and negative shifts.
Requires: Signal tier+
GET/api/dashboard/forecast
Heuristic two-week trend extrapolation with confidence bands.
Requires: Professional tier+
GET/api/dashboard/anomalies
Statistical anomaly scan for review volume and sentiment dislocation.
Requires: Professional tier+
Machine-to-Machine API
POST/api/v1/signal
Single-brand signal endpoint authenticated by X-API-Key.
Requires: Any active API key
POST/api/v1/sentiment
Multi-brand sentiment response for direct integration workflows.
Requires: Any active API key
POST/api/v1/intelligence
Unified multi-engine intelligence payload for higher API tiers.
Requires: Starter tier+ API key
GET/api/v1/account
Returns tier, remaining quota, and enabled API features for the current key.
Requires: Any active API key
Sentiment Data
GET/api/dashboard/overview
Portfolio-level sentiment overview with tier-scoped KPIs.
Requires: Trial+
GET/api/dashboard/heatmap
Geographic sentiment heatmap data by city.
Requires: Signal tier+
GET/api/dashboard/globe
3D location globe payload with lat/lng and sentiment intensity.
Requires: Trial+
GET/api/dashboard/candlestick
OHLC-style sentiment candlestick chart data.
Requires: Starter tier+
Analysis Engines
GET/api/dashboard/echo-network
Echo Engine — sentiment propagation between chains and locations.
Requires: Professional tier+
GET/api/dashboard/competitors
Competitive radar chart — compare chains across dimensions.
Requires: Starter tier+
GET/api/v1/backtest/summary
Backtest summary for sentiment vs. stock-price directionality.
Requires: Professional tier+
GET/api/dashboard/higgs
Higgs phase analysis — market regime detection.
Requires: Enterprise
GET/api/dashboard/timeline
Predictive timeline that fuses current desk state into a forward operator view.
Requires: Professional tier+
Alerts & Account
POST/api/alerts/rules
Create alert rules for sentiment drops, anomalies, or volume spikes.
Requires: Trial+ (limits by tier)
GET/api/billing/subscription
Current subscription tier, usage, and renewal date.
Rate Limits & Tier Access
API access depends on your subscription tier. Public docs stay open to everyone; Developer Program is the first tier optimized for API-first deployment, webhook delivery, and integration support.
FeatureTrialSignal (€299)Starter (€999)Developer Program (€1,500)Professional (€2,500)Enterprise (€5,000)
API calls / day100 total1,0005,00015,00025,000Custom (high-volume)
Chains in scope510303079 monitored79 monitored + highest-access surfaces
Trading signals
Public docs + quick start
Webhook delivery
Forecast + anomaly scan
Competitive analysis
Echo Network visualization
Backtest track record
SSO / SAML
Alert rules25101025Custom
Response Format
All endpoints return JSON. Example trading signal response:
JSON Response — /api/dashboard/signals
{
  "signals": [
    {
      "chain_name": "Starbucks",
      "signal_type": "BUY",
      "confidence": 0.82,
      "severity": "HIGH",
      "sentiment_current": 0.64,
      "sentiment_delta_7d": 0.08,
      "review_count_7d": 247,
      "created_at": "2026-04-03T08:05:00+00:00",
      "category": "Coffee",
      "sparkline_30d": [0.21, 0.24, 0.28]
    }
  ],
  "total": 1,
  "page": 1,
  "per_page": 25,
  "total_pages": 1
}
API Changelog
Integration-facing changes are now tracked in the repository root CHANGELOG.md so the developer surface, SDK examples, and runtime contract changes have one review path.

What belongs in the changelog

  • New SDK methods or removed compatibility shims
  • Auth or billing contract changes that affect integrations
  • Route additions, removals, and schema-shape updates
  • Operational notes that change how developers should consume the API

Current source of truth: CHANGELOG.md in the repo root, alongside sdk/python/ and the live OpenAPI schema.

Error Handling
Standard HTTP status codes with JSON error details.
CodeMeaningAction
401UnauthorizedJWT missing/expired or API key invalid. Re-login or rotate the key from Billing.
403ForbiddenYour tier doesn't include this feature. Upgrade at /dashboard/billing.html
429Rate LimitedToo many requests. Wait and retry with exponential backoff.
500Server ErrorContact team@reviewsignal.ai with the request details.
Need Help?

Technical support is available for authentication, delivery, and integration questions.