Metrics
Time-series metrics API powering the Blink dashboard graphs
Returns the same time-series data that backs the graphs on your dashboard. One bucketed series per metric, over a date range, for a single chain.
GET https://portal.blinklabs.xyz/api/metricsRequests are authenticated with a bearer token:
Authorization: Bearer blink_...The token determines whose data is returned — you always receive your own metrics, and an originator query parameter is ignored.
Query parameters
type
Yes*
A single metric name. Returns a bare array.
types
Yes*
Comma-separated metric names. Returns an object keyed by metric name.
from
Yes
Start of the range, ISO 8601 (e.g. 2026-08-01T00:00:00Z). Inclusive.
to
Yes
End of the range, ISO 8601. Inclusive.
chain
Yes
ethereum, base, bsc, arbitrum, robinhood or solana. Case-insensitive.
period
No
Bucket size: hour or day. Defaults to day.
*Supply exactly one of type or types. If both are present, types wins and type is ignored.
Prefer types whenever you need more than one metric — the batch form resolves every metric in a single database round trip, whereas repeated type calls run one query each.
Two things to watch when building the query string:
chainfalls back toethereumif the value isn't recognised, rather than returning an error. A typo produces plausible-looking Ethereum data.periodonly meaningfully supportshourandday. Other values are passed through to bucketing but the response series is still generated at hourly granularity, so the buckets will not line up.
Metrics
mev_recoveries
Native (ETH / BNB / SOL)
Your share, after your recovery percentage is applied
gas_recoveries
Native
Your share, after your gas recovery percentage is applied
transaction_count
Count
Transactions in the bucket
revert_percentage
Percent, 0–100
Reverted transactions ÷ total transactions
latency
Seconds, 4 dp
Mean, weighted by transaction count
priority_fee
Gwei
Mean, weighted by transaction count. Ethereum only
exclusive_count
Count
Transactions eligible for gas recovery — shown as Gas Recoverable on the dashboard. Ethereum only
swap_volume_usd
USD, 2 dp
Swap volume
sponsored_swap_volume_usd
USD, 2 dp
Swap volume on gas-sponsored transactions
sponsored_transaction_count
Count
Gas-sponsored transactions
sponsor_cost
Native or USD
Sponsorship cost. Derived from sponsored volume for billed originators; native spend for self-sponsoring originators
Note that exclusive_count is the figure shown as Gas Recoverable on the dashboard — the metric name and the label differ.
Requesting an Ethereum-only metric on another chain is not an error. With type you get an empty array; with types you get a fully-formed series of zeros.
An unrecognised metric name is likewise not an error — type returns [], and types returns a zero-filled series for that name. Check your spelling against the table above; a typo is silent.
Response
Every response is a series of { timestamp, value } points:
timestampis ISO 8601 UTC (2026-08-01T00:00:00.000Z), aligned to the start of the bucket.The series is gap-filled: every bucket in the range is present. A bucket with no underlying data has
value: 0.Buckets in the future have
value: null.
So the length of the array is determined entirely by from, to and period — not by how much data exists.
Single metric
Multiple metrics
Errors
400
{ "error": "Missing required parameter ..." }
type/types, from, to or chain absent
400
{ "error": "Invalid date format" }
from or to not parseable
401
{ "error": "No originator found" }
Missing, malformed, revoked or expired token
500
{ "error": "Failed to fetch data" }
Server-side failure
Last updated