Quick start
Make a request in seconds.
Every endpoint is a public GET request. For example, fetch the latest published BTC observation or request an inclusive range of daily observations:
curl -fsS https://api.derivasys.com/api/v1/data/BTC/latest
curl -fsS 'https://api.derivasys.com/api/v1/data/BTC/observations?start=2026-10-01&end=2026-10-15&limit=7'The range endpoint returns dates in ascending order. When hasMore is true, send nextCursor as cursor on the next request and keep the same asset, start, and end. The cursor is exclusive, so the next page continues after the last date already returned.
from urllib.error import HTTPError, URLError
from urllib.parse import urlencode
from urllib.request import urlopen
import json
BASE = "https://api.derivasys.com/api/v1/data"
def get_json(url):
try:
with urlopen(url, timeout=20) as response:
return json.load(response)
except (HTTPError, URLError) as exc:
raise RuntimeError(f"Data API request failed: {exc}") from exc
params = {"start": "2026-10-01", "end": "2026-10-15", "limit": 7}
cursor = None
observations = []
while True:
query = dict(params)
if cursor is not None:
query["cursor"] = cursor
page = get_json(f"{BASE}/BTC/observations?{urlencode(query)}")
observations.extend(page["observations"])
if not page["hasMore"]:
break
cursor = page["nextCursor"]
print(f"Received {len(observations)} observations")Reference
Choose a catalog, date, or observation endpoint.
Lists supported assets and each dataset's source report, observation count, earliest and latest dates, and limits.
Lists all dates with a published observation for that asset, in ascending order.
Returns the latest published observation. It does not represent the current market.
Returns the published observation for one YYYY-MM-DD report date.
Pages through observations in an inclusive start/end date range. Optional limit and cursor control pagination.
Use the base URL https://api.derivasys.com/api/v1/data. Asset names are case-insensitive. Supported assets are BTC, ETH, SOL, XRP, HYPE, AVAX and TRX. The OpenAPI schema is available at https://api.derivasys.com/openapi.json.
Ranges and pagination
Bound requests and follow the cursor.
- start and end are inclusive UTC calendar dates in YYYY-MM-DD format; the maximum span is 366 calendar days.
- limit is the maximum observations per page, from 1 to 31. The default is 31.
- A page can contain fewer observations than its limit because only published dates are returned. Missing publication dates are not filled in.
- When hasMore is true, pass nextCursor as cursor and retain the original asset, start, and end values.
- Responses are capped at 8 MiB. A request that exceeds the cap can return 422 response_too_large; reduce limit or narrow the requested range.
A range response includes schemaVersion, asset, start, end, limit, cursor, totalAvailable, returnedCount, hasMore, nextCursor, dates, and observations.
Reading the data
Keep report dates, timestamps, and unavailable values distinct.
An observation identifies schemaVersion, asset, reportDate, timestamps, comparison status and note, tenor metrics, optional realised volatility, and provenance. currentSnapshotAt, previousSnapshotAt, and generatedAt are UTC timestamps; reportDate is the report's calendar date. Snapshot time and report date describe different things, and the API does not promise one exact publication time each day.
Each tenor includes targetExpiry, availability and unavailableReason. Its atmIv, rr25 and bf25 objects contain current, previous, change and percentChange.
ATMIV and realised volatility are annualised percentages: 34.11 means 34.11%. RR25, BF25, and their absolute changes are volatility points.
Unavailable measurements remain null with an availability state and reason where provided. Do not interpret a missing value as zero.
percentChange is a relative percentage change. It is not an absolute volatility-point change.
The provenance object includes sourceReport and sourceReportHref, plus source and convention metadata, so values can be traced to their research artifact.
These endpoints expose daily published research snapshots. Use the live dashboard or live API products for current market state; this archive does not provide raw historical ticks.
Operations and terms
Handle errors and cite the source artifact.
The asset is unknown or there is no published observation for the requested date.
A date, range, limit, or cursor is invalid, or the response exceeds the 8 MiB cap. Correct the request or reduce its size.
Upstream verification or capacity is temporarily unavailable. Retry with backoff.
Successful responses use Cache-Control: public, max-age=60 and ETags. Send If-None-Match to validate a cached response; an unchanged representation may return 304.
The public API has no account or API key requirement. Research data is provided under the Derivasys Research Artifact License: https://www.derivasys.com/research-artifact-license/v1. Review the license and preserve the report provenance when using or redistributing results.