Skip to main content
Check coverage, freshness, incidents, latency, status, and SLA for Hyperliquid and Lighter market data with the /v1/data-quality/* routes, before a historical pull, replay window, export, dashboard, alert, or model input depends on it. Each route returns its own resource body, such as StatusResponse, CoverageResponse, SymbolCoverageResponse, IncidentsResponse, LatencyResponse, or SlaResponse. By default the body’s fields sit at the top level next to success: true and meta.request_id, not inside data; send 0xArchive-Version: 2026-10-01 to receive the standard { success, data, meta } envelope (see API conventions). The Data-quality endpoint reference has each response body, and Data-quality operation schemas the JSON fields. /v1/status/coverage is a public coverage summary in the same OpenAPI contract. Use /v1/data-quality/* when a workflow needs the full data-quality bodies. Some data-quality routes keep the path or query parameter name exchange for API compatibility. Treat that value as the recognized venue-family key for the route. It is not a claim that every exchange is covered. The latency resource combines service timing and data freshness signals. Its websocket.current_ms value is the latest stored order-book freshness measurement, not client WebSocket round-trip time. Use the WebSocket ping/pong mechanism for a client-side observation, and do not treat it as a platform latency percentile.

Preflight sequence

1

Check status

Confirm the API and ingestion surfaces are healthy enough for the job.
2

Check coverage

Confirm venue, symbol, and data family history exists for the requested time range.
3

Check incidents

Look for interruptions that overlap the requested market and time window.
4

Run the market-data request

Store the quality result, the data pull request ID, and any request ID exposed by the quality response or client wrapper.

Example

Check current system state:
A status response (shape; the values are live):
status rolls up to operational, degraded, or outage. A degraded data type does not mean every route is unusable, so compare the state to your job’s tolerance. Check one symbol over the 24 hours that ended one hour ago:
from and to are Unix timestamps in milliseconds. Convert ISO windows before calling this coverage route from shell scripts, generated clients, or agent tools. Check recent incidents for one venue:

Response fields

The main body shapes, as returned without the version header: /v1/data-quality/status /v1/data-quality/coverage/{exchange}/{symbol}: exchange and symbol are path params; from and to are optional Unix-ms query bounds. Each gaps entry has start, end, and duration_minutes; cadence has median_interval_seconds, p95_interval_seconds, and sample_count. /v1/data-quality/sla: optional year and month query params.

What to store

Store the quality result with the downstream job output. At minimum, keep the route, request parameters, returned status or coverage fields, venue family, symbol or market set, gaps or incidents that changed the decision, and the time the check ran. Keep each response’s meta.request_id too, or the x-request-id response header.

Route fit

A job that depends on historical accuracy should usually call more than one route: coverage first, then incidents or latency depending on the downstream risk.

Make quality a pipeline input

Treat these responses as inputs to the job, not a separate monitoring view. If a window is stale or interrupted, narrow the request, delay, annotate the output, or stop; do not interpolate missing market data. A single raw request can stay simple, but anything that depends on historical accuracy should run a data-quality preflight first. Handle gaps covers what to do when a window is not safe.

Next step

To combine status, freshness, and coverage into one decision before a job runs, continue to Check one window before use.
Last modified on October 6, 2026