Developer access
Pull Valueverse-calculated multipliers, metric history, and curated Valueverse charts into local research scripts, dashboards, and research workflows.
Base URL
app.valueverse.ai
All current API routes live under /api/v1.
Auth
Public / API key
Computed product routes are public. Token research bundles require an API key.
Research bundle
Token mechanics
Use an API key when you need the research structure behind a token.
Start with product routes: screener rows, metric history, and chart data.
curl "https://app.valueverse.ai/api/v1/screener?sort=-annualizedRevenue"
curl "https://app.valueverse.ai/api/v1/tokens/aero/metrics/history?stream=fees_bribes_rebase&metrics=erm30d,effectiveMarketCap&limit=30"
curl "https://app.valueverse.ai/api/v1/tokens/aero/charts/public_goods_buyback"Public routes do not need a key. Send a Bearer token only for API-key routes.
curl https://app.valueverse.ai/api/v1/tokens/aave/full \
-H "Authorization: Bearer $VALUEVERSE_API_KEY"Header
Authorization: Bearer ...
Send this only to Valueverse API routes that require an API key.
Key safety
Server or local script
Do not expose API keys in public browser code or client bundles.
Public product endpoints expose computed multipliers, metric history, and curated charts. API-key routes expose deeper token research structure.
/api/v1/metricsPublicProduct metric catalog: Valueverse-calculated slugs, units, and kinds for the screener, snapshots, history, and charts.
/api/v1/tokensPublicCoverage catalog showing which tokens have screener rows, snapshots, metric history, charts, trends, and backtests.
/api/v1/tokens/{slug}PublicSingle-token computed snapshot: multiplier row, revenue streams, section availability, combined revenue, and fundamentals.
/api/v1/screenerPublicMain Valueverse multiplier table. Sort by effective market cap, ratio, revenue, or multiplier window.
/api/v1/tokens/{slug}/metrics/historyPublicHistorical Valueverse metrics for a token: holder FCF, effective market cap, and P/FCF windows. Defaults to aggregate stream when present; stream=all returns all streams. limit returns the latest matching rows in chronological order.
/api/v1/tokens/{slug}/chartsPublicCurated Valueverse chart catalog for a token, including title, section, freshness, row count, and data endpoint.
/api/v1/tokens/{slug}/charts/{chartKey}PublicOne chart dataset with renderer metadata, rows, gaps, and freshness status.
/api/v1/tokens/{slug}/fullAPI keyToken mechanics and research bundle: token summary, value drivers, driver graph edges, token functions, formulas, descriptions, and methodology context.
Keep keys out of browsers. Run these from a backend or local script.
const res = await fetch(
"https://app.valueverse.ai/api/v1/tokens/aero/metrics/history?metrics=erm30d,effectiveMarketCap&limit=30",
);
if (!res.ok) throw new Error(`Valueverse API failed: ${res.status}`);
const payload = await res.json();import os
import requests
res = requests.get(
"https://app.valueverse.ai/api/v1/screener",
params={"sort": "-annualizedRevenue"},
timeout=20,
)
res.raise_for_status()
payload = res.json()Every route returns a { data, meta } envelope. Computed scalar numbers are MetricValue objects; table/chart row cells use columns[] for units.
Envelope
{ data, meta }
Single resources and lists share the same shape. meta carries servedAt, asOf, and count.
MetricValue
{ metric, value, unit, kind, asOf, freshness, status, source }
If value is null, status and reason explain missing, stale, unsupported, or not computed data. source is a Valueverse surface tag, not provider metadata.
Rate limits
X-RateLimit-Remaining
Successful responses include the remaining request budget; 429 responses include Retry-After.
Stable IDs
id / parentId / edge IDs
Mechanics bundle IDs are for joining objects inside the response graph.
// GET /api/v1/tokens/aero -> 200
// Abridged: repeated MetricValue fields and empty sections omitted for readability.
{
"data": {
"token": { "slug": "aero", "displayName": "Aerodrome Finance", "symbol": "AERO" },
"row": {
"effectiveMarketCap": {
"metric": "effectiveMarketCap",
"value": 178007620.48,
"unit": "USD",
"kind": "gauge",
"asOf": "2026-06-11T20:13:34.404Z",
"freshness": "fresh",
"status": "ok",
"source": { "type": "valueverse", "surface": "token_snapshot" }
},
"annualizedRevenue": { "metric": "annualizedRevenue", "value": 69668958.21, "unit": "USD", "kind": "rate", "asOf": "2026-06-11T20:13:34.404Z", "freshness": "fresh", "status": "ok" },
"multiples": {
"30d": { "metric": "multiple.30d", "value": 3.96, "unit": "x", "kind": "ratio", "asOf": "2026-06-11T20:13:34.404Z", "freshness": "fresh", "status": "ok" },
"365d": { "metric": "multiple.365d", "value": 2.62, "unit": "x", "kind": "ratio", "asOf": "2026-06-11T20:13:34.404Z", "freshness": "fresh", "status": "ok" }
}
},
"combinedRevenue": {
"annualized": { "metric": "combinedRevenue.annualized", "value": 69668958.21, "unit": "USD", "kind": "rate", "freshness": "fresh", "status": "ok" }
},
"fundamentals": {
"fdvToRevenue": { "metric": "fundamentals.fdvToRevenue", "value": 9.58, "unit": "x", "kind": "ratio", "freshness": "fresh", "status": "ok" }
},
"streams": [
{
"key": "fees_bribes_rebase",
"label": "Fees, bribes, and rebase emissions",
"mixPercentLabel": "95%",
"annualizedRevenue": { "metric": "stream.annualizedRevenue", "value": 66173836.61, "unit": "USD", "kind": "rate", "freshness": "fresh", "status": "ok" }
}
],
"sections": { "charts": "ok", "fundamentals": "ok", "streams": "ok" },
"freshness": { "generatedAt": "2026-06-11T20:13:34.404Z", "status": "ok", "warnings": [] }
},
"meta": { "servedAt": "2026-06-29T12:00:00Z", "asOf": "2026-06-11T20:13:34.404Z" }
}GET /api/v1/metrics{ data: MetricCatalogEntry[], meta }data[].slugdata[].unitdata[].kinddata[].groupmeta.countPublic product metric slugs. Read this first so agents can map slugs to units and kinds.
GET /api/v1/tokens{ data: TokenCoverageItem[], meta }slugdisplayNamesymbolimageUrlcoverage.{screener,snapshot,metricHistory,trend,charts,backtests}freshnessCoverage catalog for Valueverse datasets. Use it to decide which token routes are available.
GET /api/v1/tokens/{slug}{ data: TokenSnapshot, meta }tokenrowsectionscombinedRevenuefundamentalsstreamsfreshnessCurrent computed data for one token. Mechanics and research fields live in the token mechanics bundle.
GET /api/v1/screener{ data: ScreenerRow[], meta }tokeneffectiveMarketCapeffectiveRatioannualizedRevenuemultiplesrevenuesstreamsfreshnessOne row per token with the same computed multiplier data used by the main product table.
GET /api/v1/tokens/{slug}/metrics/history{ data: MetricHistory, meta }tokenintervalstreamcolumnsrowsfreshnessHistorical holder FCF, P/FCF, and effective market cap data. Row cells are numeric; columns[] is the unit/kind contract for those table cells.
GET /api/v1/tokens/{slug}/charts/{chartKey}{ data: ChartData, meta }titlesectionxycolumnsrowssourcefreshnessCurated Valueverse chart data with public provenance and freshness metadata.
GET /api/v1/tokens/{slug}/full{ data: { summary, valueDrivers[], valueDriverEdges[], tokenFunctions[] }, meta }summaryvalueDrivers[].{id,type,description,formula}valueDriverEdges[].{fromValueDriverId,toValueDriverId}tokenFunctions[].{id,type,description,parentId}Authenticated token research structure. IDs are stable linking identifiers inside this payload; they are not provider IDs.
Errors follow RFC 9457 application/problem+json with { type, title, status, detail, code } and route-specific extensions.
invalid_metricOne or more requested metric keys are not supported.
invalid_limitlimit is outside the supported range.
invalid_date / invalid_date_rangeDate filters are malformed or from is after to.
stream_not_foundRequested stream key is not available for that token.
unauthorizedMissing or invalid Bearer API key for an API-key route.
no_credits_for_tokenRequested token is not enabled for this key.
missing_scopeKey lacks the required `tokens:read` / `tokens:read:<slug>` scope (extension: `scope`).
token_not_foundToken slug does not exist.
chart_not_foundRequested chart key is not available for that token.
rate_limitedThe API key or public IP exceeded the current rate limit.
engine_data_unavailableA product dataset is advertised but temporarily unavailable.
internal_errorServer error. Response includes a request id for support.