API Documentation
Integrate Unveila's predictive intelligence into your quantitative models, internal dashboards, and automated workflows.
Authentication
All requests require an API key sent via the Authorization header. Create keys in Settings → API Keys.
GET /v1/predictions HTTP/1.1
Host: api.unveila.io
Authorization: Bearer uvla_live_YOUR_API_KEYSecurity: Never send keys as query parameters. Never commit to version control. Keys prefixed with uvla_ are detected by GitHub secret scanning.
Rate Limits
Free (All Users)
Response Headers
X-RateLimit-Limit-Day
X-RateLimit-Remaining-Day
X-RateLimit-Limit-Minute
X-RateLimit-Remaining-Minute
X-RateLimit-Reset
Scopes
Keys can be restricted to specific resources. Unauthorized requests return 403.
predictionsPredictions, performance, compare
entitiesEntity detail and timeline
signalsSignal data via entities
searchEntity search
macroMacro environment
cryptoCrypto tokens and protocols
data_feedBulk data feed export
Endpoints
/v1/predictionspredictionsList active predictions with filtering, ranking, pagination
Params: use_case, severity, direction, confidence_min, sort_by, page, limit
/v1/predictions/{id}predictionsFull prediction detail with evidence chains, signals, calibration
/v1/entities/{id}entitiesEntity detail with predictions, features, relationships, timeline
/v1/entities/{id}/timelineentitiesChronological timeline of events, signals, predictions
Params: page, limit
/v1/searchsearchFuzzy entity search across equity and crypto
Params: q, limit
/v1/macromacroCurrent macro environment indicators (yield curve, credit stress, CRE, consumer)
/v1/comparepredictionsCompare 2-5 entities side by side
Params: ids (comma-separated)
/v1/crypto/tokenscryptoList crypto tokens/protocols with risk scores and TVL
Params: sort_by, page, limit
/v1/crypto/tokens/{id}cryptoCrypto token detail with signals, features, relationships
/v1/performancepredictionsHistorical accuracy metrics, calibration, Called It highlights
/v1/proof/latestpublicLatest Merkle root commitment — on-chain verified prediction set
/v1/proof/verify/{prediction_id}publicMerkle proof for a specific prediction — cryptographic verification
/v1/proof/historypublicHistorical Merkle root commitments
Params: limit
Response Format
{
"predictions": [
{
"prediction_id": "8dff8c26-...",
"entity_name": "ORACLE CORP",
"ticker": "ORCL",
"prediction_type": "layoff_imminent",
"score": 0.859,
"confidence": 0.50,
"severity": "high",
"direction": "negative",
"time_horizon": "14d",
"trust_label": "moderate_signal",
"signal_count": 2,
"entity_type": "company",
"is_public": true
}
],
"total": 223,
"page": 1,
"has_more": true
}Quick Start
Python
import httpx
API_KEY = "uvla_live_YOUR_KEY_HERE"
BASE = "https://api.unveila.io"
headers = {"Authorization": f"Bearer {API_KEY}"}
# List high-risk predictions
resp = httpx.get(f"{BASE}/v1/predictions?sort_by=rank&limit=10", headers=headers)
for p in resp.json()["predictions"]:
print(f'{p["ticker"]:>6} | {p["score"]:.2f} | {p["severity"]:>6} | {p["prediction_type"]}')cURL
# List predictions sorted by risk
curl https://api.unveila.io/v1/predictions?sort_by=rank&limit=5 \
-H "Authorization: Bearer uvla_live_YOUR_KEY_HERE"
# Search entities
curl "https://api.unveila.io/v1/search?q=oracle&limit=5" \
-H "Authorization: Bearer uvla_live_YOUR_KEY_HERE"On-Chain Prediction Proof
Every prediction set is committed daily as a Merkle root. Verify any prediction was made before its outcome was known. The /v1/proof/* endpoints are public — no API key required.
# Get latest Merkle root
curl https://api.unveila.io/v1/proof/latest
# Verify a specific prediction
curl https://api.unveila.io/v1/proof/verify/8dff8c26-...{
"merkle_root": "9a35156bf3efc713...",
"prediction_count": 704,
"as_of_timestamp": "2026-04-05T11:21:16Z",
"chain": "base",
"tx_hash": null
}Key Management Features
Scoped Access
Restrict keys to specific resource types. A key for your alpha model only needs the 'predictions' scope.
IP Allowlisting
Lock keys to CIDR ranges. Requests from non-allowed IPs are rejected with 403.
Zero-Downtime Rotation
Rotate keys with a grace period (1-168 hours). Both old and new keys work during transition.
Usage Monitoring
Track daily/minute usage and per-endpoint breakdown via the usage endpoint.
Error Codes
200Success401Invalid, revoked, or expired API key403Insufficient scope, IP not allowed, or plan limit404Resource not found429Rate limit exceeded — check Retry-After header500Internal server errorAPI data is subject to the same disclaimers as the web platform. Predictions are not investment advice. See our disclaimer and terms of service.