ReviewSignal

Developer Portal

JWT-authenticated technical reference for consumer sentiment, monitored-chain intelligence, signal data, and export delivery. The current public paid offer is file-first: Early Access, Monthly Data License, and Weekly Data License. API access is not included by default and must be separately provisioned in writing.

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/* only when ReviewSignal separately provisions API access in writing. Either X-API-Key or Authorization: Bearer <key> is accepted. The current self-serve data-license tiers are delivered as data-room files by default, not API plans.

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 review-sentiment 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 review-sentiment 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.
Review-Sentiment Signals
GET/api/dashboard/signals
Directional review-sentiment labels with confidence scores for plan-scoped 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: separate written API provisioning
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
The current paid product is file-first. Public docs stay open for technical review; API access is not included in Early Access, Monthly Data License, or Weekly Data License unless separately provisioned in writing.
FeatureEarly Access (€49)Monthly Data License (€750)Weekly Data License (€1,500)Separate API provisioning
API calls / dayWritten limit only
Chains in scope5 selected chainsManifest-scopedManifest-scopedWritten scope only
Review-sentiment labelsAs agreed
Public docs + quick start
Webhook deliveryWritten scope only
Forecast + anomaly scanWritten scope only
Backtest track recordWritten scope only
Alert rulesWritten scope only
Response Format
All endpoints return JSON. Example review-sentiment 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.